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

転職したらMCPサーバーだった件

 転職したらMCPサーバーだった件

本日、Forkwell さんに悪ふざけに付き合ってもらってイベントやりました。ありがとうございます。「転職したらMCPサーバーだった件」 🎵🧭 というタイトルで登壇しました!

🔍 イベント詳細:
- イベント名: 転職したらMCPサーバーだった件
- 公式URL: https://forkwell.connpass.com/event/354289/
- ハッシュタグ: https://x.com/search?q=%23Forkwell_MCP&f=live
- 参考資料①: https://speakerdeck.com/nwiizo/kokohamcpnoye-ming-kemae
- 参考資料②: https://syu-m-5151.hatenablog.com/entry/2025/03/09/020057

Avatar for nwiizo

nwiizo

May 15, 2025
Tweet

More Decks by nwiizo

Other Decks in Technology

Transcript

  1. AIとシステムをつなぐ「USB規格」 出典: https://notion.notion.site/Notion-MCP- 1d0efdeead058054a339ffe6b38649e1 Model Context Protocol (MCP)とは 定義: LLMが外部ツール・データソースと通信する標準規格

    特徴: JSON-RPC 2.0をベースとした軽量プロトコル アナロジー: AIアプリのための「USB規格」- どのAIも同じイ ンターフェースで外部接続 9
  2. MCPの位置づけとコミュニティ オープン標準としての発展 Anthropic発案: 2023年に設計・公開 公式ドキュメントが優秀: GitHub上で仕様管理、コミュニティ主導 エコシステムの急成長 クライアント: Claude Desktop,

    VS Code, Cursor,nvim等 サーバー: 200+(公式+コミュニティ)ROADMAPにリポジトリの登場が明記 優位性: 特定ベンダーに依存しないエコシステムが拡大中 11
  3. MCPのアーキテクチャ 出典: https://modelcontextprotocol.io/introduction General architecture MCP Hosts: Claude Desktop、IDE、AIツールなど、MCPを通じてデー タにアクセスしたいプログラム

    MCP Clients: サーバーと1対1の接続を維持するプロトコルクライアント MCP Servers: 標準化されたModel Context Protocolを通じて特定の機 能を提供する軽量プログラム Local Data Sources: MCPサーバーが安全にアクセスできるコンピュー タのファイル、データベース、サービス Remote Services: MCPサーバーが接続できるインターネット経由の外 部システム(API等) 12
  4. 初めてのMCP体験 セットアップしたPCを開いて、専用サイトにアクセスし た瞬間、画面に「Becoming a MCP Server」という文 字が浮かび上がりました。心臓が一瞬、高鳴るのを感じ ました。 初期処理が始まると、 「自分に何ができるのか?」という

    問いかけが次々と現れます。フォーマットに従って、自 分の経験やスキルを丁寧に記入していきました。具体的 な質問に答えていくうちに、 「ああ、これからMCPサー バーになるんだな」という実感が徐々に湧いてきまし た。不思議なことに、不安よりも業務が始まることへの 安心感の方が強かったのです。意味わからないので。 14
  5. MCPの通信フロー 出典: https://syu-m-5151.hatenablog.com/entry/2025/03/09/020057 利点: シンプルさと互換性を両立した標準的な通信プロトコル 初期化フェーズ クライアントが initialize でケイパビリティ宣言 サーバーが利用可能な機能を応答

    リソース探索 resources/list で利用可能なリソース一覧取得 resources/get で特定リソースのデータ取得 ツール呼び出し tools/list でサーバー上のツール一覧取得 tools/call で特定ツールの実行要求 16
  6. 2025-03-26仕様の主要革新点 (1/4) 1. Streamable HTTP Transport シンプル化: 単一エンドポイント( /message )に統合

    柔軟性向上: 簡単にいうと軽量になった、SSEが任意(従来は必須) SDKによっては未対応: 公式SDKだが実装の進捗や方法に微妙に差異があったり する。 WebSocket が必要な場合、不要な操作およびネットワークのオーバーヘッドが大 量に発生するので採用は見送られた #206 25
  7. 2025-03-26仕様の主要革新点 (2/4) 2. ステートレスモード サーバーレス対応: AWS Lambda、Vercelなどで実装容易 セッション管理不要: 状態保持せずに動作可能 呼び出し単純化:

    1回のHTTP POSTでMCPサーバー接続 従来の実装からの進化 従来: セッション毎のTransportオブジェクト保持が必要 課題: マルチプロセス環境では外部ストレージ必須 新機能: 永続化層不要、JWT等と組み合わせて認証可能 26
  8. 2025-03-26仕様の主要革新点 (4/4) Tool annotations & その他の改善 ツール注釈: 動作特性を明示するメタデータ destructiveHint (破壊的更新の可能性)

    idempotentHint (重複呼出の安全性) readOnlyHint (環境変更なしを示す) openWorldHint (外部エンティティとの相互作用) title (人間が読みやすいタイトル) バッチ処理: 複数リクエストの一括送信対応が必須化 マルチモーダル拡張: オーディオデータサポート 28
  9. MCPアーキテクチャ - Resources 出典: https://syu-m-5151.hatenablog.com/entry/2025/03/09/020057 Resources: LLMにコンテキストを提供する 基本と構造 リソースはLLMの外部データアクセスを実現 -

    テキスト形式とバイ ナリ形式のデータをURIで一意に識別し、AIの会話コンテキストと して活用。アプリケーション制御型設計により、クライアントが リソースの使用時期と方法を決定。人間が読みやすい名前や説明で AIの理解を促進 実装と運用 クライアントはresources/listでリソース発見、resources/readで 内容取得、購読機能で更新通知を受信。動的リソースにはURIテン プレートを提供可能。適切なセキュリティ対策と明確なリソース設 計がシステムの信頼性を確保 34
  10. MCPアーキテクチャ - Prompts 出典: https://syu-m-5151.hatenablog.com/entry/2025/03/09/020057 Prompts: LLM対話の再利用可能テンプレート 基本構造と目的 プロンプトは標準化された対話パターンを定義 -

    ユーザー制御型の 再利用可能なテンプレートとして設計され、一貫したLLM体験を提 供。引数を受け取り、リソースから文脈を含め、複数の対話をチェ ーン化できる。各プロンプトは名前・説明・引数の構造で定義さ れ、クライアントはprompts/listエンドポイントで発見し、 prompts/getで使用。引数には名前、説明、必須フラグが含まれる 応用と実装 動的なコンテンツと複数ステップのワークフロー - プロンプトは リソースからの情報を埋め込み、複数のメッセージ交換を事前定義 して複雑な対話フローを作成可能。クライアントUIではスラッシュ コマンドやクイックアクションとして表示され、ユーザーに直感的 な操作を提供。テンプレートの更新は notifications/prompts/list_changedで通知される 38
  11. MCPアーキテクチャ - Tools 出典: https://syu-m-5151.hatenablog.com/entry/2025/03/09/020057 tools: AIに実行力を与える Toolsの基本設計と役割 Toolsは LLM

    に実世界での行動力を与える - サーバーが公開する実 行可能な機能を介して計算処理やAPI操作を実行できる。クライア ントは tools/list で発見し、tools/call で実行する。各ツールは 名 前、説明、入力スキーマ、アノテーション という明確な構造で定 義され、動作の性質(読取専用・破壊的操作・べき等性など)をAI とユーザーに伝える 実装パターンと応用 サーバー側での リクエストハンドラー実装 がToolsを活性化し、AI の指示を具体的なアクションに変換。エラー処理や進捗報告も適 切に設計する。計算ツールからAPI統合、データ処理まで無限の可 能性 - システム操作、外部APIラッパー、データ変換などさまざま なパターンでAIの能力を拡張し、実世界での影響力を高める 42
  12. MCPアーキテクチャ - Sampling Sampling: サーバーがLLMに補完を要求できるようにする。めちゃくちゃ に有用そうではあるが、Clientでは実装されていないものもある。 基本概念と仕組み サンプリングはサーバーがLLMに必要なものをリクエストできる機能 - サーバーがsampling/createMessageを要求し、クライアントがレビュ

    ー、LLMから結果を取得、そして結果を返す。ユーザーが介在する設計に より、セキュリティとプライバシーを確保。標準化されたメッセージフ ォーマットを使用し、会話履歴、モデル設定、システムプロンプト、コ ンテキスト含有範囲を指定。modelPreferencesで希望するモデル名や優 先事項(コスト、速度、性能)を伝達できる パラメータと制御 テンプレート、サンプリングパラメータ、人間による監視 - 様々な設定 (temperature、maxTokens、stopSequences)で出力を調整し、ヒュー マンインザループ設計によりユーザーがプロンプトと完了を確認・修正 可能。サンプリングはエージェント的ワークフローを可能にし、データ 分析、意思決定、構造化データ生成、複数ステップのタスク処理などの 高度な機能を実現。適切なセキュリティ対策とエラー処理が重要 46
  13. MCPアーキテクチャ - Roots roots: Model Context Protocol (MCP)のルーツ:操作境界の定義 基本概念と役割 Rootsはサーバーの操作範囲を定義する

    - クライアントがサーバーに対し て関連リソースとその場所を伝える手段。ファイルシステムパス ( file:///home/user/projects/myapp )やHTTP URL ( https://api.example.com/v1 )などの有効なURIを使用 クライアントは接続時にroots機能を宣言し、サーバーに推奨ルーツのリ ストを提供。これによりワークスペース内のリソースが明確化され、異 なるリソースを同時に扱う際の組織化が容易に 実装と応用 サーバーはrootsを尊重してリソースの範囲特定とアクセスに活用。厳密 な制限ではなく情報提供的な役割だが、境界内での操作を優先すべき プロジェクトディレクトリ、リポジトリ、APIエンドポイントなどを定義 する一般的なユースケースで活用。効果的な運用には必要なリソースのみ 提案し、明確な名前付けと適切な変更管理が重要 52