Andon SOP MCP Server

Andon SOP MCP Server

MCP server that connects to MES systems to enable SOP uploading and abnormal report queries via WorkBuddy.

Category
访问服务器

README

Andon SOP MCP Server

这是一个面向 WorkBuddy 的本地 MCP Server,用于连接 MES 系统,提供 SOP 上传辅助工具和异常报表查询工具。

当前项目通过 MCP stdio 协议与 WorkBuddy 通信,通过 HTTP REST 接口访问 MES 后端。

架构

WorkBuddy
   |
   | MCP Protocol (stdio)
   v
本地 MCP Server(本项目)
   |
   | HTTP REST / 登录鉴权
   v
MES 系统

环境要求

  • Node.js >= 18
  • npm
  • WorkBuddy
  • 可访问的 MES 后端服务
  • MES 登录账号和密码,或可用的 MES 鉴权配置

快速开始

1. 安装依赖

进入项目根目录:

cd D:\svn-workspace\andon_sop-mcp

安装依赖:

npm install

2. 配置 MES 连接

配置文件位于:

config\mes-config.json

示例:

{
  "mes": {
    "baseUrl": "http://localhost:9998",
    "auth": {
      "type": "login",
      "username": "superadmin",
      "password": "1234554321",
      "loginUrl": "/main/login",
      "contentType": "application/x-www-form-urlencoded"
    },
    "timeout": 300000,
    "queryTimeoutMs": 25000,
    "retry": 3,
    "writeIntervalMs": 2400
  },
  "tools": {
    "likeSelectMaterielList": true,
    "selectCategoryTreeList": true,
    "uploadSop": true
  }
}

字段说明:

字段 说明
mes.baseUrl MES 后端地址。如果 MES 不在本机,不要使用 localhost,要改成真实地址。
mes.auth.type 当前使用 login,表示通过用户名密码登录 MES。
mes.auth.username MES 用户名。
mes.auth.password MES 密码。
mes.auth.loginUrl MES 登录接口路径。
mes.timeout 普通请求超时时间,单位毫秒。
mes.queryTimeoutMs 查询类请求超时时间,单位毫秒。
mes.retry 网络失败后的重试次数。
mes.writeIntervalMs 写入类接口调用间隔,用于避开 MES 防重复提交限制。
tools.* 控制 MCP 工具是否启用,true 启用,false 禁用。

3. 编译

npm run build

编译后入口文件是:

dist\src\index.js

4. 本地手动启动测试

$env:MES_CONFIG_PATH="D:\svn-workspace\andon_sop-mcp\config\mes-config.json"
node D:\svn-workspace\andon_sop-mcp\dist\src\index.js

如果看到类似日志,说明 MCP Server 已启动:

MES TaskReport MCP Server starting...
Config loaded from: D:\svn-workspace\andon_sop-mcp\config\mes-config.json
Registered 3 tools: likeSelectMaterielList, selectCategoryTreeList, uploadSop
MES TaskReport MCP Server is ready. Waiting for requests...

这是 stdio MCP,启动后会等待客户端连接,终端没有继续输出是正常的。测试结束后按 Ctrl + C 退出。

WorkBuddy 配置

在 WorkBuddy 的自定义 MCP 配置中填写:

{
  "mcpServers": {
    "andon-sop-mcp": {
      "type": "stdio",
      "command": "node",
      "args": [
        "D:\\svn-workspace\\andon_sop-mcp\\dist\\src\\index.js"
      ],
      "cwd": "D:\\svn-workspace\\andon_sop-mcp",
      "env": {
        "MES_CONFIG_PATH": "D:\\svn-workspace\\andon_sop-mcp\\config\\mes-config.json"
      }
    }
  }
}

说明:

字段 说明
type 固定使用 stdio
command 启动命令,这里是 node
args MCP 编译后的入口文件。
cwd 项目根目录,即 package.json 所在目录。建议保留。
env.MES_CONFIG_PATH 指定 mes-config.json 的绝对路径。建议保留,避免配置文件找不到。

Windows 路径写到 JSON 中时,\ 要写成 \\

可用工具

Tool 用途
likeSelectMaterielList 按物料名称模糊分页查询物料,返回物料 ID、名称、编码。
selectCategoryTreeList 查询 SOP 分类列表,返回分类 ID 和分类名称。
uploadSop 上传 SOP 文件到 MES。

典型使用流程

上传 SOP

  1. 准备或生成 SOP 文件,并拿到本地文件路径 file_path
  2. 如果只有物料名称,调用 likeSelectMaterielList 查询物料,让用户选择正确物料,使用表格中的物料 ID 作为 materielId
  3. 如果没有 SOP 分类 ID,调用 selectCategoryTreeList 查询分类,让用户选择正确分类,使用表格中的分类 ID 作为 esopCategoryId
  4. 确认 versionprocedureId
  5. 参数齐全后调用 uploadSop

uploadSop 必需参数:

参数 说明
file_path 本地 SOP 文件路径,MCP Server 所在机器必须能读取。
version SOP 版本号。
materielId 物料 ID。
procedureId 工序 ID。
esopCategoryId SOP 分类 ID。

不要猜测 materielIdprocedureIdesopCategoryId。如果用户没有明确提供,应先查询或追问。

Skills

项目内置了 WorkBuddy 使用流程说明:

skills\mes-sop-abnormal-workflows\SKILL.md

该技能重点说明:

  • 上传 SOP 应按什么流程调用 MCP 工具
  • 哪些 ID 不能猜,必须查询或询问用户

自包含打包

项目提供 scripts\bundle.mjs,用于把 MCP Server 打包成单个 JS 文件:

npm run bundle

输出文件:

andon_sop-mcp.js

这种方式适合分发给其他电脑使用。对方仍需要:

  • Node.js >= 18
  • config\mes-config.json
  • WorkBuddy MCP 配置指向打包后的 JS 文件

如果执行 npm run bundle 报找不到 esbuild,先执行:

npm install

项目结构

andon_sop-mcp/
├─ config/
│  ├─ mes-config.json              # MES 实际连接配置
│  ├─ mes-config.example.json      # MES 配置示例
│  └─ 说明.txt                     # WorkBuddy 配置简要说明
├─ docs/
│  └─ workbuddy配置教程.md          # WorkBuddy 详细配置教程
├─ scripts/
│  └─ bundle.mjs                   # esbuild 打包脚本
├─ skills/
│  └─ mes-sop-abnormal-workflows/
│     └─ SKILL.md                  # WorkBuddy 业务流程技能说明
├─ src/
│  ├─ index.ts                     # MCP Server 入口
│  ├─ tools/
│  │  ├─ index.ts                  # 工具注册
│  │  ├─ like_select_materiel_list.ts
│  │  ├─ select_category_tree_list.ts
│  │  ├─ upload_sop.ts
│  │  └─ query_abnormal_report_page.ts
│  ├─ services/
│  │  ├─ mesClient.ts              # MES HTTP 客户端
│  │  ├─ authService.ts            # 登录和 token 管理
│  │  └─ entityResolverService.ts
│  ├─ types/
│  │  ├─ api.ts
│  │  └─ toolContent.ts
│  └─ utils/
│     └─ logger.ts                 # 日志输出到 stderr,避免干扰 MCP stdio
├─ test/
├─ package.json
└─ tsconfig.json

常见问题

MCP error -32000: Connection closed

通常表示 WorkBuddy 启动了本地 MCP 进程,但 MCP 进程马上退出。

优先检查:

  1. 是否执行过 npm run build
  2. dist\src\index.js 是否存在。
  3. WorkBuddy 配置里的 cwd 是否是项目根目录。
  4. MES_CONFIG_PATH 是否指向真实存在的 config\mes-config.json
  5. mes-config.json 是否是合法 JSON。
  6. node 命令是否可用。

MES 接口连不上

检查 config\mes-config.json

"baseUrl": "http://localhost:9998"

如果 MES 后端不在本机,必须改成真实 MES 地址。

工具没有出现

检查 config\mes-config.jsontools 配置。设置为 false 的工具不会注册。

开发命令

# 编译 TypeScript
npm run build

# 运行测试
npm test

# 启动 MCP Server
npm start

# 打包成单个 JS 文件
npm run bundle

扩展工具

新增 MCP 工具时:

  1. src\tools 下新增工具文件。
  2. 导出 namedescriptioninputSchemahandler
  3. src\tools\index.ts 中注册。
  4. config\mes-config.jsontools 中增加开关。
  5. 添加对应测试。

推荐服务器

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 模型以安全和受控的方式获取实时的网络信息。

官方
精选