OpenProgram Docs

MCP#

接入任意 MCP(Model Context Protocol)server,它的工具会以 <name>__<tool> 的形式出现在聊天里供模型调用。这一页讲怎么加 server、配置存在哪、支持哪些传输方式。

快速上手#

openprogram mcp add drawio npx -y @drawio/mcp     # 加一个 stdio server,立即生效
openprogram mcp list                              # 每个已配置 server 的状态
openprogram mcp show drawio                       # 该 server 的工具与完整 schema

mcp add 的选项:--env KEY=VALUE(注入子进程环境变量,可重复)、--timeout(启动与单次调用超时秒数)、--disabled(只写配置不启动)。name 会用作该 server 所有工具的前缀(<name>__<tool>)。

全部子命令:

openprogram mcp list | show | add | rm | restart | enable | disable | edit | test
  • rm 停止并删除配置;enable / disable 切换(disable 保留配置)。
  • edit$EDITOR 直接改配置文件——HTTP / SSE 类型的 server 目前通过它添加(add 只覆盖 stdio)。
  • test 用一份临时配置试拉起 server 并确认能返回工具列表,不写盘。

管理命令与常驻的 OpenProgram 后台 worker 通信;worker 未运行时先 openprogram worker start 启动(用 openprogram status 查看状态)。

配置存哪#

~/.openprogram/mcp_servers.json(使用 --profile <name> 时是 ~/.openprogram-<name>/mcp_servers.json)。格式:

{
  "servers": {
    "drawio": {
      "type": "local",
      "command": ["npx", "-y", "@drawio/mcp"],
      "env": {},
      "enabled": true,
      "timeout_seconds": 30
    },
    "linear": {
      "type": "http",
      "url": "https://mcp.linear.app/mcp",
      "auth": {"kind": "oauth", "client_name": "OpenProgram"},
      "enabled": true
    }
  }
}

传输与认证#

type 说明 用到的字段
local stdio 子进程 commandenv
http Streamable HTTP urlheadersauth
sse 旧式 SSE urlheadersauth

auth.kind 支持 none / bearertoken 字段)/ oauth(OAuth 2.1 PKCE;支持动态客户端注册的 server 零配置即可,预注册客户端的 server 才需要填 client_id / client_secret)。

OAuth 只需授权一次#

OAuth server 首次连接时,OpenProgram 会在浏览器打开授权页,并用 localhost 回调接住跳转。整个流程产出的状态——access / refresh token、动态客户端注册信息、发现到的授权端点——都会持久化到 ~/.openprogram/mcp_tokens/<server>.json(权限 0600)。之后的每次连接(包括 worker 重启后)都复用存储的 token;token 过期时用 refresh token 在后台静默续期。只有 refresh token 本身被拒绝(服务端吊销或过期)时才会重新弹出浏览器,管理界面会把该 server 标记为需要重新认证。要换账号或重头来过,POST /api/mcp/servers/{name}/auth/clear 会清空存储状态并重启该 server。

除了工具,MCP 的另外两类原语——resources 和 prompts——也通过一组内置 meta 工具暴露给模型(见内置工具mcp_meta)。

Last updated · 2026-08-13