Slide 1

Slide 1 text

MCP入門 2025/5/7 李俊起

Slide 2

Slide 2 text

話す内容 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の利用

Slide 3

Slide 3 text

2025/5/7 3 MCPについて

Slide 4

Slide 4 text

MCP(Model Context Protocol)とは 2025/5/7 4 • LLMが外部のツールなどを利用する際の標準的な通信規格 (プロトコル) ➢ どのLLM、Agentフレームワークを使っていても、 統一されたインターフェース(MCP)でツールを使うことができる • ベースプロトコルとしてJSON-RPC 2.0を使用 • クライアント/サーバ構成 ➢ クライアントとサーバ間ではstdioまたはSSE(※)方式で通信 ※Streamable HTTPに置き換わる予定

Slide 5

Slide 5 text

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などの機能を提供する側

Slide 6

Slide 6 text

MCP Serverの機能 2025/5/7 6 • 以下3つの機能があるが、世の中に出回っているもののほとんどは Tools(※) • Resources ➢ APIレスポンスやファイルのような、外部のデータ(≒RAG) • Tools ➢ 従来のTool/Function Callingに該当するもの • Prompts ➢ ユーザが特定のタスクを達成するのに役立つ、事前に作成されたプロンプトテン プレート ※ https://mcp.so/

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

MCPがもたらすメリット(MCPがない場合) 2025/5/7 8 • 今まではAgentフレームワーク間でToolの互換性がなく、 フレームワークごとにToolを開発する必要があった LangChain専用ツール LlamaIndex専用ツール • https://python.langchain.com/docs/integrations/tools/ • https://llamahub.ai/?tab=tools

Slide 9

Slide 9 text

MCPがもたらすメリット(MCPを使う場合) 2025/5/7 9 • MCP Serverとして公開されたToolであれば、 MCPに対応しているすべてのMCP Host(Agent)から利用可能 MCP Serverとして 作成/公開されたTool

Slide 10

Slide 10 text

処理の流れ(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 }

Slide 11

Slide 11 text

(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 (足し算・掛け算機能を提供) ※データの中身は次ページ

Slide 12

Slide 12 text

(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に返す

Slide 13

Slide 13 text

(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 }

Slide 14

Slide 14 text

(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 } }

Slide 15

Slide 15 text

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に置き換わる予定

Slide 16

Slide 16 text

MCP vs A2A ? 2025/5/7 16 • MCPはAgent Toolのインターフェースで、A2AはAgent間の インターフェースであり、競合するものではない https://google.github.io/A2A/#/

Slide 17

Slide 17 text

2025/5/7 17 デモ

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

補足: 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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

まとめ 2025/5/7 21 • Agentフレームワークの選定は、以前ほど重要ではなくなってきて いる • 今後Agent開発の流れは、Agent Storeに自分が開発したい Agentがすでにあるか確認 → あればA2Aで接続するだけ、なけ ればAgentを開発 → (Agent開発時)MCP Storeに自分が必 要とするToolがすでに公開されているか確認 → 公開されている ToolがあればMCPで接続するだけ、なければMCP Serverとして 開発し公開、 になると(個人的に)考えている