项目简介

这是一个基于Model Context Protocol (MCP) 构建的应用后端,它连接到英国地形测量局 (Ordnance Survey, OS) 的地理数据API。通过将复杂的OS API功能封装成标准化的MCP工具,该服务器使得大型语言模型 (LLM) 客户端能够方便地查询和利用地理数据,例如搜索地理特征、获取地块信息或查找关联的地址。

主要功能点

  • 地理集合访问: 列出和查询OS API中可用的地理特征集合信息。
  • 地理特征搜索: 支持根据空间范围(bbox)和属性过滤条件搜索地理特征。
  • 特定特征获取: 通过唯一标识符检索特定的地理特征详细信息。
  • 关联标识符查询: 查找与给定标识符(如UPRN、TOID)关联的其他类型标识符。
  • 批量操作: 支持一次性查询多个地理特征或关联标识符。
  • 地址查找: 利用OS Places API根据UPRN(英国唯一房产参考号)查找地址信息。
  • 内置安全措施: 包含基本的速率限制和简单的Prompt注入防护。
  • 多协议支持: 支持Stdio和Server-Sent Events (SSE) 两种传输协议。
  • Prompt模板: 提供预定义的Prompt模板,帮助LLM客户端更有效地使用工具。

安装步骤

  1. 安装 Python 3.11+: 确保您的系统安装了符合要求的Python版本。
  2. 获取 OS API Key: 您需要注册一个OS Data Hub账户并获取API Key。
  3. 设置环境变量: 将您的OS API Key设置为名为 'OS_API_KEY' 的环境变量。
  4. 安装依赖: 在项目目录下,使用 pip 或 uv 安装所需的Python库:
    pip install -r requirements.txt 
    # 或者使用 uv
    # uv sync 
    (注:仓库代码中提到了 'aiohttp, mcp[cli]',实际运行通常需要 'requirements.txt' 文件或通过其他方式管理依赖。)

服务器配置

MCP服务器需要由MCP客户端(如支持MCP的LLM应用)来启动和管理。您需要在您的MCP客户端的配置中添加该服务器的信息。以下是一个典型的JSON配置示例,您需要根据您的实际情况修改路径:

{
  // ... 其他 MCP 服务器配置 ...
  "os-ngd-api": { 
    // 服务器的名称,用于在MCP客户端中识别
    "command": "/path/to/your/python/env/bin/python", // 启动Python解释器的命令路径
    "args": [
      "src/server.py", // MCP服务器脚本路径
      "--transport", "stdio" // 使用 stdio 协议启动
      // 或者使用 sse 协议:
      // "--transport", "sse", "--host", "127.0.0.1", "--port", "8000" 
    ],
    "env": {
      // 设置启动服务器进程所需的环境变量,例如OS API Key
      "OS_API_KEY": "your_api_key_here" 
      // 如果使用 stdio 协议且服务器需要认证,可能还需要:
      // "STDIO_API_KEY": "your_client_auth_key"
    }
  }
  // ... 其他 MCP 服务器配置 ...
}

重要提示:

  • 'command' 应指向您的Python环境中的 'python' 可执行文件路径。
  • 'args' 中的 'src/server.py' 应指向您下载的仓库中 'server.py' 文件所在的实际路径。
  • 您可以选择 '--transport stdio' 或 '--transport sse' 协议。stdio 更简单,适合本地运行;sse 适合作为HTTP服务运行。如果使用sse,需要指定 '--host' 和 '--port'。
  • 'env' 中务必设置 'OS_API_KEY' 为您的OS API Key。如果服务器配置了 stdio 认证(如代码所示的简单认证),也可能需要在 'env' 中设置 'STDIO_API_KEY'。

基本使用方法

  1. 配置客户端: 按照上述“服务器配置”部分,将该MCP服务器添加到您的MCP客户端(如Claude Desktop或其他兼容应用)的配置中。

  2. 启动客户端: 启动您的MCP客户端。客户端会根据配置尝试启动并连接该MCP服务器。

  3. 与LLM交互: 一旦服务器成功启动并连接,其提供的功能(如地理搜索、地址查找等)将作为工具供LLM使用。您可以直接向LLM提出与英国地理数据相关的问题,LLM将根据情况自动调用可用的工具来获取答案。

    • 您可以询问LLM:“列出该服务器提供的工具。”来查看所有可用功能。
    • 您可以询问LLM:“显示关于地理集合的Prompt模板。”来获取使用指导。
    • 您可以直接提出问题,例如:“在伦敦市中心(指定一个bbox)搜索公园。”或“查找UPRN为xxxxxxx的地址信息。”

信息

分类

网页与API