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

MCP Clientを活用するための設計と実装上の工夫

MCP Clientを活用するための設計と実装上の工夫

MCPOps LT大会で発表した内容になります
connpass: https://mlops.connpass.com/event/352150/

Avatar for Yudai Hayashi

Yudai Hayashi

June 02, 2025
Tweet

More Decks by Yudai Hayashi

Other Decks in Technology

Transcript

  1. © 2025 Wantedly, Inc. 自己紹介 林 悠大 • 経歴: ◦

    2022年に応用物理分野で Ph.D取得 ◦ 2022年にウォンテッドリー株式会社に新卒入社。データサイ エンティストとして推薦システムの開発に従事 @python_walker @Hayashi-Yudai
  2. © 2025 Wantedly, Inc. MCP Client をプロダクト内に実装することによる可能性 Clientを持っておくことで、LLMを “利用して” 価値を提供できる

    MCP Server Use プロダクトはLLMに利用される Service w/ MCP Client Use Use MCP Servers プロダクトがLLMを利用する
  3. © 2025 Wantedly, Inc. 今日のメイントピック MCP Clientをチャットアプリに実装した話 • MCP Clientをどのように実装すれば良いのか、その一例を伝えたい

    • どういうところが難しくて、工夫が必要だったか紹介したい 今日お話しするコードは ↓の一部です https://github.com/Hayashi-Yudai/aichat 参考資料
  4. © 2025 Wantedly, Inc. アプリケーションの構成 MCP Servers Application LLMs •

    ユーザーからリクエストを受け取り、 MCP ServerやLLMとやりとりをする一般的な構成 • MCP ServerからTool一覧を取得してLLMにリ クエストをするときに一緒に渡す • ユーザーメッセージに特定パターンがあるとき に、Promptを呼び出す ◦ e.g. /search が入っていたらある Promptを呼び出す
  5. © 2025 Wantedly, Inc. 実装で工夫する必要があった部分 MCP Servers Application LLMs •

    課題 1:MCP Serverとのセッション管理 • 課題 2:複数のMCP Serverの管理
  6. © 2025 Wantedly, Inc. 課題 1:MCP Serverとのセッション管理 Application Front ChatGPT

    Gemini … アプリケーションの機能 • ユーザーは何往復もチャットを繰り返すことがで きる • チャットの途中からモデルを切り替えることがで きる チャット継続中に常にセッションを保持しておくのは 大変そう。とは言えリクエストの度にセッションを確 立するのもパフォーマンス的に悪そう ...
  7. © 2025 Wantedly, Inc. 課題 1:MCP Serverとのセッション管理 リクエスト毎に必要な情報はあらかじめ取得しておく • リクエストの度に必要な

    Serverの情報は限られている。しかも、それらは普通は静的 ◦ Tools, Prompts, Resourcesの一覧 • Application起動時に全て取得しておけば良さそう • リクエスト処理時には、必要に応じて MCP Serverと接続をする (Tool Call時など) ツールの一覧をインスタンス変数として保持してお く
  8. © 2025 Wantedly, Inc. 課題 2:複数のMCP Serverの管理 • Tool名だけ管理していると、 LLMからTool

    Call が来たときに、どのServerに接続すれば良い かわからない ◦ こっちは実はTool一覧をキャッシュするこ とで半分解決している • Tool名に重複があるときに特に問題になる Application Tool 1 を使いたい どのServer?
  9. © 2025 Wantedly, Inc. 課題 2:複数のMCP Serverの管理 Server名とツール名をセットで管理する Server2__Tool 1

    を使いたい Tool名の世界 LLMInterface Handler {Server名}__{Tool名}の世界 Server2__Tool 1 Tool 1 Server1__Tool1 Server1__Tool2 … • Handlerを用意、LLMにはツール名を Server__Tool の形式で渡しておく • リクエストが来たら、 Handlerで分解し て適切なServerにリクエスト
  10. © 2025 Wantedly, Inc. まとめ • チャットアプリの中に MCP Clientを実装してみて、工夫が必要だった点をいくつか紹介 •

    MCP ServerとのSessionは、アプリ起動時と呼び出しがあるときの 2通りのケースで保持するようにす れば良さそう • 複数のMCP Serverを扱う際には、LLMにリクエストを投げる部分と MCP Serverの間にHandlerを用 意して交通整理をするのが良さそう
OSZAR »