Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MCP入門

Avatar for nutslove nutslove
May 07, 2025
63

 MCP入門

MCPについての社内勉強会で使用した資料になります。
主にToolについて記載しています。
参考になれば幸いです。

Avatar for nutslove

nutslove

May 07, 2025
Tweet

Transcript

  1. 話す内容 2025/5/7 2 • MCPについて ➢ 主にMCPのToolsについて話します • デモ ➢

    簡単なMath MCP ServerをSSE方式で公開し、 LangGraphとAWS Bedrock Inline Agent SDKから利用 ➢ Claude DesktopからSlack MCP Serverを使ったSlackの操作 ➢ Claude DesktopからMCP Resources、Promptsの利用
  2. MCP(Model Context Protocol)とは 2025/5/7 4 • LLMが外部のツールなどを利用する際の標準的な通信規格 (プロトコル) ➢ どのLLM、Agentフレームワークを使っていても、

    統一されたインターフェース(MCP)でツールを使うことができる • ベースプロトコルとしてJSON-RPC 2.0を使用 • クライアント/サーバ構成 ➢ クライアントとサーバ間ではstdioまたはSSE(※)方式で通信 ※Streamable HTTPに置き換わる予定
  3. MCPの構成(登場人物) 2025/5/7 5 • MCP Host ➢ MCP Serverが提供する機能を利用する側 (e.g.

    LangGraph、Bedrock Inline Agent SDK、Cursor、etc.) • MCP Client ➢ MCP Host内部に存在し、MCP Serverと1対1の接続関係を持つ Connector • MCP Server ➢ Toolsなどの機能を提供する側
  4. MCP Serverの機能 2025/5/7 6 • 以下3つの機能があるが、世の中に出回っているもののほとんどは Tools(※) • Resources ➢

    APIレスポンスやファイルのような、外部のデータ(≒RAG) • Tools ➢ 従来のTool/Function Callingに該当するもの • Prompts ➢ ユーザが特定のタスクを達成するのに役立つ、事前に作成されたプロンプトテン プレート ※ https://mcp.so/
  5. MCPのアーキテクチャ 2025/5/7 7 MCP Host (Agent) MCP Client MCP Server

    (天気情報を提供) その他MCPに対応しているAgent MCP Client MCP Server (足し算・掛け算機能を提供) API • MCP Host(MCP Client)に事前に使いたいMCP Serverを 登録しておく • どれを使うかはAgentが(タスクに応じて)決める NYの天気は? (3+5)x12は? MCP Protocol
  6. 処理の流れ(Tools) 1/4 2025/5/7 10 • MCP ClientがMCP Serverに対して、Serverが持っているToolの一覧と 情報を求める(※) MCP

    Host (Agent) MCP Server (天気情報を提供) MCP Server (足し算・掛け算機能を提供) API ※初期化(initialize)手順は省略しています MCP Client MCP Client (3+5)x12は? { "method":"tools/list", "jsonrpc":"2.0", "id":1 }
  7. (3+5)x12は? 処理の流れ(Tools) 2/4 2025/5/7 11 • MCP Serverが自身が持っているToolの一覧と情報(何ができるかの説明、 inputスキーマ)をMCP Clientに返す

    MCP Host (Agent) MCP Client MCP Client API MCP Server (天気情報を提供) MCP Server (足し算・掛け算機能を提供) ※データの中身は次ページ
  8. (3+5)x12は? 処理の流れ(Tools) 2/4 2025/5/7 12 MCP Host (Agent) MCP Client

    MCP Client API MCP Server (天気情報を提供) MCP Server (足し算・掛け算機能を提供) { "jsonrpc":"2.0", "id":1, "result": { "tools": [ { "name":"add", "description":"Add two numbers", "inputSchema": { "properties": {"a":{"title":"A","type":"integer"},"b":{"title":"B","type":"integer"}},"required":["a","b"],"title":"addArguments","type":"object" } }, { "name":"multiply", "description":"Multiply two numbers", "inputSchema": { "properties":{"a":{"title":"A","type":"integer"},"b":{"title":"B","type":"integer"}},"required":["a","b"],"title":"multiplyArguments","type":"object" } } ] } } • MCP Serverが自身が持っているToolの一覧と情報(何ができるかの説明、 inputスキーマ)をMCP Clientに返す
  9. (3+5)x12は? 処理の流れ(Tools) 3/4 2025/5/7 13 • MCP ClientがMCP ServerからのToolの情報をもとに、タスクに応じて 必要と判断したMCP

    Serverに必要な引数と一緒にリクエストを投げる (Tool/Function Calling) MCP Host (Agent) MCP Server (天気情報を提供) MCP Client MCP Server (足し算・掛け算機能を提供) API MCP Client { "method":"tools/call", "params":{ "name":"add", "arguments":{"a":3,"b":5} }, "jsonrpc":"2.0", "id":2 } { "method":"tools/call", "params":{ "name":"multiply", "arguments":{"a":8,"b":12} }, "jsonrpc":"2.0", "id":3 }
  10. (3+5)x12は? 処理の流れ(Tools) 4/4 2025/5/7 14 • MCP Serverが処理結果をMCP Clientに返す MCP

    Host (Agent) MCP Client MCP Server (天気情報を提供) MCP Client API MCP Server (足し算・掛け算機能を提供) { "jsonrpc":"2.0", "id":2, "result":{ "content":[{"type":"text","text":"8"}], "isError":false } } { "jsonrpc":"2.0", "id":3, "result":{ "content":[{"type":"text","text":"96"}], "isError":false } }
  11. MCP Client と MCP Server間の通信方式 2025/5/7 15 • stdio ➢

    標準入出力で、MCP ClientとMCP Serverが通信 ➢ MCP ClientとMCP Serverが同じサーバ上にある場合の方式 • SSE (Server-Sent Events) ➢ HTTP POST リクエストで、 MCP ClientとMCP Serverが通信 ➢ MCP ClientとMCP Serverが異なるサーバ上にある場合の方式 ➢ Streamable HTTPに置き換わる予定
  12. LangGraphとBedrock Inline Agent SDKを使ったデモ 2025/5/7 18 • FastMCPというPythonのMCP用フレームワークを使って、 簡単なMath MCP

    Serverを作成/SSEとして公開し、 LangGraphとBedrock Agent Inline SDKから呼び出す MCP Host (Agent) MCP Client MCP Server (足し算・掛け算機能を提供) (3+5)x12は? MCP Protocol Bedrock Agent Inline SDK
  13. 補足: Bedrock Inline Agent (SDK) 2025/5/7 19 • 従来のBedrock Agentは事前にActionGroupや指示など、

    Agent Configurationsを登録しておいて、変更のたびに PrepareAgent APIで更新する必要があったが、 Bedrock Inline Agentは InvokeInlineAgent APIで 実行のタイミングで動的にこういったAgent Configurationsを 変更できる (2025/05の時点では、まだBeta) • Bedrock Agentでは使えない以下の機能が使える ➢ MCP ➢ LangFuseなどへのトレース連携 • https://github.com/awslabs/amazon-bedrock-agent-samples/tree/main/src/InlineAgent • https://qiita.com/icoxfog417/items/e9989e052ea1c83759e1
  14. Claude DesktopでSlack MCP Serverを使ったSlack操作 2025/5/7 20 • Docker Desktopのインストール/起動が必要 •

    Slack App、Claude Desktopの設定が必要 ➢ https://mcp.so/server/slack/modelcontextprotocol ➢ https://qiita.com/revsystem/items/b7904fc53a72ef3ba02a
  15. まとめ 2025/5/7 21 • Agentフレームワークの選定は、以前ほど重要ではなくなってきて いる • 今後Agent開発の流れは、Agent Storeに自分が開発したい Agentがすでにあるか確認

    → あればA2Aで接続するだけ、なけ ればAgentを開発 → (Agent開発時)MCP Storeに自分が必 要とするToolがすでに公開されているか確認 → 公開されている ToolがあればMCPで接続するだけ、なければMCP Serverとして 開発し公開、 になると(個人的に)考えている