MCP 服务器
Mework 是 MCP 客户端。在设置 → MCP 下注册一次服务器,在应使用它的对话中选择它,其工具会在每个回合开始时被发现,并与内置工具一同提供给模型。目前支持两种传输方式,因为这是协议当前指定的两种:
- stdio — Mework 启动一个进程,并通过其 stdin/stdout 使用 JSON-RPC 通信。
- 可流式传输的 HTTP — Mework 连接到一个 URL。不支持较旧的 HTTP+SSE 传输方式。
服务器公开的提示和资源会显示在其详情页面中,供你查阅;只有工具会提供给模型。
注册服务器
设置 → MCP → 添加 ▾:
- 添加会打开一个空白详情页。
- 从 JSON 导入接受大多数 MCP 客户端共享的
mcpServers文档,并将其粘贴到一个对话框中:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "C:/projects"],
"env": { "LOG_LEVEL": "info" }
},
"docs": {
"type": "streamable_http",
"url": "http://127.0.0.1:3000/mcp",
"headers": { "Authorization": "Bearer …" }
}
}
}
带有 url(或 type: "streamable_http" / "http")的条目会成为 HTTP 服务器,其余条目均为 stdio。存在时会读取 description、timeoutSeconds、longRunning、disabledTools 和 disabledAutoApproveTools。文档内的重复名称会被报告,而非静默合并。
详情页包含以下字段(设置文档将它们储存在 assets.mcpServers 下):
| 字段 | 传输方式 | 含义 |
|---|---|---|
| 名称、描述 | 两者 | 显示在目录中;选中后,会列在系统提示词段落 system.mcp_section 中(描述默认使用 system.mcp_server_default_description)。 |
| 已启用 | 两者 | 全局开关。已停用的服务器仍会在对话中列为已选择,当前不会生效。 |
| 命令、参数、环境变量 | stdio | 要启动的进程。command 按原样执行;env 会添加到进程环境中。 |
| 包管理源 | stdio | 软件包注册表镜像。对于 npx/bunx 命令,会设为 npm_config_registry;对于 uv/uvx,会设为 UV_INDEX_URL + PIP_INDEX_URL;仅限 http(s) URL;你在 env 中自行设置的变量优先。 |
| URL、请求头 | HTTP | 端点及额外请求头(通常为 Authorization)。公共主机必须使用 https;回环和私有网络地址可使用 http。 |
| 超时(秒) | 两者 | 此服务器工具调用的单次请求超时,最长为 5 分钟;0 使用宿主默认值(45 秒)。 |
| 长时间运行模式 | 两者 | 标记调用合理地需要较长时间的服务器:未显式设置超时时,其调用上限为 5 分钟,而非默认的 45 秒。 |
| 工具选项卡 | 两者 | 成功测试后,每个已发现的工具都有一个启用工具开关(持久化为 disabledTools)和一个自动批准开关(持久化为 disabledAutoApproveTools)。 |
更改会立即保存;没有“保存”按钮。测试连接会连接服务器一次,列出其工具、提示和资源,记录其名称和版本,并且对于 stdio,会在日志选项卡中显示进程的 stderr;启动失败会在这里说明原因。
为对话选择服务器
与技能相同,注册会使服务器可用;对话抽屉中的MCP 服务器部分决定此对话使用哪些服务器(预设以相同字段作为模板)。服务器必须同时处于启用和选中状态。选中的服务器会列在系统提示词中,以便模型知道它们存在;其工具是否实际可调用,则由回合开始时的发现结果决定。
MCP 工具如何提供给模型
每个回合开始时,宿主会连接每个已选中且已启用的服务器(会话按对话划分、经池化,并在空闲 30 分钟后关闭),调用 tools/list,并以抗冲突的名称将每个工具加入模型工具列表:
mcp__<server-slug>_<server-digest>__<tool-slug>__<tool-digest>
模型会看到服务器自己的标题、描述和输入 Schema。你在工具选项卡中关闭的工具不会提供。如果服务器连接失败,该回合中不会有其工具,并会记录失败;回合本身仍会继续。子代理会继承父级已发现的绑定。
一次调用会以工具原始名称转换回 tools/call;回复的 content、structuredContent 和 isError 会以 JSON 返回给模型(服务器 _meta 会被剥离)。超过 64 KiB 的回复会被拒绝,而不会截断。
批准
MCP 工具被视为外部副作用:
- 在
request_approval、allow_edits和plan(计划模式)层级,每次调用都需要确认,除非PermissionRequest钩子允许它。在full_access层级,调用无需询问即可运行。 - 声明
_meta["anthropic/requiresUserInteraction"] = true的工具会在每次调用、每个层级都要求确认,钩子无法预先批准它。其提供给模型的描述会加上mcp.mandatory_description_prefix前缀。格式错误的值会保守地按“询问”处理。 - 你在工具选项卡中关闭其自动批准开关的工具也是如此:它会在每个层级都要求确认。
端到端验证服务器
- 注册服务器并点击测试连接;工具选项卡应列出其工具,日志选项卡应保持安静(或显示服务器自身的启动消息)。
- 在一个对话中选择它,发送一条需要其某个工具的消息,并在时间线中查找以服务器命名的工具卡;当卡片出现时批准调用。
- 若无任何反应:先检查系统提示词段落是否存在(服务器必须被选中),再检查日志选项卡(启动时退出的 stdio 服务器不会产生工具),最后检查模型——不支持工具调用的提供商不会看到 MCP 工具。
故障排除
| 症状 | 原因 |
|---|---|
| 测试连接因启动错误失败 | command 不在应用的 PATH 中,或参数有误。请在终端中尝试相同的命令。在 Windows 上,可执行文件会通过 PATH 和 PATHEXT 解析(因此 npx 能找到 npx.cmd),但命令行不会经由 Shell 传递——请提供可执行文件名或完整路径,而非管道。 |
| 测试后工具会出现,但模型从不调用它们 | 服务器未在对话中选中,或提供商/模型不支持工具调用。 |
| 即使在完全访问下,每次调用仍会询问 | 工具声明了 requiresUserInteraction,或其自动批准开关处于关闭状态。 |
| 两个服务器公开相同的工具 | 名称带有每个服务器各自的摘要,因此两者均可调用;描述可将它们区分开。 |
HTTP 服务器拒绝 http:// |
只有回环/私有地址可以使用普通 HTTP;公共端点需要 https。 |