Model Context Protocol の解説

同じ統合コードを何度も繰り返し書くのは、もうやめましょう。

LLMをデータベースやAPIに接続する場合、新しいモデルが登場するたびにカスタムのグルーコード(接着剤となるコード)を書かなければならないことがよくあります。これは混乱を招きます。結局、多くのツールに対して多くの接続を管理することになってしまいます。

Model Context Protocol (MCP) はこれを解決します。これはAIにとってのUSB-Cポートのようなものです。一度ツールを構築すれば、あらゆるモデルがそれを利用できます。

アーキテクチャは3つの要素で構成されています:

• Host(ホスト):Claude CodeやIDEなど、あなたが使用するアプリ。 • Client(クライアント):ホスト内にあるコネクタ。 • Server(サーバー):データやツールを公開するために構築するプログラム。

MCPサーバーは、主に3つのプリミティブを使用して構築できます:

  • Tools(ツール):メール送信など、モデルが作業を実行するために呼び出す関数。
  • Resources(リソース):ログファイルなど、アプリが取り込む読み取り専用データ。
  • Prompts(プロンプト):特定のタスクのための再利用可能なテンプレート。

以下は、FastMCP SDKを使用してPythonで基本的なサーバーを構築する方法です:

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("demo-tools")

@mcp.tool()
def word_count(text: str) -> int:
    """Count words in a text."""
    return len(text.split())

@mcp.resource("notes://team")
def team_notes() -> str:
    """Expose team notes."""
    return "Release freeze starts Friday."

@mcp.prompt()
def code_review(language: str, code: str) -> str:
    """Template for code reviews."""
    return f"Review this {language} code: {code}"

if __name__ == "__main__":
    mcp.run()

このコードが複雑な通信を代行してくれます。あなたが書いたdocstringが、モデルへの指示となります。

本番環境に向けた3つのヒント:

  1. セキュリティ:データを変更するツールを実行する前には、必ずユーザーの承認を求めてください。
  2. コンテキスト:ツールの説明は簡潔に保ちましょう。説明が長すぎるとトークンを浪費します。
  3. エラー:明確なメッセージを返してください。モデルは「User not found」というエラーは修正できますが、生のコードのクラッシュを修正することはできません。

特注のコネクタを作るのはやめましょう。MCPサーバーを一度構築すれば、あらゆるモデルがそれを使えるようになります。

出典: https://dev.to/galian/model-context-protocol-explained-build-your-first-mcp-server-in-python-ian