PLS-MCP Server

PLS-MCP Server

一个用于PLS电子围栏人员定位系统的MCP服务器,允许AI助手通过18个只读工具查询标签列表、实时位置、人员、告警记录等定位系统数据。

Category
访问服务器

README

PLS-MCP Server

PLS 电子围栏人员定位系统的 MCP (Model Context Protocol) Server。让 AI 助手能够查询定位系统的实时数据。

功能概览

分类 工具数量 说明
P0 核心查询 5 标签列表、实时位置、人员列表、按人名查位置、绑定关系
P1 场景查询 4 区域列表、区域人员、告警记录、系统统计
P2 扩展查询 5 进出记录、基站列表、地图列表、实时地图快照、历史轨迹
P3 资产查询 4 车辆列表、物品列表、告警规则、部门列表

共 18 个查询工具,全部为只读。

工具列表

Tool Name 描述 参数
list_tags 获取标签列表 mapId(可选), tagType(可选), pageSize, page
get_tag_location 按标签编码查实时位置 tagCode
list_personnel 获取人员列表 departmentId(可选), keyword(可选), pageSize, page
get_personnel_location 按人员姓名/ID查实时位置 nameOrId
get_tag_bindings 查询标签-人员/车辆绑定关系 tagCode(可选)
list_areas 获取区域列表 mapId(可选)
get_area_personnel 查询某区域内当前人员 areaId
list_alarms 查询告警记录 tagCode, alarmType, timeRange, pageSize, page
get_system_stats 系统统计概览 无
get_in_and_out_records 进出区域记录 areaId, timeRange, pageSize, page
list_anchors 基站列表 status(可选), mapId(可选)
list_maps 地图列表 无
list_realtime_map 指定地图所有标签的实时位置快照 mapCode
get_trajectory 标签历史行为轨迹 tagCode, startTime, endTime, mapId, limit
list_cars 车辆列表 carType(可选), keyword(可选), isBound(可选), pageSize, page
list_goods 物品/货物列表 keyword(可选), isBound(可选), pageSize, page
list_alarm_rules 告警规则列表 alarmType(可选), keyword(可选)
list_departments 部门树结构列表 keyword(可选)

快速开始

前提条件

  1. PLS Java 应用已部署运行
  2. MySQL 数据库可访问
  3. Node.js 18+ 和 npm 已安装

安装

cd pls-mcp
npm install

环境变量配置

创建 .env 文件或传入环境变量:

变量名 说明 必选
PLS_MYSQL_HOST MySQL 服务器地址 ✅
PLS_MYSQL_PORT MySQL 端口,默认 3306 ❌
PLS_MYSQL_USER MySQL 用户名 ✅
PLS_MYSQL_PASSWORD MySQL 密码 ✅
PLS_MYSQL_DATABASE 数据库名称 ✅
PLS_API_BASE_URL PLS Java 应用地址 ✅
MCP_LOG_LEVEL 日志级别: info/debug ❌

.env 示例

PLS_MYSQL_HOST=192.168.10.221
PLS_MYSQL_PORT=3306
PLS_MYSQL_USER=root
PLS_MYSQL_PASSWORD=root
PLS_MYSQL_DATABASE=ishz_pls_six_zhongchechangjiang
PLS_API_BASE_URL=http://127.0.0.1:8180/pls
MCP_LOG_LEVEL=debug

本地启动

npm run start
# 或
npx tsx src/index.ts

接入 AI 客户端

OpenCode

在你的 OpenCode MCP 配置文件中添加:

{
  "pls-mcp": {
    "command": "npx",
    "args": ["tsx", "F:\\pls6.0\\pls-mcp\\src\\index.ts"],
    "enabled": true,
    "env": {
      "PLS_MYSQL_HOST": "你的MySQL地址",
      "PLS_MYSQL_PORT": "3306",
      "PLS_MYSQL_USER": "你的MySQL用户名",
      "PLS_MYSQL_PASSWORD": "你的MySQL密码",
      "PLS_MYSQL_DATABASE": "你的数据库名",
      "PLS_API_BASE_URL": "http://PLS应用地址:8180/pls",
      "MCP_LOG_LEVEL": "debug"
    }
  }
}

Claude Desktop

将配置添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "pls-mcp": {
      "command": "npx",
      "args": ["tsx", "F:\\pls6.0\\pls-mcp\\src\\index.ts"],
      "env": {
        "PLS_MYSQL_HOST": "你的MySQL地址",
        "PLS_MYSQL_PORT": "3306",
        "PLS_MYSQL_USER": "你的MySQL用户名",
        "PLS_MYSQL_PASSWORD": "你的MySQL密码",
        "PLS_MYSQL_DATABASE": "你的数据库名",
        "PLS_API_BASE_URL": "http://PLS应用地址:8180/pls",
        "MCP_LOG_LEVEL": "debug"
      }
    }
  }
}

通过 npm 包部署(可选)

如果你想像通用 MCP 那样用 npx -y @your-org/pls-mcp 安装:

# 1. 修改 package.json 发布到 npm (或内部 npm registry)
npm publish

# 2. 配置时直接引用包名
{
  "pls-mcp": {
    "command": "npx",
    "args": ["-y", "@your-org/pls-mcp"],
    "env": { ... }
  }
}

使用示例

配置成功后,你可以直接对 AI 助手说:

现在有哪些标签在线?
张三现在在哪里?
1号区域有多少人?
UWB001 最近的告警是什么?
系统总共有多少基站?

AI 会自动调用对应的 MCP 工具查询数据并回答你。

Java 端前置部署

MCP Server 中的实时位置查询依赖 PLS Java 应用中的端点。

需要部署的文件

文件 操作
src/main/java/com/ishz/web/positiondata/controller/McpController.java 新增到项目
src/main/java/com/ishz/web/authentication/security/SecurityConfig.java 追加 .antMatchers("/**/mcp/**").permitAll()

部署步骤

  1. 将 McpController.java 复制到 PLS 项目对应位置
  2. 在 SecurityConfig.java 的 configure(HttpSecurity) 中添加放行规则
  3. Maven 编译并重新部署 PLS 应用

验证部署

curl http://127.0.0.1:8180/pls/mcp/realtime/stats

返回 JSON 数据表示 Java 端部署成功。

数据源架构

┌───────── PLS MCP Server ───────────┐
│                                    │
│  list_tags      → MySQL (gis_tag)  │
│  list_personnel → MySQL            │
│  list_alarms    → MySQL            │
│  get_trajectory → MySQL            │
│                                    │
│  get_tag_location → Java 端点      │
│  get_area_personnel → Java 端点    │
│  get_tag_bindings → Java 端点      │
│  get_system_stats → Java 端点      │
│  list_realtime_map → Java 端点     │
│                                    │
└─────────────────────────────────────┘

故障排查

问题 可能原因 解决方案
MySQL connection failed 地址/端口/密码错误 检查 .env 中的 MySQL 配置
Request 401 Java MCP 端点未部署 部署 McpController.java
实时位置返回 null 标签无位置数据 标签可能是离线/未上报
TypeScript 编译错误 依赖版本不匹配 npm install 重装依赖
工具注册失败 import 路径错误 检查文件路径和 .js 扩展名

技术栈

  • Node.js 18+
  • TypeScript
  • @modelcontextprotocol/sdk v1.29.0
  • mysql2 — MySQL 连接
  • axios — HTTP 调用 Java 端点
  • zod — 参数校验
  • dotenv — 环境变量管理

目录结构

pls-mcp/
├── package.json          # 依赖配置
├── tsconfig.json         # TypeScript 配置
├── .env                  # 环境变量(不提交 Git)
├── .gitignore
└── src/
    ├── index.ts          # 入口 - STDIO 传输
    ├── server.ts         # MCP Server 实例 + 工具注册
    ├── config/
    │   └── settings.ts   # 配置管理
    ├── db/
    │   └── connection.ts # MySQL 连接池
    ├── api/
    │   └── client.ts     # Java 端点 HTTP Client
    ├── tools/            # 14 个工具
    │   ├── listTags.ts
    │   ├── getTagLocation.ts
    │   ├── listPersonnel.ts
    │   ├── getPersonnelLocation.ts
    │   ├── getTagBindings.ts
    │   ├── listAreas.ts
    │   ├── getAreaPersonnel.ts
    │   ├── listAlarms.ts
    │   ├── getSystemStats.ts
    │   ├── getInOutRecords.ts
    │   ├── listAnchors.ts
    │   ├── listMaps.ts
    │   ├── listRealtimeMap.ts
    │   └── getTrajectory.ts
    └── types/
        └── index.ts      # TypeScript 类型定义

后续扩展

  • 按车辆名称/货物名称查位置(二期)
  • 标签绑定/解绑操作(后期,需改 Node.js + Java)
  • 告警规则管理(后期)
  • MCP Resources 和 Prompts 支持

License

Internal use only.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选