项目简介
该仓库提供了两个基于Model Context Protocol (MCP) 的服务器实现:
- Nominatim MCP 服务器: 提供基于OpenStreetMap数据的地址解析、地理编码(地址转坐标)、反向地理编码(坐标转地址)和距离计算功能。
- BayernCloud Tourismus MCP 服务器: 提供访问拜仁云旅游API的能力,用于查询指定地点和日期范围内的旅游活动。
这些服务器可以与支持MCP协议的大语言模型(如Claude)集成,为LLM应用提供丰富的地理位置和旅游信息上下文。
主要功能点
- 地理编码 (Geocoding): 将文本地址转换为经纬度坐标。
- 反向地理编码 (Reverse Geocoding): 将经纬度坐标转换为可读的地址。
- 距离计算: 计算两个地理位置之间的直线距离(Haversine公式)或基于道路网络的路线距离(通过OSRM)。
- 旅游活动查询: 根据地理位置、搜索半径和日期范围,查询拜仁地区的旅游活动列表。
安装步骤
-
安装 Node.js: 确保您的系统安装了 Node.js (v14 或更新版本)。
-
克隆仓库: 使用 'git clone' 命令克隆本仓库到本地目录。
git clone https://github.com/BayernTourismus/mcp-server.git -
安装依赖: 进入仓库目录,运行 npm 安装依赖。
cd mcp-server npm install -
配置环境变量: 在仓库根目录创建 '.env' 文件,并根据您的需求填写以下变量。
- 'BCT_API_TOKEN': 拜仁云旅游API密钥 (如需使用旅游活动查询功能,请在此获取: 'https://bayerncloud.digital/')
- 'NOMINATIM_BASE_URL': Nominatim API的基础URL (默认为 'https://tourismuswissen.bayern:8081',也可使用公共的 'https://nominatim.openstreetmap.org')
- 'OSRM_BASE_URL': OSRM API的基础URL (默认为 'http://router.project-osrm.org/')
- 'BAYERN_CLOUD_API_URL': 拜仁云API的基础URL (默认为 'https://data.bayerncloud.digital/api/v4/endpoints')
'.env' 文件示例:
BCT_API_TOKEN=your_bayern_cloud_api_token NOMINATIM_BASE_URL=https://nominatim.openstreetmap.org OSRM_BASE_URL=http://router.project-osrm.org BAYERN_CLOUD_API_URL=https://data.bayerncloud.digital/api/v4/endpoints
MCP客户端配置
要将这些MCP服务器与支持MCP协议的LLM客户端(如Claude Desktop)集成,您需要在客户端的配置文件中添加相应的服务器条目。通常,这涉及指定服务器的名称、传输类型和启动命令。
以下是一个示例配置片段,您可以将其添加到客户端的服务器配置 JSON 文件中。请将 '/path/to/your/mcp-server/' 替换为您实际克隆本仓库的目录路径。
{ "servers": { "mcp-server-nominatim": { "type": "stdio", "command": "node", "args": [ "/path/to/your/mcp-server/src/nominatim.js" ] }, "mcp-events-bct": { "type": "stdio", "command": "node", "args": [ "/path/to/your/mcp-server/src/bayerncloud.js" ] } } }
- '"mcp-server-nominatim"' 和 '"mcp-events-bct"': 这是您为MCP服务器定义的内部名称,用于在客户端中引用它们。
- '"type": "stdio"': 指定服务器使用标准输入/输出 (stdio) 作为通信方式。这是MCP协议的一种常见传输方式。
- '"command": "node"': 这是用于启动服务器进程的命令。由于服务器是Node.js脚本,此处使用 'node' 命令。
- '"args": [...]': 这是传递给 'command' 命令的参数列表。它包含了服务器脚本文件的完整路径 ('/path/to/your/mcp-server/src/nominatim.js' 或 '/path/to/your/mcp-server/src/bayerncloud.js'),告诉 Node.js 应该执行哪个脚本。
完成配置后,重启您的LLM客户端,客户端将尝试连接并初始化这些MCP服务器。
基本使用方法
一旦MCP服务器在客户端中成功配置并启动,LLM将能够识别服务器提供的工具。当您在与LLM的对话中提出需要地理位置信息或旅游活动查询的问题时,LLM会根据其能力判断是否需要调用相应的MCP工具。
例如,您可以问LLM:
- "请告诉我从慕尼黑到柏林的路线距离是多少?"
- "请将'埃菲尔铁塔'转换为经纬度坐标。"
- "我在[坐标],请告诉我附近的地址。"
- "下周在慕尼黑附近有什么旅游活动?"
LLM会通过MCP协议调用 Nominatim 或 BayernCloud 服务器上对应的工具,获取结果后将其整合到对话响应中。
信息
分类
网页与API