Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MCP Clientを活用するための設計と実装上の工夫
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yudai Hayashi
June 02, 2025
Technology
1.3k
1
Share
MCP Clientを活用するための設計と実装上の工夫
MCPOps LT大会で発表した内容になります
connpass:
https://mlops.connpass.com/event/352150/
Yudai Hayashi
June 02, 2025
More Decks by Yudai Hayashi
See All by Yudai Hayashi
技術キャッチアップ効率化を実現する記事推薦システムの構築
yudai00
4
350
Off-Policy Evaluation and Learning for Matching Markets
yudai00
0
130
ジョブマッチングプラットフォームにおける推薦アルゴリズムの活用事例
yudai00
0
140
ユーザーのプロフィールデータを活用した推薦精度向上の取り組み
yudai00
0
730
人とシゴトのマッチングを実現するための機械学習技術
yudai00
1
110
MCPを理解する
yudai00
18
15k
データバリデーションによるFeature Storeデータ品質の担保
yudai00
1
270
「仮説行動」で学んだ、仮説を深め ていくための方法
yudai00
8
2k
相互推薦システムでのPseudo Label を活用したマッチ予測精度向上の取り組み
yudai00
1
1.1k
Other Decks in Technology
See All in Technology
React 19×Rustツール 進化の「ズレ」を設計で埋める
remrem0090
1
110
全社統制を維持しながら現場負担をどう減らすか〜プラットフォームチームとセキュリティチームで進めたSecurity Hub活用によるAWS統制の見直し〜/secjaws-security-hub-custom-insights
mhrtech
1
170
自動テストだけで リリース判断できるチームへ - 鍵はテストの量ではなくリリース判断基準の再設計にあった / Redesigning Release Criteria for Lightweight Releases
ewa
7
3.6k
Agent の「自由」と「安全」〜未来に向けて今できること〜
katayan
0
350
雑談は、センサーだった
bitkey
PRO
2
220
100マイクロサービスのTerraform/Kubernetes管理地獄から抜け出すためのAI活用術
markie1009
0
110
AIと乗り切った1,500ページ超のヘルプサイト基盤刷新とさらにその先の話
mugi_uno
2
330
AI飲み会幹事エージェントを作っただけなのに
ykimi
0
100
20260516_SecJAWS_Days
takuyay0ne
0
110
Purview Endpoint DLP 動かしてみた
kozakigh
0
150
Purview 勉強会報告 Microsoft Purview 入門しようとしてみた
masakichixo
1
150
AIが自律的に働く時代へ Amazon Quick で実現するAIエージェント紹介
koheiyoshikawa
0
190
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
50
15k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.6k
Docker and Python
trallard
47
3.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.1k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
540
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
My Coaching Mixtape
mlcsv
0
120
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
Transcript
© 2025 Wantedly, Inc. MCP Clientを活用するための設計と 実装上の工夫 MCP Ops LT大会
Jun. 2 2025 - Yudai Hayashi
© 2025 Wantedly, Inc. 自己紹介 林 悠大 • 経歴: ◦
2022年に応用物理分野で Ph.D取得 ◦ 2022年にウォンテッドリー株式会社に新卒入社。データサイ エンティストとして推薦システムの開発に従事 @python_walker @Hayashi-Yudai
© 2025 Wantedly, Inc. MCP Client をプロダクト内に実装することによる可能性 Clientを持っておくことで、LLMを “利用して” 価値を提供できる
MCP Server Use プロダクトはLLMに利用される Service w/ MCP Client Use Use MCP Servers プロダクトがLLMを利用する
© 2025 Wantedly, Inc. 今日のメイントピック MCP Clientをチャットアプリに実装した話 • MCP Clientをどのように実装すれば良いのか、その一例を伝えたい
• どういうところが難しくて、工夫が必要だったか紹介したい 今日お話しするコードは ↓の一部です https://github.com/Hayashi-Yudai/aichat 参考資料
© 2025 Wantedly, Inc. アプリケーションの構成 MCP Servers Application LLMs •
ユーザーからリクエストを受け取り、 MCP ServerやLLMとやりとりをする一般的な構成 • MCP ServerからTool一覧を取得してLLMにリ クエストをするときに一緒に渡す • ユーザーメッセージに特定パターンがあるとき に、Promptを呼び出す ◦ e.g. /search が入っていたらある Promptを呼び出す
© 2025 Wantedly, Inc. 実装で工夫する必要があった部分 MCP Servers Application LLMs •
課題 1:MCP Serverとのセッション管理 • 課題 2:複数のMCP Serverの管理
© 2025 Wantedly, Inc. 課題 1:MCP Serverとのセッション管理 Application Front ChatGPT
Gemini … アプリケーションの機能 • ユーザーは何往復もチャットを繰り返すことがで きる • チャットの途中からモデルを切り替えることがで きる チャット継続中に常にセッションを保持しておくのは 大変そう。とは言えリクエストの度にセッションを確 立するのもパフォーマンス的に悪そう ...
© 2025 Wantedly, Inc. 課題 1:MCP Serverとのセッション管理 リクエスト毎に必要な情報はあらかじめ取得しておく • リクエストの度に必要な
Serverの情報は限られている。しかも、それらは普通は静的 ◦ Tools, Prompts, Resourcesの一覧 • Application起動時に全て取得しておけば良さそう • リクエスト処理時には、必要に応じて MCP Serverと接続をする (Tool Call時など) ツールの一覧をインスタンス変数として保持してお く
© 2025 Wantedly, Inc. 課題 2:複数のMCP Serverの管理 • Tool名だけ管理していると、 LLMからTool
Call が来たときに、どのServerに接続すれば良い かわからない ◦ こっちは実はTool一覧をキャッシュするこ とで半分解決している • Tool名に重複があるときに特に問題になる Application Tool 1 を使いたい どのServer?
© 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にリクエスト
© 2025 Wantedly, Inc. まとめ • チャットアプリの中に MCP Clientを実装してみて、工夫が必要だった点をいくつか紹介 •
MCP ServerとのSessionは、アプリ起動時と呼び出しがあるときの 2通りのケースで保持するようにす れば良さそう • 複数のMCP Serverを扱う際には、LLMにリクエストを投げる部分と MCP Serverの間にHandlerを用 意して交通整理をするのが良さそう