GWS_xxx、服务端 MCP token session 和 Redis Gateway session;配置中不暴露 mcp_token。/mcp,通过 Header、Bearer 或 Cookie 稳定携带同一 GWS_xxx。initialize 完成握手,tools/list 返回 Gateway 候选集合与 fmsoperate 动态启用列表的交集。tools/call 解析设备会话、按会话和工具限流,再携带服务端 token 调用 fmsoperate。Y:/mcp 或员工可访问的 UNC 路径运行 python app.py serve-stdio。python app.py list-tools 检查动态可见工具,使用 python app.py call --tool ... 查看原始 ThinkPHP 信封。initialize、tools/list、tools/call 和 Presenter 展示。tools.listChanged=false 不会主动推送变化。value,多条命中让用户选择。list_outbound_filter_options 查询七类选项,包括集货仓库;不另设仓库工具。README.md 与 project-docs/ 确认产品合同,再读取 AGENTS.md 的所有权和红线。Y:/mcp 同步工具 metadata、输入 Schema、stdio/public 双注册、CLI、Presenter 与 Python 测试。Y:/fmsoperate 按 Controller / Logic / Model / Validate 分层同步路由、业务权限、动态注册和 PHP 测试。Y:/base 同步认证实现和合同测试;home 保持 UI/薄代理边界。tools/list。Workbuddy
-> /mcp (GWS_xxx)
-> PublicMcpHttpHandler
-> PublicGatewayApp + GatewaySessionStore
-> ScopedApiClient (server-side mcp_token)
-> fmsoperate MCP route
-> ThinkPHP permission/data checks
-> OutputPresenter
-> MCP content + structuredContent + _meta.request_id
本地 stdio 使用 GatewayApp + ApiClient + TokenStore,从协议处理开始与公网共用相同的工具合同和 Presenter。query_order 是旧展示例外。
| 路径 | 内容 |
|---|---|
app.py |
本地入口、CLI 和 GatewayApp |
public_gateway.py、public_server.py |
公网 Gateway 与 HTTP JSON-RPC 服务 |
mcp_protocol.py |
MCP 协议处理与结果分流 |
tools/ |
11 个工具的 Schema、说明和路由封装 |
services/ |
API、认证、session、request context、scoped client 与 Presenter |
utils/ |
限流和安全散列工具 |
tests/ |
Python 单元、协议、展示、会话和安全回归测试 |
project-docs/ |
现行项目五件套 |
docs/superpowers/specs/ |
设计决策背景;不替代现行合同 |