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

リモートMCPサーバーを作る

Avatar for bobfromjapan bobfromjapan
September 08, 2025
18

 リモートMCPサーバーを作る

Avatar for bobfromjapan

bobfromjapan

September 08, 2025
Tweet

Transcript

  1. CONFIDENTIAL 2 最近のKaggle戦歴 • CZII - CryoET Object Identification –

    クライオ電顕トモグラフィーの3次元画像からセグメンテー ションで粒子検出・分類 • Stanford RNA 3D Folding – RNAの配列から立体構造予測を行うコンペ • CMI - Detect Behavior with Sensor Data – 腕に装着するジャイロ・ToFセンサーの情報を基に強迫性 障害患者の行動(身体集中反復行動)を検出する • 興味がある人が居れば後でお話しましょう!
  2. 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 おことわり
  3. CONFIDENTIAL 4 • AIに外部ツールを使わせたい(API・DB参照・社内SaaS・計算エンジン...) • ツールが増えるほど実行環境・APIがバラバラ→保守が辛い • MCP(Model Context Protocol)という共通プロトコルが登場

    – MCP対応にしておけば、1つの実装で色んなクライアントから利用可能 – HTTP版MCP(リモートMCP)はWebサーバーとしてツールを提供できる→疎結合で、 運用・管理がシンプルに • MCPにはstdio(標準I/O)という形式もあるが、今回は言及しない モチベーション
  4. CONFIDENTIAL 5 • Anthropicが提唱している、 AIモデルと外部ツール・データソースをつなぐた めの共通規格 – よく言われるのが、「AIツールのUSB Type-C」 –

    OpenAI, Google等の他社も賛同しており、デファクトスタンダードとなりつつある MCPとは? https://www.philschmid.de/mcp-introduction
  5. 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使わない場合は 間違えた回答をしていた
  6. 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サーバー側に記述
  7. CONFIDENTIAL 8 • 色んな人がMCP作ってるので予め探しておくと作らなくて良くなるかも – 公式がキュレーションしているもの • https://github.com/modelcontextprotocol/servers – VS

    Codeでキュレーションされているもの • https://code.visualstudio.com/mcp • 信頼できる作者のものを優先して使う – Official Integrations, Reference Serversは比較的安全性が高いと思われる が、Communityは注意して使うべき MCPで何かを作る前に
  8. 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 今回のデモ
  9. CONFIDENTIAL 11 どうやって作ってるか? streamable HTTPを利用するため、 MCP Python SDKのFastMCPをインポート AiZynthFinderをインポート APIルーティングのためFastAPIを利用

    FastMCPインスタンスを初期化 逆合成の入力となるSMILESの型定義 RDKitのMolFromSmilesで正しく解釈できるかで入力文字列 がSMILESであるかどうかのバリデーションを行っている ライブラリインポート・設定 src/main.py L1-21
  10. CONFIDENTIAL 12 どうやって作ってるか? ツール定義 ここのdocstringがAIへのツールの説明となる ので大変重要 FastMCPインスタンスの`.tool`デコレータで ツールを登録する 逆合成解析の実行 結果サマリーが`stats`、見つかった経路の1つ

    が`route`に格納される src/main.py L24-42 ※別のツールを増やしたければ、同様に `@mcp.tool`デコレータ + Python関数定義 の形で追加できる AIZynthFinderのセットアップ
  11. CONFIDENTIAL 17 • デモではPublic Cloud Runで公開 → 認証不要でアクセス可能 • 社内展開の場合

    – PrivateなCloud RunやVM、オンプレマシンでMCPサーバーを実行 • 注意点: – PublicでないとOpenAI APIなどクラウドAIから直接利用できない • 自分でMCPクライアントを実装してアプリに組み込む必要がある – ローカルDifyやVSCodeからならPrivateでもOK • 認証・認可の仕組みは丁度仕様が策定中(OAuth2.1ベース) 社内向けに作るには オンプレ インターネット ツール クライアント LLM /クライアント × ✓ 公開ツール ✓ ✓
  12. CONFIDENTIAL 18 • ツールを増やし過ぎるとLLMが上手くツールを選択できなくなる(<30~40個にすべし) – クライアントによっては上限が決められていることもある • 無暗にMCPサーバーを組み合わせない、信頼性の低い・挙動を確認せずに公開MCPサー バーを利用しない –

    さっきの例でもPubchemを利用しているツールがあるのに気づかず質問した結果、自社の機密度の高い 化合物のSMILES構造を意図せずPubchemに送信してしまった……といったインシデントに繋がりうる • 極端な話、次のようなツールを作れば何でもできるが、攻撃者にもなんでもされてしまう – 公開範囲、マシンの権限、ツールの機能・説明文・名前に気を付けて実装する 注意点・リスク 大きなアタックサーフェスになりうるツールの例 https://www.backslash.security/blog/hundreds-of-mcp-servers-vulnerable-to-abuse
  13. CONFIDENTIAL 19 • MCPはAIツール連携の共通言語 • 様々な社内/社外ツールをリモートMCPツールとして実装しておけば、AIの 能力をどんどん拡張できる • まずは既存のMCPサーバーを探す →

    無ければ自作 • 中々面白い新技術なので、まずは触れてみると吉 – ユーザーに対してツールの使い方に関する新しいインターフェースを与えることができる – セキュリティ上公開範囲や実装する機能には十分注意が必要 まとめ