Token导航 LogoToken导航TokenDH.com
MCP Server Flightsearch logo
AI代理未说明官方级别未说明来源级核验

MCP Server Flightsearch

MCP Server

一个基于MCP协议和SerpAPI的航班信息查询工具服务器,用于与AI代理(如Semantic Kernel)集成,提供实时航班搜索功能。

工具数

1

提示词数

0

GitHub Stars

0

资源数

0
JavaScriptAI工具集成本地部署

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Joe-Hodkinson

提供方

Joe-Hodkinson

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

集成SerpAPI的MCP飞行服务器

⚠️ 注: 这个项目是在人工智能的帮助下开发的,以帮助我学习和实验 模型上下文协议(MCP).\ 这是一个学习和演示项目,旨在了解如何构建一个符合MCP标准的工具服务器,以与人工智能代理集成,特别是微软的 语义内核 框架。

______________________________________________________________________

什么是MCP?(模型上下文协议)

模型上下文协议(MCP) 是一种新兴的开放协议,旨在标准化人工智能模型(或“代理”)如何与外部工具、服务或子流程交互。目标是允许大型语言模型(LLM)和编排器通过交换与专用工具无缝通信 JSON-RPC 2.0 标准输入/输出(stdin/stdout)上的消息。

关键思想:

  • JSON-RPC 2.0:MCP使用这种轻量级RPC格式 method, params, id,以及 jsonrpc 领域。
  • 工具发现:代理可以请求服务器支持的工具列表(mcp/listTools).
  • 工具调用:代理可以调用工具(mcp/invokeTool)按名称使用JSON有效载荷。
  • 标准化输入/输出:所有通信都是通过stdin/stdout上的JSON消息进行的,不需要HTTP。
  • 可扩展性:您可以在遵守此格式的同时添加新的工具或方法。

______________________________________________________________________

为什么MCP对语义内核很重要?

微软的 语义内核 框架使用MCP作为其调用外部“插件”或“工具”的通信契约。当您将自定义工具服务器与语义内核集成时:

  • 内核在stdin上向工具服务器进程发送JSON-RPC请求
  • 您的服务器解析JSON-RPC方法和参数
  • 您的服务器执行请求的操作(例如,航班搜索)
  • 您的服务器返回具有结构化结果的JSON-RPC响应

这种标准化允许您用任何语言编写任何工具,只要它遵循MCP规范。内核可以 动态调用工具,对其输入/输出进行推理,并将其链接到人工智能计划或工作流程中。

______________________________________________________________________

语义内核如何期望请求和响应

语义内核发送如下请求:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "mcp/invokeTool",
  "params": {
    "toolName": "getFlightInfo",
    "arguments": {
      "from": "MAN",
      "to": "CDG",
      "date": "2025-08-20"
    }
  }
}
  • method:必须是 "mcp/invokeTool" 调用工具
  • params.toolName:要调用的工具的名称(例如。, "getFlightInfo")
  • params.arguments:具有工具特定输入参数的JSON对象

您的服务器必须以JSON-RPC 2.0响应进行响应,例如:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "tool_result",
        "data": "{ "flights": [ ... ] }"
      }
    ],
    "isError": false
  }
}
  • data 字段是一个带有工具结果的JSON字符串化对象。
  • 外部包装严格遵循JSON-RPC 2.0规范。
  • 如果发生错误,请返回带有适当代码和消息的错误响应。

______________________________________________________________________

集成SerpAPI的MCP飞行服务器

此服务器是一个Node.js工具服务器,它:

  • 实现MCP JSON-RPC方法用于工具发现和调用
  • 使用SerpAPI的Google Flights API查找航班
  • 规范并返回为AI消费而格式化的航班数据
  • 稳健地处理日志记录、错误和输入验证

______________________________________________________________________

特性

  • ✅ 完全符合MCP(initialize, mcp/listTools, mcp/invokeTool)
  • 🔑 通过客户端安全地注入API密钥
  • 🛫 使用SerpAPI进行实时航班搜索
  • 📄 返回标准化航班,包括定价、持续时间、航段、碳排放等。

______________________________________________________________________

安装说明

先决条件

  • Node.js 18+
  • 来自的有效SerpAPI API密钥 https://serpapi.com
  • Git(可选,用于克隆仓库)

安装

git clone https://github.com/YOUR_USERNAME/mcp-flight-server.git
cd mcp-flight-server
npm install

🔐 API密钥配置

此服务器 需要SERPAPI_KEY 访问的环境变量 SerpAPI谷歌航班引擎然而,确实如此 管理身份验证本身——调用服务器的环境或客户端必须提供密钥。

在大多数情况下 MCP客户端 (例如语义内核)负责在启动服务器时设置环境变量。这允许服务器保持 无状态和便携,没有硬编码的秘密。

🧠 示例:从C#语义内核MCP客户端启动 您可以使用Semantic Kernel的McpClientFactory直接从C#启动MCP服务器:

await using IMcpClient flightsMcpClient = await McpClientFactory.CreateAsync(
    new StdioClientTransport(new()
    {
        Name = "Flights",
        Command = "node",
        Arguments = new[]
        {
            @"C:\path\to\your\mcp-flight-server-node\server.js"
        },
        EnvironmentVariables = new Dictionary
        {
            { "SERPAPI_KEY", "YOUR_KEY" } // Pass your SerpAPI key securely here
        },
        // Optional: specify working directory if needed
        // WorkingDirectory = @"C:\path\to\your\mcp-flight-server-node"
    }));

______________________________________________________________________

运行服务器

node index.js

服务器在stdin上监听JSON-RPC请求,并在stdout上写入JSON-RPC响应。

______________________________________________________________________

支持的方法和工具

方法说明
initializeMCP握手初始化
mcp/listTools返回支持的工具列表
mcp/invokeTool执行命名工具

工具

获取航班信息

  • 描述:使用SerpAPI Google Flights检索航班选项。
  • 输入架构:
{
  "type": "object",
  "properties": {
    "from": { "type": "string", "description": "Origin IATA code" },
    "to": { "type": "string", "description": "Destination IATA code" },
    "date": { "type": "string", "format": "date", "description": "Departure date YYYY-MM-DD" }
  },
  "required": ["from", "to", "date"]
}

______________________________________________________________________

JSON-RPC请求示例

初始化

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize"
}

列出工具

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "mcp/listTools"
}

调用航班搜索工具

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "mcp/invokeTool",
  "params": {
    "toolName": "getFlightInfo",
    "arguments": {
      "from": "LHR",
      "to": "JFK",
      "date": "2025-07-01"
    }
  }
}

______________________________________________________________________

航班搜索响应示例

{
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "content": [
      {
        "type": "tool_result",
        "data": "{"flights": [{ "price_usd": 500, "total_duration_minutes": 420, "carbon_emissions_grams": 90000, "layovers": ["AMS"], "segments": [{ "airline": "KLM", "flight_number": "KL1084", "from": "LHR", "to": "AMS", "departs": "2025-07-01T06:30", "arrives": "2025-07-01T08:30", "duration_minutes": 120, "airplane": "Boeing 737", "travel_class": "Economy" }]}]}"
      }
    ],
    "isError": false
  }
}

______________________________________________________________________

日志记录

所有服务器操作和错误都会用时间戳记录到:

C:\Temp\MCPServerLog.log

使用此文件进行调试和审计跟踪。

______________________________________________________________________

测试和调试提示

  • 使用命令行将JSON请求传输到服务器:
cat test-request.json | node index.js
  • 使用以下工具 jq 格式化JSON输出。
  • 测试错误场景,如缺少参数或格式错误的JSON,以确认稳健的处理。
  • 通过检查添加详细日志记录 C:\Temp\MCPServerLog.log.

______________________________________________________________________

未来增强功能(路线图)

  • 支持多航段和回程航班
  • Docker容器化,易于部署
  • 用于重复查询的缓存层

______________________________________________________________________

快乐编程,快乐飞行! 🛫🧠

目录标签

目录标签

JavaScriptAI工具集成本地部署航班搜索MCP协议JSON-RPCSerpAPI

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

1

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP