22人参与 • 2026-04-19 • Javascript
mcp(model context protocol,模型上下文协议)是由anthropic推出的开放标准协议,旨在为大型语言模型与外部工具、数据源之间建立标准化连接通道。它采用客户端-服务器架构,通过json-rpc 2.0协议实现通信,支持stdio、sse、http等多种传输方式。
核心价值:
mcp.json是mcp服务的核心配置文件,采用json格式定义服务器参数。基本结构如下:
{
"mcpservers": {
"server_name": {
"type": "stdio",
"command": "python",
"args": ["server.py"],
"env": {
"api_key": "your_api_key"
},
"description": "服务器描述"
}
}
}| 参数类别 | 参数名称 | 类型 | 必需 | 默认值 | 说明 | 适用传输类型 |
|---|---|---|---|---|---|---|
| 基础标识 | server_name | string | 是 | - | 服务器唯一标识符,如"filesystem"、"github" | 所有 |
| 传输方式 | type | string | 否 | 自动推断 | 通信协议类型 | 所有 |
| 本地执行 | command | string | stdio必需 | - | 启动命令或可执行文件路径 | stdio |
| 本地执行 | args | array | 否 | [] | 命令行参数列表 | stdio |
| 远程连接 | url | string | sse/http必需 | - | 远程服务器url地址 | sse/http |
| 远程连接 | headers | object | 否 | {} | http请求头信息 | sse/http |
| 环境变量 | env | object | 否 | {} | 子进程环境变量 | stdio |
| 权限控制 | alwaysallow | array | 否 | [] | 预先授权的工具列表 | 所有 |
| 状态控制 | disabled | boolean | 否 | false | 是否禁用此服务器 | 所有 |
| 超时配置 | timeout | number | 否 | 30000ms | 工具调用超时时间 | 所有 |
| 超时配置 | inittimeout | number | 否 | 10000ms | 服务器初始化超时时间 | 所有 |
| 进程管理 | stderr | string | 否 | "inherit" | 标准错误输出处理方式 | stdio |
| 指令文档 | instructions | string | 否 | - | 服务器使用指南 | 所有 |
| 认证凭据 | credentials | object | 否 | - | 身份验证凭据配置 | 所有 |
可选值:
stdio:标准输入输出流通信,适用于本地进程sse:server-sent events,适用于单向数据流http:标准http请求响应websocket:双向实时通信配置示例:
{
"type": "stdio", // 本地进程通信
"type": "sse", // 远程sse连接
"type": "http" // http协议
}command:要执行的命令或可执行文件路径,支持绝对路径或相对路径,支持环境变量引用(如$home、%userprofile%)。
args:传递给命令的参数列表,按数组顺序传递,支持包含空格的参数。
示例:
{
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user"]
}url:远程mcp服务器的完整url地址,必须包含协议(http://、https://、ws://、wss://),可以包含端口号。
headers:发送到远程服务器的http头部信息,支持环境变量引用和用户字段占位符。
示例:
{
"url": "https://api.example.com/mcp",
"headers": {
"authorization": "bearer ${api_token}",
"x-client-version": "1.0.0"
}
}为子进程设置的环境变量,支持系统环境变量、应用配置和运行时设置。
安全最佳实践:
示例:
{
"env": {
"api_key": "${my_api_key}",
"log_level": "info",
"database_url": "${db_connection_string:-sqlite:///default.db}"
}
}timeout:单个工具调用的最大执行时间,包括网络请求的超时时间,不包括服务器初始化时间。
inittimeout:mcp服务器初始化的超时时间,包括进程启动、网络连接建立、握手协议完成等。
设置建议:
示例:
{
"timeout": 60000, // 60秒工具调用超时
"inittimeout": 15000 // 15秒初始化超时
}{
"mcpservers": {
"filesystem": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user"],
"env": {},
"timeout": 30000
}
}
}{
"mcpservers": {
"github": {
"type": "sse",
"url": "https://api.github.com/mcp",
"headers": {
"authorization": "bearer ${github_token}",
"accept": "application/vnd.github.v3+json"
},
"timeout": 60000
}
}
}{
"mcpservers": {
"web-search": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@smithery/cli@latest", "run", "@smithery-ai/brave-search"],
"env": {
"brave_api_key": "your_brave_api_key"
},
"description": "web搜索工具"
}
}
}mcp配置文件支持多级配置,优先级从高到低:
<workspace>/.comate/mcp.local.json(实验性质)<workspace>/.comate/mcp.json~/.comate/mcp.json合并规则:相同服务器名称后写覆盖先写,优先级local > project > global。
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 服务器无法启动 | 端口被占用 | 更改network.port配置,使用未被占用的端口 |
| 客户端无法连接 | 主机地址配置错误 | 检查network.host配置,确保客户端可访问 |
| 工具调用失败 | 工具参数配置错误 | 检查parameters配置,确保参数类型和必填项正确 |
| 资源访问被拒绝 | 资源配置错误或权限不足 | 检查template和list配置,确保资源路径正确 |
| 身份验证失败 | api密钥错误或配置不当 | 检查authentication配置,确保api密钥正确 |
mcp协议通过标准化的mcp.json配置文件,实现了ai模型与外部工具的无缝连接。掌握配置参数的含义和设置方法,能够帮助开发者构建高效、安全的mcp服务,为ai应用提供强大的扩展能力。建议在实际配置过程中,充分利用mcp inspector等工具进行可视化验证,结合日志分析进行调试,并遵循最佳实践进行配置优化和安全加固。
到此这篇关于mcp协议与mcp.json配置文件详解的文章就介绍到这了,更多相关mcp协议与mcp.json配置文件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论