mcpField
S
SPOC

SPOC

本地服务
spoc.com开发工具06 周前更新

关于 SPOC

SPOC 是连接 stdio-only MCP 客户端与 SPOC MCP 服务的桥接程序,将客户端的 JSON-RPC 请求转发到 HTTP+SSE 端点。适用于希望在 Claude Desktop、Cursor、Zed 等客户端中使用 SPOC 工具的用户。

主要功能

  1. 01stdio 与 HTTP+SSE 转发
  2. 02请求帧原样传递
  3. 03支持 SSE 通知
  4. 04可选 Bearer 身份验证
  5. 05可配置端点与超时

适用场景

  1. 01在 Claude Desktop 中调用 SPOC 工具
  2. 02在 Cursor 或 Zed 中连接 SPOC
  3. 03通过环境变量配置凭证和端点

MCP 相关

该桥接程序通过 stdio 接收 MCP 客户端请求,并转发至 SPOC 的 HTTP+SSE MCP 服务。也可转发服务端发起的 SSE 通知。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"spoc-app-mcp-bridge": {
"command": "npx",
"args": [
"-y",
"@spocapp/mcp-bridge"
],
"env": {
"SPOC_BEARER": "<SPOC_BEARER>",
"SPOC_ENDPOINT": "<SPOC_ENDPOINT>",
"SPOC_EVENTS_ENDPOINT": "<SPOC_EVENTS_ENDPOINT>",
"SPOC_TIMEOUT_MS": "<SPOC_TIMEOUT_MS>",
"SPOC_DISABLE_SSE": "<SPOC_DISABLE_SSE>",
"SPOC_DEBUG": "<SPOC_DEBUG>"
}
}
}
}
启动命令npx -y @spocapp/mcp-bridge
需要配置的环境变量
SPOC_BEARER密钥Bearer token from https://spoc.com/settings/api-keys. Omit for anonymous access; required for tools that need a principal (e.g. spoc.harness.issue).
SPOC_ENDPOINTHTTP JSON-RPC endpoint. Defaults to https://spoc.com/mcp/rpc.
SPOC_EVENTS_ENDPOINTSSE endpoint for server-initiated notifications. Defaults to https://spoc.com/mcp/events.
SPOC_TIMEOUT_MSHTTP request timeout in milliseconds. Defaults to 30000.
SPOC_DISABLE_SSESet to 1 to skip the SSE event stream (notifications become unavailable).
SPOC_DEBUGSet to 1 to log debug output to stderr.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@spocapp/mcp-bridge0.1.3

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

@spocapp/mcp-bridge

小型 stdio 桥接工具,让 Claude Desktop、Cursor、Zed、Windsurf 和其他仅支持 stdio 的 MCP 客户端能够与 SPOC MCP 服务 spoc.com/mcp/rpc 通信。

它是什么(以及不是什么)

目前大多数 MCP 客户端只支持 stdio 传输——通过子进程的 stdin/stdout 传输 JSON-RPC。SPOC 的 MCP 服务使用 HTTP+SSE,因此可以同时服务多个客户端。这个桥接工具负责连接两者:安装后,将 MCP 客户端指向它,SPOC 的工具就会出现在客户端的工具选择器中。

它不是对 MCP 协议的重写,也不会缓存、批处理或重新解释请求。每个 JSON-RPC 帧都会原样传递。如果你需要的行为与桥接工具目前提供的不同,通常直接在 SPOC 中修复会比修改这个桥接工具更容易。

安装

你无需安装它——大多数 MCP 客户端会在需要时通过 npx 获取:

npx -y @spocapp/mcp-bridge

或者安装一次,然后让客户端指向该二进制文件:

npm install -g @spocapp/mcp-bridge
which spoc-mcp-bridge

配置 MCP 客户端

Claude Desktop

编辑配置文件:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "spoc": {
      "command": "npx",
      "args": ["-y", "@spocapp/mcp-bridge"],
      "env": {
        "SPOC_BEARER": "spk_live_..."
      }
    }
  }
}

重启 Claude Desktop。几秒钟内,SPOC 的工具应该就会出现在工具选择器中。

Cursor

~/.cursor/mcp.json(或依次选择 Settings → MCP → Edit mcp.json):

{
  "mcpServers": {
    "spoc": {
      "command": "npx",
      "args": ["-y", "@spocapp/mcp-bridge"],
      "env": { "SPOC_BEARER": "spk_live_..." }
    }
  }
}
Zed

~/.config/zed/settings.json:

{
  "context_servers": {
    "spoc": {
      "command": {
        "path": "npx",
        "args": ["-y", "@spocapp/mcp-bridge"],
        "env": { "SPOC_BEARER": "spk_live_..." }
      }
    }
  }
}
Windsurf、Continue 等

任何支持 MCP stdio 传输的客户端都可以用相同方式配置。将命令设为 npx -y @spocapp/mcp-bridge,并通过环境变量传入 bearer。

环境变量

变量默认值说明
SPOC_BEARER(未设置)作为 Authorization: Bearer … 发送的令牌。匿名访问时省略。需要主体的工具(例如 spoc.harness.issue)必须设置此项。
SPOC_ENDPOINThttps://spoc.com/mcp/rpcHTTP JSON-RPC 端点。
SPOC_EVENTS_ENDPOINThttps://spoc.com/mcp/events用于服务端发起通知的 SSE 端点。
SPOC_TIMEOUT_MS30000HTTP 请求超时时间,单位为毫秒。
SPOC_DISABLE_SSE(未设置)设为 1 可跳过 SSE 事件流。通知将不可用,其他功能仍正常。
SPOC_DEBUG(未设置)设为 1 可将日志输出到 stderr。当 MCP 客户端静默吞掉错误时,此设置很有用。

Bearer 令牌

在 https://spoc.com/settings/api-keys 生成令牌。请确保勾选 harness:issue 权限范围,否则 SPOC 会拒绝需要签发 harness 的调用。

匿名访问适用于不需要主体的只读工具。只有代表某个身份执行操作的工具才需要 bearer。

冒烟测试

确认桥接工具和上游服务都运行正常:

npx -y @spocapp/mcp-bridge <<< '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"0"}}}'

你应该会收到一行 JSON,其中包含 "name":"spoc" 和 "version":"1.27.0"。如果看到这些内容,支持 MCP 的客户端就可以正常工作。

故障排查

重启后,客户端中未显示工具。 在普通终端中运行上面的冒烟测试。如果返回错误帧,error.data 字段会说明原因。如果完全没有返回内容,请检查客户端日志中是否有启动错误——通常是因为客户端的 PATH 中没有 npx。

调用工具时出现 ERR_INTERNAL。 几乎总是上游问题,而非桥接问题。设置 SPOC_DEBUG=1 并重新运行——桥接会记录原始上游响应。

出现 401 错误。 Bearer 令牌缺失、错误或权限范围不足。请在 https://spoc.com/settings/api-keys 验证。

SSE 无法连接。 通知是可选的。设置 SPOC_DISABLE_SSE=1 后,除服务端发起的通知外,其他功能仍可正常使用。

测试

npm ci
npm run build
npm test        # unit + client-integration suites (offline, no network)

client-integration 测试套件会将 spoc-mcp-bridge 作为真实子进程启动,并通过 Claude Desktop、Cursor、Zed 和 Windsurf 使用的相同 stdio 协议驱动它——包括 initialize、notifications/initialized、tools/list、tools/call、并发进行中的调用、混合类型 ID、SSE 通知、上游错误和超时。如果测试通过,使用 stdio 的 MCP 客户端就能正常工作。

如需同时测试真实的生产端点:

SPOC_LIVE_TEST=1 npm test                              # anonymous only
SPOC_LIVE_TEST=1 SPOC_BEARER=spk_live_... npm test     # + tools/call

CI 会在每次推送和 PR 时,在 Node 18 / 20 / 22 上运行离线测试套件;实时测试套件仅在 main 上运行。

编写自己的客户端

如果你要直接实现 SPOC 的 report-event HMAC 签名(而不是通过此桥接),需要注意一点:SPOC 的规范形式与 JavaScript 的 JSON.stringify 行为一致,会保留非 ASCII 字符,而不是将其转义为 \uXXXX。Python 默认的 json.dumps(...) 会转义非 ASCII 字符——首次包含破折号、弯引号或带重音符号的字符时,就会收到 bad_signature 401 错误。请传入 ensure_ascii=False。

链接

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。