mcpField
M
Multi Context Protocol (MCP) Server

Multi Context Protocol (MCP) Server

ローカル
github.com/prakashsanker地図・旅行984 週間前に更新

Multi Context Protocol (MCP) Server について

フライト、ホテル、時間に関する質問に対応する旅行計画向け MCP サーバーです。Booking.com API によるフライト検索、ホテル検索、現在の日付の提供を AI クライアント向けに行います。

主な機能

  1. 01空席のあるフライト検索
  2. 02ホテルと宿泊施設の検索
  3. 03現在の日付の提供

活用シーン

  1. 01指定時刻までに到着できる便の検索
  2. 02ランドマークから徒歩圏内のホテル探し

MCP 対応

フライト検索、ホテル検索、現在の日付の機能を MCP クライアントに提供します。README では Claude Desktop または独自クライアントでの利用方法が記載されています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"flights-mcp-server-prakashsanker": {
"command": "npx",
"args": [
"-y",
"travel-mcp-server"
],
"env": {
"BOOKING_COM_API_KEY": "<BOOKING_COM_API_KEY>",
"GOOGLE_MAPS_API_KEY": "<GOOGLE_MAPS_API_KEY>"
}
}
}
}
起動コマンドnpx -y travel-mcp-server
設定が必要な環境変数
BOOKING_COM_API_KEYシークレット
GOOGLE_MAPS_API_KEYシークレット

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmtravel-mcp-server
ocimcp/google-maps

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

✈️ Multi Context Protocol(MCP)サーバー

🌟 概要

これは、複雑な旅行計画に関する質問をできる汎用的な旅行 MCP サーバーです。次のような質問を試してみてください。

  • 明日の午後4時までに Google のオフィスに着く必要があります。何時発の便に乗ればよいですか?
  • エッフェル塔から徒歩15分の、手頃な価格のホテルに泊まりたいです。おすすめをいくつか教えてください。

🔧 対応機能

🛫 search-flights

Booking.com の API を通じて、2つの空港間で利用可能なフライトを検索します。

📅 today

LLM に現在の日付を提供し、最新の時間的コンテキストを確保します。

🏨 search-hotels

利用可能なホテルや宿泊施設を検索します。

🔮 今後追加予定の機能

🚗 search-car-rentals

目的地で利用できるレンタカーを検索します。

⭐ hotel-reviews

ホテルや宿泊施設のレビューを確認します。

🚕 search-taxis

目的地で利用できるタクシーや送迎サービスを検索します。

📦 インストール

この MCP サーバーは、Claude Desktop または独自のクライアントで使用できます。

前提条件
  1. RapidAPI にアクセスし、booking.com API を探して、API キーを取得します。
  2. Google Cloud にアクセスし、Google Maps API キーを取得します。
Claude Desktop での使用

Claude Desktop で使用するには、以下の claude_desktop_config.json を使用します。

{
  "mcpServers": {
    "travel": {
      "command": "npx",
      "args": ["travel-mcp-server"],
      "env": {
        "BOOKING_COM_API_KEY": "<YOUR_BOOKING_DOT_COM_API_KEY>"
      }
    },
    "google-maps": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GOOGLE_MAPS_API_KEY",
        "mcp/google-maps"
      ],
      "env": {
        "GOOGLE_MAPS_API_KEY": "<YOUR_GOOGLE_MAPS_API_KEY>"
      }
    }
  }
}

これを使用するには、Google Maps API キーを取得する必要があります。

プログラムからの使用

プログラムから使用する場合は、次のコードスニペットを参照してください。

class TravelClient {
  private flightsClient: Client;
  private mapsClient: Client;
  private toolDefinitions: any[] = [];

  constructor() {
    this.flightsClient = new Client(
      { name: "FlightsApp", version: "1.0.0" },
      { capabilities: { tools: {}, resources: {}, prompts: {} } }
    );
    this.mapsClient = new Client(
      { name: "MapsApp", version: "1.0.0" },
      { capabilities: { tools: {}, resources: {}, prompts: {} } }
    );
  }

  async initialize() {
    console.log("Initializing MCP clients...");
    try {
      const flightsTransport = new StdioClientTransport({
        command: "node",
        args: ["../../node_modules/travel-mcp-server/build/index.js"],
      });

      console.log("GOOGLE MAPS API KEY", process.env.GOOGLE_MAPS_API_KEY);
      const mapsTransport = new StdioClientTransport({
        command: process.execPath,
        args: [
          "../../node_modules/@modelcontextprotocol/server-google-maps/dist/index.js",
        ],
        env: {
          GOOGLE_MAPS_API_KEY: process.env.GOOGLE_MAPS_API_KEY || "",
        },
      });

      await Promise.all([
        this.flightsClient.connect(flightsTransport),
        this.mapsClient.connect(mapsTransport),
      ]);

      // Discover tools from both servers
      console.log("Discovering tools...");
      const [flightsTools, mapsTools] = await Promise.all([
        this.flightsClient.listTools(),
        this.mapsClient.listTools(),
      ]);

      // Combine tools from both servers
      this.toolDefinitions = [
        ...flightsTools.tools.map((tool) => ({
          name: tool.name,
          description: tool.description || `Tool: ${tool.name}`,
          input_schema: tool.inputSchema,
        })),
        ...mapsTools.tools.map((tool) => ({
          name: tool.name,
          description: tool.description || `Tool: ${tool.name}`,
          input_schema: tool.inputSchema,
        })),
      ];

      console.log(`Discovered ${this.toolDefinitions.length} tools`);
      return this;
    } catch (error) {
      console.error("Error initializing MCP clients:", error);
      throw error;
    }
  }

  async callTool(toolName: string, parameters: any) {
    const tool = this.toolDefinitions.find((t) => t.name === toolName);
    if (!tool) {
      throw new Error(`Tool ${toolName} not found`);
    }

    // Determine which client to use based on the tool name
    const client = toolName.includes("maps")
      ? this.mapsClient
      : this.flightsClient;

    const toolRequest = {
      name: toolName,
      arguments: parameters,
    };

    const result = await client.callTool(toolRequest);
    return result;
  }

  async getToolDefinitions() {
    return this.toolDefinitions;
  }
}

export default TravelClient;

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。