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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for bobfromjapan bobfromjapan
September 08, 2025
130

 リモート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サーバーを探す →

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