Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
リモートMCPサーバーを作る
Search
bobfromjapan
September 08, 2025
0
72
リモートMCPサーバーを作る
bobfromjapan
September 08, 2025
Tweet
Share
More Decks by bobfromjapan
See All by bobfromjapan
2025版 鯖落ちパーツで安価に機械学習用マシンを作ってみる
bobfromjapan
0
360
FastAPIを利用して作る簡易推論API
bobfromjapan
0
44
Transformer系機械学習モデルを取り巻くライブラリや用語を整理する
bobfromjapan
2
830
鯖落ちパーツで安価に機械学習用マシンを作ってみる
bobfromjapan
0
710
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.1k
Statistics for Hackers
jakevdp
799
230k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.3k
Six Lessons from altMBA
skipperchong
29
4.1k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
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サーバーを探す →
無ければ自作 • 中々面白い新技術なので、まずは触れてみると吉 – ユーザーに対してツールの使い方に関する新しいインターフェースを与えることができる – セキュリティ上公開範囲や実装する機能には十分注意が必要 まとめ