Claude MCP(Model-Context-Protocol)とは、MCPサーバを経由して外部のリソースをClaudeが使えるようになる仕組みのことである。
MCPサーバは外部のリソースに応じた、かなりたくさんの種類が開発されている。
外部リソースには、自分のPCのファイルなども含まれているので、チャット履歴を自分のPCに保存することも可能になってくる。
https://www.anthropic.com/news/model-context-protocol
開発に必須の内容が詰まっている
https://modelcontextprotocol.io/introduction
原文:
https://modelcontextprotocol.io/quickstart
最初のMCPサーバーを構築し、ホストに接続してみましょう
このチュートリアルでは、シンプルな MCP 天気予報サーバーを構築し、ホストである Claude for Desktop に接続します。まずは基本的なセットアップから始めて、より複雑なユースケースに進みます。
モデルやエージェントの役割を明確に定義します。例えば、「アシスタント」、「エージェント」、「エキスパート」などです。
モデルが実行できるアクションを定義します。例えば、「情報を検索する」、「要約を作成する」、「コードを生成する」などです。
モデルがアクセスできる関連情報を定義します。例えば、ドキュメント、過去の会話履歴、外部データなどです。
モデルの動作を制御するための命令とパラメータを定義します。例えば、応答の長さ、フォーマット、スタイルなどです。
以下の記事をまとめる
https://modelcontextprotocol.io/docs/concepts/architecture
MCPは、MCPサーバと、MCPクライアントの通信から成り立つ。 MCPサーバとMCPクライアントは1:1で通信を行う。 MCPクライアントをホスト(ClaudeアプリやIDE)では複数持つことができる
Pythonの例やTypeScript?の例が記載されていた。いきなりこれを見ても、なにかわからない。チュートリアルを先にやらないとわからない気がする。
class Protocol<Request, Notification, Result> {
// 受信したリクエストを処理する
setRequestHandler<T>(schema: T, handler: (request: T, extra: RequestHandlerExtra) => Promise<Result>): void
// 受信した通知を処理する
setNotificationHandler<T>(schema: T, handler: (notification: T) => Promise<void>): void
// リクエストを送信し、レスポンスを待機する
request<T>(request: Request, schema: T, options?: RequestOptions): Promise<T>
// 一方向の通知を送信する
notification(notification: Notification): Promise<void>
}
やり方が2つあって、1つは、標準入出力を使う方法、もう一つはSSEというネットワークを使う方法である。メッセージの形式は、JSON-RPC 2.0 を使用してメッセージを交換する。