mcpField
C
codemcp

codemcp

github.com/ezyangコーディングエージェント1.6k44 週間前に更新

codemcp について

codemcp は、Claude Desktop からローカルの Git リポジトリのファイル編集やテスト実行を行えるコーディングアシスタントです。Claude Pro サブスクリプションを使う開発者を想定し、自動承認による編集、すべての変更の Git 管理、エディタに依存しない運用を特徴としています。作者は本プロジェクトが旧式になったとして、設計思想を新しいコーディングツールへ移植する予定を示しています。

主な機能

  1. 01ローカルリポジトリでのファイル編集と事前定義コマンドの実行
  2. 02LLM の変更ごとに Git コミットを作成
  3. 03codemcp.toml で宣言したコマンドのみを許可
  4. 04ファイル編集後に format コマンドを自動実行
  5. 05IDE に依存せず任意のエディタで変更を確認可能

活用シーン

  1. 01Claude に機能実装、バグ修正、リファクタリングを依頼
  2. 02Git 履歴を使ってエージェントの個別の変更を取り消す
  3. 03Tailscale 経由で遠隔マシン上の codemcp を利用

MCP 対応

codemcp は MCP サーバーとして動作し、http://127.0.0.1:8000/sse のような SSE エンドポイントを公開します。Claude Desktop やブラウザー拡張機能がこれに接続し、コーディング用ツールを利用します。

詳細

NOTICE:claude code は Anthropic の月額 20 ドルのサブスクリプションで利用できるため、codemcp は完全に時代遅れだと考えています。ただし、優れた設計上のアイデア(特に Git のバージョン管理方式)がいくつかあるので、いずれ現在の世代のエージェント型コーディング CLI に取り入れたいと思っています。

codemcp

codemcp をインストールして、Claude Desktop をペアプログラミングアシスタントにしましょう。これを使うと、コンピューター上のコードベースに機能を実装したり、バグを修正したり、リファクタリングしたりするよう Claude に直接依頼できます。Claude が直接ファイルを編集し、テストを実行します。Claude のチャットウィンドウにコードをコピーして貼り付ける作業とはお別れです!

codemcp を使用する Claude Desktop のスクリーンショット

codemcp は他の AI コーディングソフトウェア(Claude Code、Cursor、Cline、Aider)と同様の機能を提供しますが、設計上、独自の位置づけを占めています。

  1. Claude Pro(Anthropic の月額 20 ドルのサブスクリプション)での使用を想定しています。サブスクリプションプランで利用料金を支払うのが好みです。エージェントのアクションに追加費用が一切かからないためです。うまくいかない変更セットに 5 ドルも無駄にした、と後悔することはもうありません。

    Claude Max(月額 100 ドル)を利用している場合も、Claude Code をサブスクリプション料金で使える点にご注意ください。この場合、codemcp のメリットはやや不明確になり(いくつかの点では Claude Code より明らかに劣ります)、それでも、他の UI 上の設計判断を好む場合は Claude Max で codemcp を使えます。(また、codemcp はオープンソースなので、気に入らなければ変更できます。Claude Code とは違います!)

  2. デフォルトで自動承認する設計です。エージェントには、監督なしでできる限り作業を進めてほしいと思っています。そうすれば、最後にすべてをまとめて確認できます。codemcp が多くのコーディングエージェントと異なる点は、主に 2 つあります。制限のないシェルの使用は禁止し、エージェントが使用できるコマンドは codemcp.toml で事前に宣言する必要があります。また、LLM によるすべての編集を Git でバージョン管理するため、エージェントによる変更を細かく取り消せますし、変更のコミットを忘れる心配もありません。

  3. IDE に依存しません。Claude に変更を依頼すると、その変更が行われます。その後は、お気に入りの IDE 環境を使って変更を確認し、さらに編集できます。私は普段のエディターとして vim を使っているため、VSCode や特定のエディターが必須のコーディング環境は好みません。

重要:master ユーザー向け — トークン効率の大幅な変更

codemcp のトークン効率を改善するため、master では codemcp をマルチツール型に戻す変更を進めています(InitProject 時に指示がチャットへ大量に出力される単一ツール型ではなくなります)。そのため、ツールの使用を手動で承認する必要があります。ツール使用の承認は複数のチャットにわたって保持されるため、妥当なトレードオフだと考えています。ただし、本当に気に入らない場合は、自動承認によるツール使用に対応するブラウザー拡張機能について、refined-claude にバグを報告してください。

インストール

codemcp のインストールと利用には、次の方法をおすすめします。

  1. uv と git がまだインストールされていない場合は、インストールします。

  2. ブラウザに claude-mcp をインストールします。 これにより、Web サイトから直接 SSE 対応の MCP サーバーに接続できるようになります。 つまり、Claude Desktop を使う必要がなくなり、複数のチャットウィンドウを 並行して簡単に使えます。この拡張機能は、 Integrations の展開によって まもなく不要になると見込んでいます。ただし、執筆時点では、 Claude Pro の購読者向けにはまだ Integrations が提供されていません。

  3. uvx --from git+https://github.com/ezyang/codemcp@prod codemcp serve を実行して codemcp を起動します。 標準以外のポートで待ち受ける必要がある場合は、--port 1234 を追加できます。

    ヒント: 危険を承知で最新の状態を使いたい場合は、prod を main に変更できます。 特定のリリースに固定したい場合は、0.3.0 などに置き換えてください。

    ヒント: codemcp はリモートでも実行できます。 Tailscale を使っていて、Tailnet 上のすべてのデバイスを信頼できる場合は、 --host 100.101.102.103 を指定することで安全に実行できます(IP アドレスは お使いのノードの Tailscale IP アドレスに置き換えてください。この IP は通常 100.64.0.0/10 の範囲にあります)。警告: この MCP にアクセスできる人は誰でも、 お使いのコンピュータ上で任意のコードを実行できます。0.0.0.0 にバインドしたいケースは きわめて まれなはずです。

  4. claude-mcp に URL http://127.0.0.1:8000/sse を設定します(必要に応じてポートを置き換えてください)。

  5. 残念ながら、Web UI ではハンマーアイコンが一貫して表示されません。ただし、 コンソールに "[MCP codemcp] SSE connection opened" と表示されているか、 または Claude に利用可能なツールを尋ねる(codemcp のツールが利用可能と 答えるはずです)ことで、MCP サーバーが動作していることを確認できます。

Claude Desktop を使いたい場合や、特殊な要件がある場合は、さまざまな非標準的な状況でのインストール手順について INSTALL.md を参照してください。

使い方

まず、作業対象の Git リポジトリのチェックアウト内に codemcp.toml ファイルを 作成する必要があります。エージェントにフォーマッターやテストを実行させたい場合は、 commands セクションにそれらを実行するコマンドを追加します(注: これらのコマンドは、 必要な仮想環境を適切にセットアップするものである必要があります)。

format = ["./run_format.sh"]
test = ["./run_test.sh"]

format コマンドは特別で、ファイルを編集するたびに必ず実行されます。

次に、Claude Desktop でプロジェクトを作成し、プロジェクトの指示に次の内容を 記述することをおすすめします。

Initialize codemcp with $PROJECT_DIR

ここで $PROJECT_DIR は、作業対象のプロジェクトへのパスです。

その後、プロジェクトに加えたい変更について Claude とチャットします。 codemcp がコードに変更を加えるたびに、コミットが生成されます。

このツールを使ったサンプルのトランスクリプトは、次のリンクから確認できます。

codemcp はチャットごとに 1 つのコミットを生成し、機能の作業を進めながらそのコミットを修正(amend)していきます。

設計思想

  • レート制限に達したときは、その時間を別のことに使いましょう(Claude が書いた コードのレビュー、他の人のコードのレビュー、計画づくり、ミーティングなど)。

  • これは自律型のエージェントでは ありません。少なくともチャットのたびに、 変更内容をレビューして次の変更を依頼するという介入が必要です。1 回のチャットで 多くの作業をまとめて依頼することも できます が、おそらく Claude Desktop の 出力上限に達し、結局は手動でエージェントに「続けて」と指示することになります。 それを受け入れ、中断の機会を利用して、Claude が正しいことを行っているか 確認しましょう。

  • Claude が軌道を外れたときに失うのは、お金ではなく時間です。 それに応じて行動しましょう。時間がボトルネックなら、Claude の出力を 逐次注意深く見守ってください。

設定

codemcp.toml でサポートされているすべての設定オプションは次のとおりです。

project_prompt = """
Before beginning work on this feature, write a short haiku.  Do this only once.
"""

[commands]
format = ["./run_format.sh"]
test = ["./run_test.sh"]

project_prompt は、チャットでプロジェクトを初期化するときに読み込まれます。

commands セクションでは、特定のツール向けのコマンドを設定できます。コマンド名は LLM に伝えられ、LLM が実行するタイミングを判断します。ツールの使い方に関する指示は project_prompt に記述できます。また、ツールごとに個別の指示を与えられる、より詳細な構文もサポートしています。

[commands.test]
command = ["./run_test.sh"]
doc = "Accepts a pytest-style test selector as an argument to run a specific test."

トラブルシューティング

インスペクターを使ってサーバーを実行するには、次のコマンドを使用します。

PYTHONPATH=. mcp dev codemcp/__main__.py

ログは ~/.codemcp/codemcp.log に書き込まれます。ログレベルは、~/.codemcprc のグローバル設定ファイルで設定できます。

[logger]
verbosity = "INFO"  # Can be DEBUG, INFO, WARNING, ERROR, or CRITICAL

ログはプロジェクトごとには設定できませんが、Claude Desktop を複数のプロジェクトで並行して使うことはそもそも難しいため、あまり問題にはならないはずです。

コントリビュート

CONTRIBUTING.md を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。