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

MCP入門

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for nutslove nutslove
May 07, 2025
160

 MCP入門

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

Avatar for nutslove

nutslove

May 07, 2025
Tweet

More Decks by nutslove

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として 開発し公開、 になると(個人的に)考えている