Skip to content

feat(lsp): unity-mcp-serverから移行未完了のC#編集ツールをLSP経由で公開する #40

@akiojin

Description

@akiojin

1. 背景

  • MCP 108→CLI 101ツール移行でC#編集系5ツールがLSP移行前提で削除
  • C# LSPサーバー実装済みだがRust側ルーティング未完了

2. 旧MCPツールとLSPメソッドの対応

旧MCPツール LSPメソッド C#実装 Rust公開
rename_symbol unitycli/renameByNamePath
edit_structured replaceSymbolBody, insertBefore/AfterSymbol
remove_symbol unitycli/removeSymbol
edit_snippet unitycli/validateTextEdits + anchor 部分
create_class (なし — ローカルツールとして新規)

3. 未公開LSPメソッド詳細(6メソッド)

  • unitycli/renameByNamePath (relative, namePath, newName, apply) — リネーム
  • unitycli/replaceSymbolBody (relative, namePath, body, apply) — メソッド本体置換
  • unitycli/insertBeforeSymbol (relative, namePath, text, apply) — シンボル前挿入
  • unitycli/insertAfterSymbol (relative, namePath, text, apply) — シンボル後挿入
  • unitycli/removeSymbol (relative, namePath, apply, failOnReferences, removeEmptyFile) — 削除
  • unitycli/validateTextEdits (relative, newText) — バリデーション

4. create_class (新規ローカルツール)

ファイル作成 + refresh_assets + update_index をアトミックに実行。
C# LSPではなくRustローカルツールとして実装(ファイルシステム操作はRust側の責務)。

5. ブロッカー

src/lsp.rs:48maybe_execute() が4読み取りツールのみ通過させている。

6. 変更対象

  • src/lsp.rs: 書き込みハンドラ追加 + maybe_execute拡張
  • src/tool_catalog.rs: ツール名登録
  • src/local_tools.rs: create_class実装
  • .claude-plugin/plugins/unity-cli/skills/unity-csharp-edit/: スキル更新

7. 関連仕様

  • SPEC-e757a01f (US-3: 構造化編集, US-4: リネーム)
  • SPEC-4tyqsgzk (edit_snippet)
  • SPEC-4f7a596b (edit_structured)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions