MCP 配置 JSON 字段说明

MCP 客户端通过 JSON 配置文件定义要启动的 Server。本文详细说明每个字段的含义、可选值和常见写法。

配置文件结构

一个典型的 MCP 配置文件结构如下:

{
  "mcpServers": {
    "server-name": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path"],
      "env": {
        "API_KEY": "your-key-here"
      }
    }
  }
}

字段详解

mcpServers(顶层对象)

包含所有 MCP Server 配置的容器。每个键是 Server 的标识名(自定义),值是该 Server 的配置对象。

command(必填)

启动 MCP Server 的可执行命令。常见值:

注意:command 必须在系统 PATH 中可找到,或者使用完整路径。

args(必填)

传递给 command 的参数数组。每个参数是一个独立的字符串元素:

// 正确写法:每个参数独立
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/name/docs"]

// 错误写法:不要把多个参数合并为一个字符串
"args": ["-y @modelcontextprotocol/server-filesystem /Users/name/docs"]

env(可选)

传递给 Server 进程的环境变量。用于提供 API Key、Token 等敏感配置:

"env": {
  "GITHUB_TOKEN": "ghp_xxxxxxxxxxxx",
  "API_BASE_URL": "https://api.example.com"
}

这些环境变量只对该 Server 进程可见,不会影响系统环境。

常见配置模式

npx 运行 npm 包

{
  "command": "npx",
  "args": ["-y", "package-name", "arg1", "arg2"]
}

-y 参数表示自动确认安装,避免交互式提示阻塞启动。

uvx 运行 Python 包

{
  "command": "uvx",
  "args": ["package-name", "--option", "value"]
}

uvx 是 uv 工具链的一部分,需要先安装 uv:curl -LsSf https://astral.sh/uv/install.sh | sh

Docker 运行

{
  "command": "docker",
  "args": ["run", "-i", "--rm", "image-name:tag"]
}

注意必须包含 -i(交互模式)以保持 stdio 通信。

注意事项

常见问题

command 写完整路径还是只写命令名?
如果命令在系统 PATH 中,写命令名即可(如 "npx")。如果使用 nvm 等版本管理器,PATH 可能不包含该命令,此时需要写完整路径(如 "/Users/name/.nvm/versions/node/v20.0.0/bin/npx")。
args 中的路径可以用波浪号(~)吗?
取决于 Server 的实现。大多数情况下建议使用绝对路径,因为波浪号展开是 Shell 的功能,而 MCP Server 通常不经过 Shell 启动。
env 中设置的变量会覆盖系统环境变量吗?
是的,env 中的变量会覆盖同名的系统环境变量,但仅对该 Server 进程生效。

相关链接