项目简介

该项目是基于 Cloudflare Workers 和 MCP (Model Context Protocol) 实现的一个应用后端服务器。它通过集成美国国家公园服务 (NPS) API、Recreation.gov API 和第三方天气 API,为大型语言模型 (LLM) 客户端提供关于美国国家公园的丰富上下文信息和实用功能。开发者可以部署此服务器,使 LLM 能够直接查询公园详情、景点、活动、天气预报、露营地和步道信息。

主要功能点

该 MCP 服务器通过一系列工具 (Tools) 和资源 (Resources) 提供以下核心功能:

  • 获取公园详情: 查询指定国家公园的综合信息,包括概况、位置、费用、开放时间、活动列表、图片以及当前状态(如警报、天气、事件、露营地)。
  • 查找公园: 根据关键词、州代码或可用活动查找国家公园。
  • 获取公园警报: 查看指定国家公园当前的警报、封闭信息和通知。
  • 获取公园活动: 查询指定国家公园近期(通常是未来 14-30 天)的活动列表。
  • 获取公园露营地: 列出指定国家公园内的露营地及其详细信息(如营位数、费用、预订信息)。
  • 获取步道信息: 查询指定国家公园的步道信息,可按难度、长度等过滤。
  • 获取公园天气: 获取指定国家公园的详细天气预报。
  • 规划公园行程: 基于天气预报和公园信息,为访问指定国家公园提供规划建议。
  • 查找附近休闲: 搜索指定地点附近(如国家公园、休闲区域)的休闲设施和露营选项。

此外,服务器还提供了可供 LLM 访问的静态信息资源,例如国家公园列表和活动类型列表。

安装步骤

该项目设计用于部署在 Cloudflare Workers 环境中。

  1. 克隆仓库: 使用 Git 命令将仓库克隆到本地。
    git clone https://github.com/Kyle-Ski/nps-explorer-mcp-server.git
    cd nps-explorer-mcp-server
  2. 配置环境变量: 复制示例环境变量文件并填充你的 API 密钥和其他秘密信息。你需要自行申请 National Park Service API, Recreation.gov API, Weather API 的密钥。如果需要 GitHub OAuth 功能(通常用于某些 LLM 客户端的身份验证集成),还需要配置 GitHub OAuth App 的信息。
    cp .dev.vars.example .dev.vars
    # 然后编辑 .dev.vars 文件,填入你的 API 密钥、GitHub OAuth ID/Secret 和 COOKIE_ENCRYPTION_KEY。
  3. 安装依赖: 进入项目目录,使用 npm 安装所需的依赖包。
    npm install
  4. 部署到 Cloudflare: 使用 Wrangler CLI 工具将项目部署到你的 Cloudflare Workers 账户。确保你已安装并配置 Wrangler。
    npm run deploy
    部署过程可能需要配置 Cloudflare Workers KV namespace ('OAUTH_KV') 和设置 secrets('GITHUB_CLIENT_ID', 'GITHUB_CLIENT_SECRET', 'COOKIE_ENCRYPTION_KEY', 'NPS_API_KEY', 'RECGOV_API_KEY', 'WEATHER_API_KEY', 'ANTHROPIC_API_KEY')。具体步骤请参考 Wrangler 文档和项目 README。

服务器配置(供 MCP 客户端使用)

要将此 MCP 服务器连接到 LLM 客户端(如 Claude Desktop 或其他支持 MCP 的客户端),客户端需要知晓如何连接到服务器。对于部署在 Cloudflare Workers 上的网络服务,客户端通常需要提供服务器的名称、连接类型(通常是 WebSocket 或 HTTP/S)以及网络地址(URL)。

一个典型的 MCP 客户端配置(JSON 格式)可能如下所示:

{
  "server name": "NPS MCP Server",
  "connection": "websocket", // 或 "https", "http" 取决于客户端和服务器的实现
  "address": "wss://<你的 Cloudflare Worker URL>/mcp", // 如果使用 WebSocket
  // 或者 "address": "https://<你的 Cloudflare Worker URL>/mcp", // 如果使用 HTTP/S
  "description": "Provides access to US National Parks data and tools via NPS, Rec.gov, and Weather APIs."
}
  • '"server name"': 服务器在 MCP 协议中声明的名称,客户端以此名称识别服务器。本项目代码中定义为 '"NPS MCP Server"'。
  • '"connection"': 客户端与服务器建立连接的协议类型。由于 Cloudflare Workers 支持 WebSocket 升级,且 MCP 常用 WebSocket 作为网络传输协议,此处通常配置为 '"websocket"'。具体需参考 LLM 客户端的配置文档和服务器的实际暴露方式。
  • '"address"': 服务器的网络地址。通常是你的 Cloudflare Worker 部署后分配的 URL,加上服务器监听 MCP 请求的路径(本项目代码中配置为 '/mcp')。请将 '<你的 Cloudflare Worker URL>' 替换为你实际部署的 Worker URL。

请查阅你的 MCP 客户端的具体文档,了解如何导入或手动添加 MCP 服务器配置。

基本使用方法

成功将服务器配置到你的 LLM 客户端后,客户端应该能够发现并加载服务器提供的工具和资源。你可以像使用内置功能一样与 LLM 对话,LLM 会根据你的问题自动调用相应的 MCP 工具来获取信息。

例如,你可以问:

  • "告诉我关于 Yosemite 国家公园的详细信息。" (LLM 可能会调用 'getParkInfo')
  • "查找加州(CA)有哪些国家公园?" (LLM 可能会调用 'findParks' 或 'searchParksByState')
  • "黄石国家公园(YELL)最近有什么警报吗?" (LLM 可能会调用 'getParkAlerts')
  • "规划一下本周末访问大峡谷国家公园(GRCA)的行程,考虑天气情况。" (LLM 可能会调用 'planParkVisit' 并可能结合天气工具)
  • "西雅图附近有什么休闲活动或露营地推荐吗?" (LLM 可能会调用 'findNearbyRecreation')

LLM 会向 MCP 服务器发送 JSON-RPC 请求,服务器处理请求并返回结果,LLM 再将结果整合进对话中。

信息

分类

网页与API