MCP协议与mcp.json配置文件详解(附详细代码)

Written by

in

文章目录
  • MCP(Model Context Protocol,模型上下文协议)是由Anthropic推出的开放标准协议,旨在为大型语言模型与外部工具、数据源之间建立标准化连接通道。它采用客户端-服务器架构,通过JSON-RPC 2.0协议实现通信,支持stdio、SSE、HTTP等多种传输方式。 ​​核心价值​​: ​​功能扩展​​:让AI能够访问外部数据、API和工具 ​​自动化工作流​​:通过工具自动化开发任务 ​​定制化能力​​:根据特定需求定制AI助手能力 ​​数据隐私​​:本地运行MCP服务器,数据不离开本地环境
  • mcp.json是MCP服务的核心配置文件,采用JSON格式定义服务器参数。基本结构如下: { “mcpServers”: { “server_name”: { “type”: “stdio”, “command”: “python”, “args”: [“server.py”], “env”: { “API_KEY”: “your_api_key” }, “description”: “服务器描述” } } }
  • 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配置文件内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Python与Java接入AI模型的MCP协议的原理与实现
  • 目录
    • 一、MCP协议概述
    • 二、mcp.json配置文件结构
    • 三、配置参数详解与对比
      • 核心参数对比表
      • 详细参数说明
        • 1. 传输方式参数(type)
        • 2. 本地命令执行参数
        • 3. 远程服务器参数
        • 4. 环境变量参数(env)
        • 5. 超时配置
    • 四、配置示例
      • 示例1:本地文件系统服务器
        • 示例2:远程GitHub工具服务器
          • 示例3:Web搜索服务器
          • 五、配置位置与优先级
            • 六、最佳实践
              • 1. 安全配置
                • 2. 性能优化
                  • 3. 监控与日志
                    • 4. 版本控制
                    • 七、常见问题与解决方案
                      • 八、总结

                        MCP(Model Context Protocol,模型上下文协议)是由Anthropic推出的开放标准协议,旨在为大型语言模型与外部工具、数据源之间建立标准化连接通道。它采用客户端-服务器架构,通过JSON-RPC 2.0协议实现通信,支持stdio、SSE、HTTP等多种传输方式。

                        ​核心价值​​:

                        • ​功能扩展​​:让AI能够访问外部数据、API和工具
                        • ​自动化工作流​​:通过工具自动化开发任务
                        • ​定制化能力​​:根据特定需求定制AI助手能力
                        • ​数据隐私​​:本地运行MCP服务器,数据不离开本地环境

                        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"
                          }
                        }

                        为子进程设置的环境变量,支持系统环境变量、应用配置和运行时设置。

                        ​安全最佳实践​​:

                        • 避免在配置文件中硬编码敏感信息
                        • 使用环境变量或配置服务器管理敏感信息
                        • 定期轮换API密钥

                        ​示例​​:

                        {
                          "env": {
                            "API_KEY": "${MY_API_KEY}",
                            "LOG_LEVEL": "info",
                            "DATABASE_URL": "${DB_CONNECTION_STRING:-sqlite:///default.db}"
                          }
                        }

                        ​timeout​​:单个工具调用的最大执行时间,包括网络请求的超时时间,不包括服务器初始化时间。

                        ​initTimeout​​:MCP服务器初始化的超时时间,包括进程启动、网络连接建立、握手协议完成等。

                        ​设置建议​​:

                        • 快速操作:5000-10000ms(文件读取、简单查询)
                        • 中等操作:30000-60000ms(数据库查询、API调用)
                        • 长时间操作:120000-300000ms(大文件处理、复杂计算)

                        ​示例​​:

                        {
                          "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。

                        • 启用HTTPS协议加密通信
                        • 实施IP限制,只允许特定IP访问
                        • 使用环境变量管理敏感信息
                        • 定期更新和打补丁

                        • 配置连接池参数(最大连接数、连接超时时间)
                        • 启用缓存机制减少重复计算
                        • 根据硬件资源配置并发处理参数

                        • 启用结构化日志记录
                        • 配置Prometheus监控
                        • 设置合理的日志级别和轮转策略

                        • 将配置文件纳入版本控制系统(如Git)
                        • 为不同环境维护不同的配置文件(开发、测试、生产)
                        • 使用语义化版本规范管理服务器版本

                        问题 可能原因 解决方案
                        服务器无法启动 端口被占用 更改network.port配置,使用未被占用的端口
                        客户端无法连接 主机地址配置错误 检查network.host配置,确保客户端可访问
                        工具调用失败 工具参数配置错误 检查parameters配置,确保参数类型和必填项正确
                        资源访问被拒绝 资源配置错误或权限不足 检查template和list配置,确保资源路径正确
                        身份验证失败 API密钥错误或配置不当 检查authentication配置,确保API密钥正确

                        MCP协议通过标准化的mcp.json配置文件,实现了AI模型与外部工具的无缝连接。掌握配置参数的含义和设置方法,能够帮助开发者构建高效、安全的MCP服务,为AI应用提供强大的扩展能力。建议在实际配置过程中,充分利用MCP Inspector等工具进行可视化验证,结合日志分析进行调试,并遵循最佳实践进行配置优化和安全加固。

                        到此这篇关于MCP协议与mcp.json配置文件详解的文章就介绍到这了,更多相关MCP协议与mcp.json配置文件内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

                        您可能感兴趣的文章:

                        • Python与Java接入AI模型的MCP协议的原理与实现

                        站内搜索