Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MCP Clientを活用するための設計と実装上の工夫
Search
Yudai Hayashi
June 02, 2025
Technology
1
1.2k
MCP Clientを活用するための設計と実装上の工夫
MCPOps LT大会で発表した内容になります
connpass:
https://mlops.connpass.com/event/352150/
Yudai Hayashi
June 02, 2025
Tweet
Share
More Decks by Yudai Hayashi
See All by Yudai Hayashi
Off-Policy Evaluation and Learning for Matching Markets
yudai00
0
57
ジョブマッチングプラットフォームにおける推薦アルゴリズムの活用事例
yudai00
0
71
ユーザーのプロフィールデータを活用した推薦精度向上の取り組み
yudai00
0
650
人とシゴトのマッチングを実現するための機械学習技術
yudai00
1
66
MCPを理解する
yudai00
17
12k
データバリデーションによるFeature Storeデータ品質の担保
yudai00
1
220
「仮説行動」で学んだ、仮説を深め ていくための方法
yudai00
8
2k
相互推薦システムでのPseudo Label を活用したマッチ予測精度向上の取り組み
yudai00
1
990
Wantedly Visitにおけるフリーワード検索時の推薦のオンライン化事例紹介
yudai00
1
310
Other Decks in Technology
See All in Technology
因果AIへの招待
sshimizu2006
0
920
エンジニアとPMのドメイン知識の溝をなくす、 AIネイティブな開発プロセス
applism118
4
710
寫了幾年 Code,然後呢?軟體工程師必須重新認識的 DevOps
cheng_wei_chen
1
510
モダンデータスタック (MDS) の話とデータ分析が起こすビジネス変革
sutotakeshi
0
400
なぜ使われないのか?──定量×定性で見極める本当のボトルネック
kakehashi
PRO
1
1.2k
re:Invent2025 コンテナ系アップデート振り返り(+CloudWatchログのアップデート紹介)
masukawa
0
300
SSO方式とJumpアカウント方式の比較と設計方針
yuobayashi
7
290
“決まらない”NSM設計への処方箋 〜ビットキーにおける現実的な指標デザイン事例〜 / A Prescription for "Stuck" NSM Design: Bitkey’s Practical Case Study
bitkey
PRO
1
580
AI 駆動開発勉強会 フロントエンド支部 #1 w/あずもば
1ftseabass
PRO
0
130
技術以外の世界に『越境』しエンジニアとして進化を遂げる 〜Kotlinへの愛とDevHRとしての挑戦を添えて〜
subroh0508
1
380
プロダクトマネージャーが押さえておくべき、ソフトウェア資産とAIエージェント投資効果 / pmconf2025
i35_267
2
580
第4回 「メタデータ通り」 リアル開催
datayokocho
0
110
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
A designer walks into a library…
pauljervisheath
210
24k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.3k
Designing for humans not robots
tammielis
254
26k
Thoughts on Productivity
jonyablonski
73
5k
Practical Orchestrator
shlominoach
190
11k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
390
The Art of Programming - Codeland 2020
erikaheidi
56
14k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
54k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
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を用 意して交通整理をするのが良さそう