Expose the GLPI service via MCP to query and process data such as tickets, assets, and users.
122
把 GLPI(IT 服务管理平台)以 MCP 协议暴露成 HTTP 服务,让企业微信智能机器人、Claude、Cursor 等 AI 助手能够直接查询和处理工单、资产、用户等数据。
传输方式采用 Streamable HTTP。服务无状态,每个请求独立处理,一个进程即可支撑多个使用者同时调用。查询结果带有体积上限与自动裁剪,避免过大的 JSON 撑爆客户端长度限制导致对话失败。
基于 node:20-alpine,默认暴露 3000 端口。
共 86 个工具,按对象分类。
查询类包含工单列表、按条件搜索(状态、处理人、请求人、分类、实体、优先级、时间段、标题关键词、只看未完结)、工单详情、时间线(跟进与任务与解决方案与审批按时间合并)、跟进/任务/解决方案/审批/附件子列表、满意度调查结果、超期未完结工单。
写入类包含新建、修改、删除、追加跟进、添加任务(可记工时)、添加解决方案、指派给用户或组、工单关联、发起审批、处理审批、上传文件为文档、把已有文档挂到工单。
两种对象的列表、详情、新建、修改,返回时附带状态中文标签。
计算机、软件、网络设备、打印机、显示器、电话的列表与详情;计算机的新增、修改、删除;按使用人查设备,同时用中文姓名与域账号两路匹配 contact 字段并合并结果,域账号重名时自动尝试数字序号。
用户列表、按登录名或姓名搜索、详情、新建;用户组的列表、详情、新建、把用户加入组。
工单分类、实体、文档。
文章列表、详情、按标题搜索、新建。
各自的列表、详情,以及可写对象的创建与修改。
工单按状态统计、各类资产总量统计、按维度(状态/分类/技术员/实体/月)统计并支持时间区间。
多条件搜索(字段名动态解析,支持 AND/OR/AND NOT/OR NOT)、记录总数探测、可搜索字段目录、当前 API 账号的权限概况,以及一个保留的兼容接口。
动态字段映射:通过 /listSearchOptions 解析字段名与 id 的对应关系,适配不同 GLPI 版本
会话自动续期:GLPI 会话过期返回 401 时自动重新登录,5xx 与 429 自动重试
外键自动解析:返回 technician、category、entity 等 id 的同时给出名称
结果体积控制:列表默认 20 条、单次请求上限 200 条,超过体积上限时自动裁剪并提示缩小查询范围
运行日志:包含时间、调用方 IP、工具名、参数、结果摘要与耗时
docker run -d --name mcp-glpi \
-p 3000:3000 \
-e GLPI_URL="https://glpi.example.com" \
-e GLPI_APP_TOKEN="你的应用令牌" \
-e GLPI_USER_TOKEN="你的用户令牌" \
-e MCP_SERVICE_TOKEN="换成一串随机字符串" \
<你的镜像地址>
例:<你的镜像地址> 形如 your-dockerhub-user/mcp-glpi:latest,替换成实际发布的镜像名。
启动后确认服务可用:
curl http://127.0.0.1:3000/health
# {"status":"ok","service":"mcp-glpi"}
| 变量 | 必填 | 默认 | 说明 |
|---|---|---|---|
GLPI_URL | 是 | 无 | GLPI 实例地址,需为容器内可访问的地址 |
GLPI_APP_TOKEN | 否 | 无 | 应用令牌,GLPI 后台「设置 → 常规 → API」生成 |
GLPI_USER_TOKEN | 二选一 | 无 | 用户令牌 |
GLPI_USERNAME | 二选一 | 无 | 登录账号,配合 GLPI_PASSWORD 使用 |
GLPI_PASSWORD | 二选一 | 无 | 登录密码 |
GLPI_TIMEOUT_MS | 否 | 15000 | 单次 GLPI 请求超时(毫秒) |
GLPI_MAX_RETRIES | 否 | 2 | 5xx、429、网络错误的重试次数 |
GLPI_DEBUG | 否 | 关闭 | 设置任意值即在 stderr 输出 HTTP 重试与重新登录日志 |
鉴权二选一:GLPI_USER_TOKEN,或 GLPI_USERNAME + GLPI_PASSWORD。
| 变量 | 必填 | 默认 | 说明 |
|---|---|---|---|
MCP_HOST | 否 | 0.0.0.0 | 监听地址 |
MCP_PORT | 否 | 3000 | 监听端口 |
MCP_SERVICE_TOKEN | 建议必填 | 无 | 调用方令牌。不设置时 /mcp 不做鉴权,任何能访问该端口的人都可以读写 GLPI |
MCP_JSON_RESPONSE | 否 | 1 | 为 1 时以 application/json 返回;设为 0 改回 SSE 流 |
| 变量 | 默认 | 说明 |
|---|---|---|
MCP_MAX_RESULT_CHARS | 24000 | 单次工具返回的最大字符数,超限自动裁剪 |
MCP_MAX_STRING_CHARS | 2000 | 单个字符串字段最长保留字符数 |
MCP_DEFAULT_LIMIT | 20 | 列表类工具的默认返回条数 |
MCP_MAX_LIST_LIMIT | 200 | 单次请求条数的硬上限 |
MCP_MAX_FETCH_ALL_ROWS | 200 | fetch_all 模式的最大行数 |
客户端对单次返回长度有上限,企业微信尤为明显,返回过大会直接触发「暂时无法回答,请稍后再试」。默认值按常见平台留了余量,可按实际平台调小。
| 方法与路径 | 说明 |
|---|---|
POST /mcp | MCP 协议入口,JSON-RPC over Streamable HTTP |
GET /health | 健康检查,返回 {"status":"ok","service":"mcp-glpi"} |
其它方法 /mcp | 返回 405(无状态模式不提供 SSE 长连接) |
鉴权令牌支持三种传递方式,任选其一:
Authorization: Bearer <MCP_SERVICE_TOKEN>
X-API-Key: <MCP_SERVICE_TOKEN>
查询参数 ?apiKey=<MCP_SERVICE_TOKEN>
上传文件为文档时,glpi_upload_document 读取的是容器内路径,需要把宿主机目录挂载进容器,例如 -v /host/uploads:/uploads,再把 file_path 传 /uploads/xxx.pdf。
在企业微信管理后台创建机器人后,为机器人添加 MCP 插件,按下表填写。
| 配置项 | 取值 |
|---|---|
| 插件 URL | https://你的域名/mcp(结尾不要再加 /) |
| 授权方式 | Service token / API key |
| 位置 | Header |
| Parameter name | Authorization |
| Service token / API key | Bearer <MCP_SERVICE_TOKEN> |
| 传输协议 | Streamable HTTP |
如果控制台里用的是 Query 方式,则 Parameter name 填 apiKey,值填令牌本身(不带 Bearer 前缀),同样可用。
前置条件:该地址需能从公网以 HTTPS 访问,通常用 Nginx 反向代理到容器的 3000 端口。反向代理要转发 Authorization 头,并设置 X-Forwarded-For,服务日志里的调用方 IP 依赖它:
location /mcp {
proxy_pass http://127.0.0.1:3000/mcp;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Authorization $http_authorization;
proxy_buffering off;
proxy_read_timeout 3600s;
}
以支持远程 HTTP 的客户端为例,把 URL 指向 /mcp 并带上令牌:
{
"mcpServers": {
"glpi": {
"type": "http",
"url": "https://你的域名/mcp",
"headers": {
"Authorization": "Bearer 你的 MCP_SERVICE_TOKEN"
}
}
}
}
/mcp 背后的工具包含删除工单、删除资产等不可恢复的操作。部署时建议同时做到:
始终设置 MCP_SERVICE_TOKEN,不要以无鉴权状态暴露到公网
为 GLPI 侧的 API 账号只授予业务所需的权限与实体范围
反向代理上开启 HTTPS,并限制来源 IP 或叠加访问控制
如果这个项目对你有帮助,欢迎扫码支持一下。

MIT
本项目基于 GMS64260/mcp-glpi 扩展,增加了 Streamable HTTP 传输、查询结果体积控制,以及面向企业微信智能机器人的接入适配。
本仓库地址:goldautumn2000/mcp-glpi
Content type
Image
Digest
sha256:87573b021…
Size
80.3 MB
Last updated
10 days ago
docker pull goldautumn2000/mcp-glpi