Model Context Protocol (MCP): 生成AIと外部ツールを繋ぐためのプロトコル
2024/11/26に、AnthropicはModel Context Protocol(MCP)という新たなオープンソースプロジェクトを発表した。
これは、生成AIを活用する上で不可欠な「生成AIと外部のデータやツールを繋ぐ部分」を共通化し、再利用可能にするためのものだ。
概要
MCPは、JSON-RPCに基づいたプロトコルであり、AI本体側がクライアント、外部ツール側がサーバーになる。
2024/12現在、デスクトップ版ClaudeがMCPに対応している。
以下のように、OpenAPI、Slack、Git、BigQuery、Puppeteerなど、様々なサービスやソフトウェアへのバインディングが試験的に開発されている。
特にopenapi-mcp-serverはOpenAPI準拠のWebサービスなら何でも呼び出せるので、高いポテンシャルを感じる。mitmproxy2swaggerのようなリバースエンジニアリングツールと組み合わせても面白そうだ。
MCPサーバーは標準入出力を介して動作する。したがって現時点ではデスクトップアプリケーションでの利用に限定されるが、将来的にはHTTPをトランスポートとして使用できるようになると予想している。
実装例: サイコロを振る
ごくごく簡単な例として、LLMアプリ上でダイスを振れるようにしてみよう。簡単すぎるようにも見えるが、実はLLMは乱数生成が苦手なため、ある意味実用的かもしれない。
公式の@modelcontextprotocol/sdkを使えば、簡単に実装できる。
これをClaude Desktopで使うには、ClaudeのSettings -> Developer -> Edit Configから設定ファイルを開き(Macの場合 /Users/$USER/Library/Application Support/Claude/claude_desktop_config.json
)、下記のような設定を追加する。
{
"mcpServers": {
"dice-roll": {
"command": "npx",
"args": ["-y", "mcp-server-diceroll"]
}
}
}
commandは実行可能であれば何でもよく、ローカル環境にあるTypeScriptコードを実行したい場合は例えば以下のようにもできる。
{
"mcpServers": {
"dice-roll": {
"command": "/Users/fumieval/.bun/bin/bun",
"args": ["run", "/Users/fumieval/experiments/mcp-server-diceroll/index.ts"]
}
}
}
Claude Desktopを再起動し、右下に金槌のアイコンが表示されていれば、MCPサーバーの立ち上げに成功だ。
「1d100」などと打ち込むと、dice-rollの実行の承認を求めるモーダルが表示される(面倒ではあるがセキュリティ上仕方ないのかもしれない)。これを承認すれば、MCP Serverが呼び出され、結果が表示される。
おまけ
課題と展望
MCPは大変興味深く、有望な技術だが、現時点でいくつかの課題を感じる。
- 実装の成熟度:多くのMCPサーバーの実装は、まだ実務での使用に耐えうる段階に達していない。
- ツール選択の難しさ:接続するMCPサーバーの数が増えるほど、AI本体の判断力では、適切なツールを選択して使用することが難しくなる。文脈に応じて利用可能なツールを動的に切り替えるなどの工夫が必要になるだろう。
- 入出力スキーマの理解:外部ツールの入出力形式は、多くの場合LLMが学習していない、ツール開発者が定義した新しい形式であるため、これらをうまく使えるかはAIの地頭が問われる。逆に、MCPサーバーを開発する際は、インターフェイスを既存の広く知られた形式に寄せていくとよいだろう。
- UI上の制約:現状、MCP Serverの出力は、一旦LLMを通るので、ユーザーに直接表示されるわけではない。そのため、長いURLや、埋め込みなどの正確な表示が困難である。
しかし、これらの課題は、エコシステムの成熟、設計の改良、そしてLLM自体の性能向上により、解決できる可能性が高い。MCPは、ソフトウェアのあり方に新たなパラダイムをもたらす可能性を秘めており、今後の発展が期待される。
昨今はAIエージェントが世間で注目を浴びており、日々新たなAIエージェントが産声を上げている。
しかし、AIエージェントはあくまで操作主体であり、操作主体を闇雲に増やしたところで「船頭多くして船山に登る」ことになりかねない。AIエージェントに操作される側のソフトウェアが、より操作しやすいようなインターフェイスを整備することこそ、AIエージェントの活用に必要ではないだろうか。
PR
株式会社HERPは道具を適切に選び使いこなせるエンジニアを募集しています。
Discussion