北斗网格引擎 MCP 智能平台

北斗网格引擎 MCP 智能平台

基于 Model Context Protocol 的空间数据智能分析平台

在线演示 · 快速开始 · 架构设计 · 功能特性


📖 项目简介

北斗网格引擎 MCP 智能平台是一个创新的空间数据智能分析系统,通过自然语言交互实现 GIS 数据的查询、分析和可视化。项目基于 Anthropic 的 Model Context Protocol (MCP) 协议,将大语言模型与地理信息系统深度融合,让用户无需掌握复杂的 GIS 查询语法,仅通过对话即可完成空间数据分析。

🎯 核心价值

  • 降低门槛:用自然语言替代复杂的 GIS 查询语法
  • 智能交互:AI 自动理解用户意图并调用相应工具
  • 可视化呈现:查询结果自动在地图上渲染展示
  • 标准化协议:基于 MCP 协议,易于扩展和集成

🌟 应用场景

  • 🗺️ 城市规划:快速查询特定区域的建筑、道路等数据
  • 📊 数据分析:通过对话完成空间统计和分析任务
  • 🔍 应急响应:快速定位和查询灾害影响范围
  • 🏢 企业决策:辅助选址、市场分析等业务场景

🏗️ 架构设计

整体架构图

┌─────────────────────────────────────────────────────────────┐
│                      用户界面层                               │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐   │
│  │ AI 对话  │  │ 地图交互 │  │ 工具监控 │  │ 配置管理 │   │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘   │
└─────────────────────────────────────────────────────────────┘
                            ↕
┌─────────────────────────────────────────────────────────────┐
│                    MCP 客户端层                               │
│  ┌─────────────────────────────────────────────────────┐   │
│  │           MCP Client Factory (工厂管理)              │   │
│  │  • 多服务器连接管理                                    │   │
│  │  • 工具自动发现与注册                                  │   │
│  │  • 会话生命周期管理                                    │   │
│  │  • 超时保护与错误处理                                  │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘
                            ↕ SSE 长连接
┌─────────────────────────────────────────────────────────────┐
│                    MCP 服务器层                               │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              MCP Server (工具提供者)                  │   │
│  │  • get_data_source_list - 获取数据源列表             │   │
│  │  • geometry_search - 空间几何检索                    │   │
│  │  • get_layer_by_indexLibraryName - 图层查询          │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘
                            ↕
┌─────────────────────────────────────────────────────────────┐
│                   业务数据层                                  │
│              北斗网格引擎服务 (REST API)                       │
└─────────────────────────────────────────────────────────────┘

技术栈

前端

  • 框架:Next.js 15 + React 19
  • 语言:TypeScript
  • 地图:Leaflet + React-Leaflet
  • 状态管理:Zustand
  • UI 组件:Radix UI + TailwindCSS
  • MCP 客户端:@modelcontextprotocol/sdk

后端

  • MCP 服务器:Node.js (TypeScript) / Python (FastMCP)
  • 传输协议:SSE (Server-Sent Events)
  • 参数校验:Zod Schema
  • HTTP 框架:Express

AI 集成

  • 模型:智谱 AI GLM-4 / DeepSeek
  • 工具调用:OpenAI Function Calling 标准
  • 响应方式:流式输出(SSE)

🔄 核心流程

1️⃣ 用户查询流程

用户输入自然语言
    ↓
系统构建上下文(包含地图空间信息)
    ↓
发送给大语言模型(携带可用工具列表)
    ↓
LLM 分析意图并决定调用哪个工具
    ↓
返回工具调用指令(工具名 + 参数)
    ↓
前端展示工具调用卡片(等待用户确认)
    ↓
用户确认后执行工具
    ↓
MCP 客户端调用 MCP 服务器
    ↓
MCP 服务器调用业务 API
    ↓
返回结果给 LLM 进行总结
    ↓
展示最终答案 + 地图可视化

2️⃣ MCP 工具调用流程

┌─────────────┐
│  LLM 决策   │ "需要调用 geometry_search 工具"
└──────┬──────┘
       ↓
┌─────────────┐
│ 工具路由器  │ 查找工具所属的 MCP 服务器
└──────┬──────┘
       ↓
┌─────────────┐
│ MCP Session │ 通过 SSE 连接发送工具调用请求
└──────┬──────┘
       ↓
┌─────────────┐
│ MCP Server  │ 接收请求并执行工具逻辑
└──────┬──────┘
       ↓
┌─────────────┐
│ 业务 API    │ 调用实际的数据服务
└──────┬──────┘
       ↓
┌─────────────┐
│ 返回结果    │ 逐层返回给用户
└─────────────┘

3️⃣ 地图交互流程

用户在地图上绘制区域(多边形/矩形)
    ↓
系统捕获 GeoJSON 坐标
    ↓
存储到全局状态(Zustand Store)
    ↓
用户发起查询
    ↓
GeoJSON 作为上下文传递给 LLM
    ↓
LLM 理解空间范围并调用工具
    ↓
工具使用 GeoJSON 作为查询参数
    ↓
返回该区域内的数据
    ↓
数据自动渲染到地图上(矢量图层)

✨ 功能特性

🤖 智能对话

  • 自然语言理解:支持口语化的查询表达
  • 上下文记忆:记住对话历史,支持追问
  • 推理过程展示:实时显示 AI 的思考链路
  • 流式响应:逐字输出,提升交互体验

🗺️ 地图功能

  • 交互式地图:基于 Leaflet 的高性能地图渲染
  • 空间绘制:支持绘制多边形、矩形作为查询条件
  • 图层管理:动态添加、删除、样式自定义
  • 数据可视化:查询结果自动渲染为矢量图层
  • 弹窗展示:点击要素显示详细属性信息

🔧 工具调用

  • 工具自动发现:连接 MCP 服务器后自动获取可用工具
  • 可视化监控:实时展示工具调用状态和参数
  • 用户确认机制:工具执行前需用户审批(可配置)
  • 超时保护:防止工具调用长时间阻塞
  • 错误降级:工具失败时返回友好提示

⚙️ 配置管理

  • 多服务器支持:同时连接多个 MCP 服务器
  • 动态配置:通过配置文件添加新工具,无需改代码
  • 传输协议切换:支持 SSE 和 stdio 两种传输方式
  • 环境隔离:开发/测试/生产环境独立配置

🚀 快速开始

环境要求

  • Node.js 20+
  • pnpm 10+
  • Python 3.9+(如使用 Python MCP 服务器)

安装步骤

1. 克隆项目

1git clone https://github.com/your-repo/beidou-engine-mcp.git 2cd beidou-engine-mcp

2. 启动后端 MCP 服务器

1cd server 2pip install fastmcp python-dotenv requests pydantic 3python es_app.py

服务器将在 http://localhost:8000 启动。

3. 启动前端应用

1cd web/beidou-engine-mcp-web 2pnpm install 3pnpm run dev

访问 http://localhost:3000 即可使用。

配置说明

web/beidou-engine-mcp-web/.env 中配置:

1# MCP 服务器地址 2NEXT_PUBLIC_MCP_SSE_URL=http://localhost:8000/sse 3 4# LLM API 配置 5OPENAI_API_KEY=your-api-key 6OPENAI_BASE_URL=https://open.bigmodel.cn/api/paas/v4/ 7OPENAI_MODEL=glm-4-9b

📊 项目亮点

1. MCP 协议深度应用

  • 国内首批基于 MCP 协议的生产级 GIS 应用
  • 标准化工具定义,符合 MCP 规范,易于生态集成
  • 多服务器聚合,统一管理不同来源的工具
  • 工具自动发现,动态加载可用功能

2. 创新交互范式

  • 多模态输入:文字 + 地图空间选择
  • 双向联动:地图 ↔ AI 的实时交互
  • 可视化反馈:工具调用过程全程可见
  • 零学习成本:无需了解 GIS 专业知识

3. 工程化实践

  • 全栈 TypeScript:端到端类型安全
  • 设计模式应用:工厂模式、适配器模式、事件驱动
  • 状态管理优化:Zustand 轻量级方案
  • 性能优化:SSE 连接复用、流式响应、动态导入

4. 可扩展架构

  • 插件化设计:通过配置文件添加新 MCP 服务器
  • 工具聚合器:自动合并多个服务器的工具
  • 前后端分离:MCP 服务器可独立部署和升级
  • 协议标准化:遵循 MCP 规范,易于集成第三方工具

🎬 使用示例

示例 1:查询数据源

用户:帮我看看现在有哪些数据源?

系统

  1. AI 识别意图,决定调用 get_data_source_list 工具
  2. 展示工具调用卡片,显示工具名称和参数
  3. 用户点击"执行工具"
  4. 返回数据源列表:建筑数据、道路数据、POI 数据...
  5. AI 总结:当前系统有 3 个数据源可用

示例 2:空间范围查询

用户

  1. 在地图上绘制一个矩形区域
  2. 输入:"查询这个区域内的建筑数据"

系统

  1. 捕获地图绘制的 GeoJSON 坐标
  2. 构建上下文:用户输入 + 空间范围
  3. AI 决定调用 geometry_search 工具
  4. 参数:数据源=建筑数据,几何范围=GeoJSON
  5. 返回该区域内的 156 条建筑记录
  6. 自动在地图上渲染建筑轮廓
  7. AI 总结:该区域共有 156 栋建筑,其中住宅 89 栋,商业 67 栋

示例 3:多轮对话

用户:查询深圳市南山区的数据源

AI:南山区有以下数据源:建筑数据、道路数据、绿地数据

用户:那帮我看看建筑数据有哪些图层

AI:(调用 get_layer_by_indexLibraryName 工具)建筑数据包含:住宅楼、商业楼、工业厂房、公共设施

用户:查询住宅楼的数量

AI:(调用 geometry_search 工具)南山区共有 2,345 栋住宅楼


📈 项目数据

  • 代码量:前端 ~12,500 行,后端 ~840 行
  • 核心模块:5 个(MCP 客户端、服务器、AI 编排、地图、状态管理)
  • 支持工具:3 个(可扩展)
  • 响应速度:首字节时间 < 500ms(流式输出)
  • 并发支持:多客户端同时连接

🛣️ 未来规划

短期目标(1-3 个月)

  • [ ] 增加更多空间分析工具(缓冲区、叠加分析)
  • [ ] 支持数据导出(GeoJSON、Shapefile、CSV)
  • [ ] 优化地图性能(大数据量渲染)
  • [ ] 添加用户认证和权限管理

中期目标(3-6 个月)

  • [ ] 多用户协作功能
  • [ ] 查询历史和收藏功能
  • [ ] 自定义 MCP 工具开发工具包
  • [ ] 移动端适配

长期目标(6-12 个月)

  • [ ] MCP 工具市场(社区贡献)
  • [ ] 多模态输入(图片、语音)
  • [ ] 实时数据订阅(WebSocket)
  • [ ] 私有化部署方案