OpenCode MCP 服务器配置:type 和 enabled 字段必填

错误信息

~/.config/opencode/opencode.jsonc 里配置 MCP server 时,如果只写了 commandargs,启动 OpenCode 会报:

Configuration is invalid at ...opencode.jsonc
↳ Expected { readonly "type": "local", ... } | { readonly "type": "remote", ... },
  got {"my-server":{"command":"node","args":["dist/index.js"]}} mcp.servers
↳ Missing key mcp.servers.enabled

旧写法 vs 新写法

旧版本格式(现在会报错):

{
  "mcp": {
    "servers": {
      "my-server": {
        "command": "node",
        "args": ["dist/index.js"]
      }
    }
  }
}

新版本要求每个 server 必须包含 typeenabled

{
  "mcp": {
    "servers": {
      "my-server": {
        "type": "local",
        "enabled": true,
        "command": "node",
        "args": ["dist/index.js"]
      }
    }
  }
}

type 的两个合法值

type用途必填字段
"local"本机可执行文件,由 OpenCode 直接 fork 进程commandargs
"remote"远程 HTTP/HTTPS MCP 端点url

local 示例(Node.js 脚本):

{
  "mcp": {
    "servers": {
      "my-mcp": {
        "type": "local",
        "enabled": true,
        "command": "node",
        "args": ["D:\\project\\my-mcp\\dist\\index.js"]
      }
    }
  }
}

remote 示例(HTTP 端点):

{
  "mcp": {
    "servers": {
      "remote-mcp": {
        "type": "remote",
        "enabled": true,
        "url": "http://localhost:3001/mcp"
      }
    }
  }
}

多个 server 示例

{
  "mcp": {
    "servers": {
      "database-tools": {
        "type": "local",
        "enabled": true,
        "command": "node",
        "args": ["dist/db-mcp.js"]
      },
      "file-tools": {
        "type": "local",
        "enabled": false,
        "command": "python",
        "args": ["-m", "file_mcp"]
      }
    }
  }
}

enabled: false 可以临时禁用某个 server 而不删除配置。

Windows 路径注意

Windows 路径中反斜杠在 JSON 里需要转义:

"args": ["D:\\project\\dist\\index.js"]

或者用正斜杠(Node.js 和大多数 CLI 工具都支持):

"args": ["D:/project/dist/index.js"]