mcpField
M
MCP Server Project (Proof of Concept)

MCP Server Project (Proof of Concept)

本地服务
github.com/BayernTourismus地图与出行217 周前更新

关于 MCP Server Project (Proof of Concept)

面向使用巴伐利亚旅游数据的 AI 助手,连接 BayernCloud Tourismus API,搜索活动、路线、景点和餐饮信息。还提供分类查询、地理编码和距离计算工具。

主要功能

  1. 01按位置和条件搜索活动
  2. 02筛选路线并获取海拔剖面
  3. 03搜索景点与餐饮场所
  4. 04获取条目详情和分类
  5. 05地址与坐标双向地理编码
  6. 06计算驾车及直线距离

适用场景

  1. 01查找指定日期和范围内的旅游活动
  2. 02按长度或爬升筛选徒步路线
  3. 03根据坐标查找附近景点和餐厅
  4. 04将地址转换为坐标并估算距离

MCP 相关

将 BayernCloud Tourismus API 的搜索、详情、分类及地理工具作为 MCP 工具提供给客户端。API 令牌保留在服务端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

BayernCloud MCP 服务

一个 Model Context Protocol (MCP) 服务,可向 Claude 等 AI 助手提供 BayernCloud Tourismus API。为巴伐利亚旅游数据提供搜索、筛选和地理工具,涵盖活动、游览路线、POI 和餐饮。

工具

搜索
工具说明
search_events按地理半径、日期范围、全文和分类搜索活动
search_tours搜索游览路线,可按长度、爬升高度(Höhenmeter)、时长和环线筛选
search_pois按地理位置、全文和分类搜索兴趣点
search_gastronomy按地理位置、全文和分类搜索餐厅、咖啡馆和酒吧
详情
工具说明
get_item根据 UUID 获取任意项目的完整详情
get_elevation_profile获取游览路线的高程剖面(Höhenprofil)
分类
工具说明
list_classification_trees获取所有可用的分类树(缓存 30 分钟)
get_classifications获取分类树中的类别 — 使用 ID 筛选搜索结果
实用工具
工具说明
suggest为活动、游览路线或 POI 提供标题自动补全
geocode地址 → 坐标
reverse_geocode坐标 → 地址
route_distance计算两点之间的驾车距离(OSRM)
haversine_distance计算两点之间的直线距离

设置

前提条件
安装
git clone <repo>
cd mcp-server
npm install
npm run build
配置

将 .env.example 复制为 .env 并填写相应值:

BCT_API_TOKEN=your_token_here
BAYERN_CLOUD_API_URL=https://data.bayerncloud.digital/api/v4

# Endpoint UUIDs — copy from the end of the endpoint URL in the BayernCloud portal
BCT_ENDPOINT_EVENTS=107df2c2-ff3e-4eaa-b24c-863d85d505d1
BCT_ENDPOINT_TOURS=cd177e6a-c6db-4efd-84a6-decf4a3711de
BCT_ENDPOINT_POIS=7b228c8c-23f5-49b9-b55e-e18e73386fbb
BCT_ENDPOINT_GASTRONOMY=5453abda-5e76-43f0-acdf-4855c3cb351e

# Geocoding (optional — defaults shown)
NOMINATIM_BASE_URL=https://nominatim.openstreetmap.org
OSRM_BASE_URL=http://router.project-osrm.org

使用方法

本地运行(Claude Desktop)

添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "bayerncloud-mcp": {
      "command": "node",
      "args": ["/path/to/mcp-server/dist/index.js"]
    }
  }
}
公共 HTTP 服务

该服务也可作为公共 HTTP 端点运行(使用 Streamable HTTP 传输,每个 IP 的速率限制为每分钟 60 个请求):

PORT=3000 npm run start:http

端点:

  • POST /mcp — MCP 端点
  • GET /health — 健康检查

将其作为远程 MCP 服务添加到 Claude:

{
  "mcpServers": {
    "bayerncloud-mcp": {
      "type": "http",
      "url": "https://your-deployment.example.com/mcp"
    }
  }
}
部署到 Railway
npm run build
railway login && railway init && railway up

在 Railway 控制面板中设置 .env 中的相同环境变量。PORT 会自动设置。

开发

npm run build      # compile TypeScript → dist/
npm run start      # run stdio server (local)
npm run start:http # run HTTP server (public)
npm run dev        # watch mode

架构

src/
  index.ts          # stdio entry point (Claude Desktop)
  server-http.ts    # HTTP entry point (public deployment)
  lib/
    create-server.ts  # registers all tools on an McpServer instance
    bct.ts            # BayernCloud API client
    config.ts         # environment variables + dotenv
    format.ts         # response formatters (strips JSON-LD overhead)
    cache.ts          # TTL cache for classification data
    nominatim.ts      # Nominatim + OSRM client
  tools/
    events.ts         # search_events
    tours.ts          # search_tours
    pois.ts           # search_pois
    gastronomy.ts     # search_gastronomy
    item.ts           # get_item
    elevation.ts      # get_elevation_profile
    classifications.ts # list_classification_trees, get_classifications
    suggest.ts        # suggest
    geocoding.ts      # geocode, reverse_geocode, route_distance, haversine_distance

无论本地还是公共部署,BCT API 令牌都不会暴露给客户端,而是保留在服务端。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。