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

既存Web APIをMCPサーバー化する際のTool設計

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

既存Web APIをMCPサーバー化する際のTool設計

Avatar for hirakawamizuki

hirakawamizuki

September 10, 2026

More Decks by hirakawamizuki

Other Decks in Technology

Transcript

  1. 自己紹介 • 平川 瑞樹 • 株式会社ヴァル研究所 「駅すぱあと API」チームリーダー&PO • 好きなもの:

    クラフトビール, AI • X (Twitter) , Zenn: @mizuki901 2 Copyright Val Laboratory Corporation All Rights Reserved.
  2. Postman API Night 登壇2回目! • 2026/05/29: Postman API Night Tokyo

    2026 Late Spring • 2026/09/10: Postman API Night Fukuoka 2026 Fall(今回) Postman様、本日もお誘いいただきありがとうございます 🙇 3 Copyright Val Laboratory Corporation All Rights Reserved.
  3. 会社概要 社名 株式会社ヴァル研究所 設立 1976年7月26日(51期) 所在地 東京都杉並区高円寺北 2-3-17 代表取締役 菊池

    宗史 従業員数 165名(2026年7月1日現在) Mission 世の中の当たり前を変えることで、人々の可能性をひろげ活力 に満ちあふれた社会を実現する Vision 「思考の一歩先」を提供する熱狂的イノベーションカンパニー 5 Copyright Val Laboratory Corporation All Rights Reserved.
  4. 「駅すぱあと」とは 北海道から沖縄まで 日本全国の路線を網 羅 鉄道だけでなく、船の海路図やコミュニティバスの路線図もご用意 「駅すぱあと」は、1988年に日本で最初に発売された 経路検索サービスです。 以降35年以上にわたり経路検索のパイオニアとして、鉄道・バス 飛行機の交通データ ・航空・船など、日本全国の公共交通に関する多様な情報を保有

    日本国内のすべての航空路線に 対応しております。 (一部離島同士のヘリ便等除く) し、公共交通機関の最適経路及び運賃情報を提供しています。 水路の交通データ フェリーなどの水路データも フェリーターミナルを入れる ことで検索することができます。 バスの交通データ 路線バス、コミュニティバス、高 速バスも網羅。類似製品の中では 高いカバー率を誇っています。 Copyright Val Laboratory Corporation All Rights Reserved.
  5. 主な「駅すぱあと」製品 「駅すぱあと」独自の経路検索エンジンに備えられた全国の公共交通機関データを幅広い製品に活用。 プライベートでのお出かけや旅行などでの経路検索をはじめ、ビジネスシーンでの交通費精算や通勤定期代の支給計算などの法人 向けサービスとも連携し、12万社以上の取引実績があります。 経路検索 / 駅情報 / 鉄道路線図などの 1988年の発売以来、豊富な情報量と様々な機能

    機能を実装できる法人向けAPIです。 で利用者の移動を強力にバックアップします。 通勤費手当に関する申請・管理業務を 累計1,500万ダウンロードを超える、 一元化するクラウドサービスです。 iOS・Android端末向け経路検索アプリです。 Ads for web 「駅すぱあと」アプリに蓄積した移動予測データ スマートフォンやパソコンで 内の駅・路線・交通種別等にてセグメントする 経路検索/時刻表検索/運行情報などが 精度の高い広告メニューを提供しています。 いつでも無料で利用できるWebサイトです。 Copyright Val Laboratory Corporation All Rights Reserved.
  6. MCPサーバーのToolの実装方法(typescript-sdkの場合) import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { z

    } from "zod"; const server = new McpServer({ name: "weather", version: "1.0.0" }); server.registerTool( "get_forecast", // Tool名の定義 // 入力スキーマの定義 (LLM向けのToolの説明文、パラメータ、など) { description: "Get weather forecast for a location", latitude: z.number(), longitude: z.number() }, // 任意の処理を実装(例: 外部API呼び出し) async ({ latitude, longitude }) => { … // MCP仕様に沿った形式で値を返す return { content: [{ type: "text", text: `Temperature: ${temperature}${unit}, ...` }] } } ); Toolの実装の流れ: ① Tool名を定義 ② 入力スキーマを定義 ③ 処理ロジックの実装 ④ 返り値を実装 WebAPIの開発経験があれば、 似た要領でToolを実装できる (それほど難しくはない) 12 Copyright Val Laboratory Corporation All Rights Reserved.
  7. MCPサーバーで提供しているTool(一部紹介) Tool名 Toolの概要 内部で呼び出される「駅すぱあと API」 ekispert_api_get_stations 駅の情報(駅名称、駅コード、 (駅情報取得Tool) 座標、など)を取得する ekispert_api_generate_condition

    経路探索で使用する詳細な (探索条件生成Tool) 探索条件を生成する ekispert_api_search_routes 2地点間(経由駅を含む)に (経路探索Tool) おける経路探索を行う • GET: /station/light (デフォルト) or • GET: /station • GET: /toolbox/course/condition • GET: /search/course/extreme ツールの命名規則: ekispert_api_get_stations プレフィックス 動詞 Copyright Val Laboratory Corporation All Rights Reserved. 名詞 15
  8. 「駅すぱあと API MCPサーバー」でできること お客様がお持ちのデータ × 「駅すぱあと API MCPサーバー」を掛け合わせることで 公共交通に関わる様々な課題を解決可能に NEW

    NEW NEW 2026/09/03の機能アップデート で、より様々なシーンでお使いいただけるようになりました! 17 Copyright Val Laboratory Corporation All Rights Reserved.
  9. WebAPIをTool化する際のよくある悩み 個々のAPI毎にTool化すべきか vs 複数のAPIを呼び出す ひとまとまりのToolにすべきか API: A Small Tool: A

    API: A API: B Small Tool: B API: B API: C Small Tool: C API: C Large Tool: X 19 Copyright Val Laboratory Corporation All Rights Reserved.
  10. 「駅すぱあと API MCPサーバー」で採用した方針 個々のAPI毎にTool化すべきか vs 複数のAPIを呼び出す ひとまとまりのToolにすべきか 駅情報取得API 駅情報取得Tool 駅情報取得API

    探索条件生成API 探索条件生成Tool 探索条件生成API 経路探索API 経路探索Tool 経路探索API 総合経路探索Tool 20 Copyright Val Laboratory Corporation All Rights Reserved.
  11. デモ①の解説 プロンプト: 「梅田から新大阪までの10時発の経路を調べて」 ユーザーの指示 思考 経路探索Tool Input: viaList: 梅田:新大阪、time: 1000

    → 🔴Error: 駅が見つかりません(梅田) 思考 駅情報取得Tool 思考 経路探索Tool Input: name: 梅田 → 🟢Success: 「梅田(地下鉄) / 29089」「大阪梅田(阪急線) / 25848」... 「梅田」の文字列から駅の正式名称や駅コードを取得 Input: viaList: 29089:新大阪、time: 1000 → 🟢Success: (経路探索結果を取得) 思考 ユーザーへの回答 入力された駅名があいまいでも、LLMが駅情報取得Toolを使って駅の正式名称や駅コードを取得してくれる(柔軟に対応してくれる) Copyright Val Laboratory Corporation All Rights Reserved. 22
  12. デモ②の解説 プロンプト: 「新宿から甲府まで、バスや特急をそれぞれ使う/使わない場合の明日10時発の経路を調べて」 ユーザーの指示 バス・特急を使う/使わない計4通りの探索条件を生成 探索条件生成Tool 探索条件生成Tool 探索条件生成Tool 探索条件生成Tool 並列実行

    各探索条件を使って、それぞれ経路探索を実行 経路探索Tool 経路探索Tool 経路探索Tool 経路探索Tool 並列実行 ユーザーへの回答 パラメータを変えて同じツールを同時並行に複数回実行するなど、LLMが賢くToolを呼び出してくれる Copyright Val Laboratory Corporation All Rights Reserved. 24
  13. 「駅すぱあと API MCPサーバー」で採用した方針 個々のAPI毎にTool化すべきか vs 複数のAPIを呼び出す ひとまとまりのToolにすべきか 駅情報取得API 駅情報取得Tool 駅情報取得API

    探索条件生成API 探索条件生成Tool 探索条件生成API 経路探索API 経路探索Tool 経路探索API 総合経路探索Tool → LLMがユーザーの要望に応じて柔軟な経路探索を行える 25 Copyright Val Laboratory Corporation All Rights Reserved.
  14. 個人の見解:絶対的な正解はない(サービス毎で異なる) 個々のAPI毎にTool化する場合 vs 複数のAPIを呼び出す ひとまとまりのToolにする場合 API: A Small Tool: A

    API: A API: B Small Tool: B API: B API: C Small Tool: C API: C Large Tool: X • LLMがToolを柔軟に組み合わせ可能 • LLMがTool選択で迷いづらい • Toolの再利用性・汎用性が高い • トークン消費・応答速度を抑えやすい 26 Copyright Val Laboratory Corporation All Rights Reserved.
  15. 個人の見解:Tool設計における観点 正確性 • • LLMが意図通りのToolを選択できるか LLMがユーザーの目的に到達できるか 効率性 • LLMが短時間で目的に到達できるか コスト

    • • 適切なトークン消費量かどうか 適切なAPIコール数かどうか※ ※:特に、APIコール数に応じた従量課金モデルのMCPサーバーの場合 Copyright Val Laboratory Corporation All Rights Reserved. 27
  16. 正確性 • • LLMが意図通りのToolを選択できるか LLMがユーザーの目的に到達できるか 提供するToolが多い場合 提供するToolが少ない場合 利用可能なTool 利用可能なTool Tool:

    A LLM Tool: B LLM Tool: X Tool: C Toolを組み合わせて様々なタスクに対処可能 特定のタスクを確実に遂行できる 使用すべきToolの判断を誤る確率が高まる 複雑な指示には応えられない可能性がある 28 Copyright Val Laboratory Corporation All Rights Reserved.
  17. 効率性 • LLMが短時間で目的に到達できるか 提供するToolが多い場合 提供するToolが少ない場合 ユーザーの指示 思考&Tool選択 Tool: A 実行

    ユーザーの指示 思考&Tool選択 全体の 処理時間 Tool: B 実行 思考&Tool選択 思考&Tool選択 全体の 処理時間 Tool: C 実行 Tool: X 実行 思考 ユーザーへの回答 思考 ユーザーへの回答 効率性に関しては、呼び出す必要のあるToolが少ないほうが有利 Copyright Val Laboratory Corporation All Rights Reserved. 29
  18. コスト • • 適切なトークン消費量かどうか 適切なAPIコール数かどうか 提供するToolが多い場合 LLM 使用可能な コンテキスト 領域

    利用可能なTool Tool: A Tool: B Toolをロードした コンテキスト領域 Tool: C 提供するToolが少ない場合 LLM 利用可能なTool 使用可能な コンテキスト 領域 Tool: X Toolをロードした コンテキスト領域 トークン消費量を節約できれば、LLMの利用料を抑えられることに繋がる コスト面だけでなく、使用済みのコンテキストサイズを抑えるほど、LLMの作業の精度は上がる 30 Copyright Val Laboratory Corporation All Rights Reserved.
  19. コスト • • 適切なトークン消費量かどうか 適切なAPIコール数かどうか 何らかの理由で、LLMが同一Toolを再実行する判断をした場合を仮定: 個々のAPIをTool化していた場合 複数のAPIを呼び出すToolにしていた場合 API: A

    Small Tool: A API: A API: B Small Tool: B API: B API: C Small Tool: C API: C Large Tool: X 「Small Tool: C」が再度呼び出されるとした場合、 「Large Tool: X」が再度呼び出されるとした場合、 実際に呼び出されるAPIは「C」のみで済む 不要に「A〜C」の各APIが呼び出されてしまう 31 Copyright Val Laboratory Corporation All Rights Reserved.
  20. コスト(「駅すぱあと API MCPサーバー」における工夫) Tool名 内部で呼び出される「駅すぱあと API」 • 無償 GET: /station/light

    (デフォルト) or 有償 GET: /station • 無償 GET: /toolbox/course/condition • 有償 GET: /search/course/extreme • ekispert_api_get_stations (駅情報取得Tool) ekispert_api_generate_condition (探索条件生成Tool) ekispert_api_search_routes (経路探索Tool) 仮に、LLMが暴走しても(不要に様々なToolを呼び出してしまっても)、 基本的に「経路探索Tool」が呼び出されない限りは課金が発生しない仕組みにしている Copyright Val Laboratory Corporation All Rights Reserved. 32
  21. 個人の見解:Tool設計における観点 正確性 • • LLMが意図通りのToolを選択できるか LLMがユーザーの目的に到達できるか 効率性 • LLMが短時間で目的に到達できるか コスト

    • • 適切なトークン消費量かどうか 適切なAPIコール数かどうか※ ※:特に、APIコール数に応じた従量課金モデルのMCPサーバーの場合 Copyright Val Laboratory Corporation All Rights Reserved. 33
  22. APIドキュメントの llms.txt 化 • llms.txtとは: Webサイトの全体像をLLMに伝えるためのテキストファイル • 参考: 「駅すぱあと API」公式ドキュメント(

    トップページ | llms.txt ) • APIドキュメントを llms.txt 対応するメリット: ◦ 主な効果:LLMからのWebサイトへの流入。LLMもAPIの仕様を理解できるようになる。 ◦ 副次効果:CLAUDE.md / AGENTS.md に記載すれば、MCPサーバーの開発作業でも活用できる。 CLAUDE.mdへの記載例 Tool で呼び出す WebAPI の仕様は、 https://docs.ekispert.com/llms.txt を必ず参照して。 35 Copyright Val Laboratory Corporation All Rights Reserved.
  23. 詳細は書籍で! 「Software Design 2026年4月号」にて 「駅すぱあと API MCPサーバー」の 開発ノウハウを寄稿させていただきました。 本日お話ししたような内容以外にも、 既存WebAPIをAIを活用して効率よくTool実装を

    進めるための開発ノウハウなども紹介しています。 ご興味のある方は是非お読みください! 39 Copyright Val Laboratory Corporation All Rights Reserved.
  24. 今週はまだまだ福岡で面白そうなイベントがいっぱいあります! Developers Summit 2026 FUKUOKA Zenn Agentic AI Hackathon 2026/09/11

    13:00 ~ 18:40 2026/09/11 19:00 ~ 2026/09/12 17:00 ONE FUKUOKA CONFERENCE HALL(天神駅直結) 福岡舞鶴スクエア(赤坂駅から徒歩4分) なんと、ハシゴできる距離・時間です! 42 Copyright Val Laboratory Corporation All Rights Reserved.
  25. We are hiring! ヴァル研究所では、一緒に働く仲間を募集中です!! • フロントエンドエンジニア • アプリエンジニア • バックエンドエンジニア

    • ITソリューション営業、など • カジュアル面談も行っています! 採用情報 43 Copyright Val Laboratory Corporation All Rights Reserved.