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サーバーを作る
Search
bobfromjapan
September 08, 2025
0
18
リモートMCPサーバーを作る
bobfromjapan
September 08, 2025
Tweet
Share
More Decks by bobfromjapan
See All by bobfromjapan
FastAPIを利用して作る簡易推論API
bobfromjapan
0
43
Transformer系機械学習モデルを取り巻くライブラリや用語を整理する
bobfromjapan
2
800
鯖落ちパーツで安価に機械学習用マシンを作ってみる
bobfromjapan
0
690
Featured
See All Featured
Bash Introduction
62gerente
615
210k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
A designer walks into a library…
pauljervisheath
207
24k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Gamification - CAS2011
davidbonilla
81
5.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
840
The Language of Interfaces
destraynor
161
25k
Balancing Empowerment & Direction
lara
3
610
Producing Creativity
orderedlist
PRO
347
40k
Code Reviewing Like a Champion
maltzj
525
40k
Transcript
CONFIDENTIAL 1 1 リモートMCPサーバーを作る @bobfromjapan Mishima.syk #22
CONFIDENTIAL 2 最近のKaggle戦歴 • CZII - CryoET Object Identification –
クライオ電顕トモグラフィーの3次元画像からセグメンテー ションで粒子検出・分類 • Stanford RNA 3D Folding – RNAの配列から立体構造予測を行うコンペ • CMI - Detect Behavior with Sensor Data – 腕に装着するジャイロ・ToFセンサーの情報を基に強迫性 障害患者の行動(身体集中反復行動)を検出する • 興味がある人が居れば後でお話しましょう!
CONFIDENTIAL 3 • この資料は2025/8時点最新の、MCP 2025-06-18を対象としています • あくまでMCPサーバーを体験する第一歩を提供する目的で、プロダクションレ ベルのものではありません • MCP自体がエコシステムが成熟しきっていない新しい技術であり、さまざまな
攻撃方法が検証されている段階です。考えなしにリモートMCPサーバーを公 開するのは推奨されません – https://composio.dev/blog/mcp-vulnerabilities-every-developer- should-know – https://modelcontextprotocol.io/specification/2025-06- 18/basic/security_best_practices – https://blog.flatt.tech/entry/mcp_security_first おことわり
CONFIDENTIAL 4 • AIに外部ツールを使わせたい(API・DB参照・社内SaaS・計算エンジン...) • ツールが増えるほど実行環境・APIがバラバラ→保守が辛い • MCP(Model Context Protocol)という共通プロトコルが登場
– MCP対応にしておけば、1つの実装で色んなクライアントから利用可能 – HTTP版MCP(リモートMCP)はWebサーバーとしてツールを提供できる→疎結合で、 運用・管理がシンプルに • MCPにはstdio(標準I/O)という形式もあるが、今回は言及しない モチベーション
CONFIDENTIAL 5 • Anthropicが提唱している、 AIモデルと外部ツール・データソースをつなぐた めの共通規格 – よく言われるのが、「AIツールのUSB Type-C」 –
OpenAI, Google等の他社も賛同しており、デファクトスタンダードとなりつつある MCPとは? https://www.philschmid.de/mcp-introduction
CONFIDENTIAL 6 • DifyやVSCode(GitHub Copilot)などのクライアントで標準対応 • OpenAI APIでもリモートMCPサーバーを推論時に指定することが可能 ➢ MCPサーバーのURLを参照させるだけで簡単にツールを使わせることができる
つまり何が嬉しいのか?① 対応しているクライアントが多い https://awslabs.github.io/mcp/servers/aws-knowledge-mcp- server/ 例: AWS公式のAWS Knowledge MCP Server をCopilot Chatで使ってみる ※ちなみに、MCP使わない場合は 間違えた回答をしていた
CONFIDENTIAL 7 • 何かツールを使わせたいときはツールそれぞれ 独自にfunction_callingの仕組みを実装 つまり何が嬉しいのか?②自分でAIアプリを作るときに楽できる • MCPがあれば同じ仕組みを使いまわせ るので、楽にツールを増やすことができる https://platform.openai.com/docs/guides/function-calling
①Toolを定義 ②LLMにどのツールを呼び出すか 出力させる ③ツールの処理を実装し、実行結果 をプロンプトに格納 ④実行結果含めたプロンプトで最終的な 回答を生成させる https://platform.openai.com/docs/guides/tools-connectors-mcp OpenAI APIはリモートMCPにネイティブ対応しているので、MCP サーバーのURLを渡すだけでツールを使わせることが可能 ツールの定義はMCPサーバー側に記述
CONFIDENTIAL 8 • 色んな人がMCP作ってるので予め探しておくと作らなくて良くなるかも – 公式がキュレーションしているもの • https://github.com/modelcontextprotocol/servers – VS
Codeでキュレーションされているもの • https://code.visualstudio.com/mcp • 信頼できる作者のものを優先して使う – Official Integrations, Reference Serversは比較的安全性が高いと思われる が、Communityは注意して使うべき MCPで何かを作る前に
CONFIDENTIAL 9 • 逆合成解析(AIZynthFinder)をMCPサーバー化してみる – AIZynthFinderは入力されたSMILESを購買可能前駆体まで分解するOSS – MCPのPython公式実装である`python-sdk`を利用します • Cloud
Run にデプロイしてHTTP公開するところまで紹介 – GitHub: https://github.com/bobfromjapan/retrosynthesis-mcp – デモ環境: https://retrosynthesis-mcp-178859831790.asia- northeast1.run.app/mcp-server/mcp 今回のデモ
CONFIDENTIAL 10 • VS Code → Agent Mode でMCPサーバー追加する デモの使い方(例)
CONFIDENTIAL 11 どうやって作ってるか? streamable HTTPを利用するため、 MCP Python SDKのFastMCPをインポート AiZynthFinderをインポート APIルーティングのためFastAPIを利用
FastMCPインスタンスを初期化 逆合成の入力となるSMILESの型定義 RDKitのMolFromSmilesで正しく解釈できるかで入力文字列 がSMILESであるかどうかのバリデーションを行っている ライブラリインポート・設定 src/main.py L1-21
CONFIDENTIAL 12 どうやって作ってるか? ツール定義 ここのdocstringがAIへのツールの説明となる ので大変重要 FastMCPインスタンスの`.tool`デコレータで ツールを登録する 逆合成解析の実行 結果サマリーが`stats`、見つかった経路の1つ
が`route`に格納される src/main.py L24-42 ※別のツールを増やしたければ、同様に `@mcp.tool`デコレータ + Python関数定義 の形で追加できる AIZynthFinderのセットアップ
CONFIDENTIAL 13 どうやって作ってるか? ウェブサーバー設定 FastAPIのインスタンスを作成 `/mcp-server`に`mcp_app`をマウント ルートや死活監視用の`/health`エンドポイント を設定 src/main.py L44-67
CONFIDENTIAL 14 どうやって作ってるか? Dockerfile 今回はuvで仮想環境を作成するため、 そのための設定とapt install pipでuvをインストールし、`pyproject.toml`の dependenciesを基にPythonパッケージをインストール コンテナ作成
pyproject.toml
CONFIDENTIAL 15 • VS Code → Agent Mode でMCPサーバー追加する デモの使い方(例)
CONFIDENTIAL 16 • Pubchempyを利用したIUPAC 名確認ツールを追加 • `retrosynthesis`ツールを使っ た後に`smiles_to_iupac`を 使ってくれて、出発物質の正しい IUPAC名を回答してくれるように
なる 別のツールと組み合わせると……
CONFIDENTIAL 17 • デモではPublic Cloud Runで公開 → 認証不要でアクセス可能 • 社内展開の場合
– PrivateなCloud RunやVM、オンプレマシンでMCPサーバーを実行 • 注意点: – PublicでないとOpenAI APIなどクラウドAIから直接利用できない • 自分でMCPクライアントを実装してアプリに組み込む必要がある – ローカルDifyやVSCodeからならPrivateでもOK • 認証・認可の仕組みは丁度仕様が策定中(OAuth2.1ベース) 社内向けに作るには オンプレ インターネット ツール クライアント LLM /クライアント × ✓ 公開ツール ✓ ✓
CONFIDENTIAL 18 • ツールを増やし過ぎるとLLMが上手くツールを選択できなくなる(<30~40個にすべし) – クライアントによっては上限が決められていることもある • 無暗にMCPサーバーを組み合わせない、信頼性の低い・挙動を確認せずに公開MCPサー バーを利用しない –
さっきの例でもPubchemを利用しているツールがあるのに気づかず質問した結果、自社の機密度の高い 化合物のSMILES構造を意図せずPubchemに送信してしまった……といったインシデントに繋がりうる • 極端な話、次のようなツールを作れば何でもできるが、攻撃者にもなんでもされてしまう – 公開範囲、マシンの権限、ツールの機能・説明文・名前に気を付けて実装する 注意点・リスク 大きなアタックサーフェスになりうるツールの例 https://www.backslash.security/blog/hundreds-of-mcp-servers-vulnerable-to-abuse
CONFIDENTIAL 19 • MCPはAIツール連携の共通言語 • 様々な社内/社外ツールをリモートMCPツールとして実装しておけば、AIの 能力をどんどん拡張できる • まずは既存のMCPサーバーを探す →
無ければ自作 • 中々面白い新技術なので、まずは触れてみると吉 – ユーザーに対してツールの使い方に関する新しいインターフェースを与えることができる – セキュリティ上公開範囲や実装する機能には十分注意が必要 まとめ