一、多MCP服务器的配置
要构建多MCP服务器协同工作流,首先需要掌握如何在claude.json(或其他MCP客户端配置文件)中同时配置多个MCP服务器。每个服务器独立配置,拥有独立的启动命令、环境变量和参数设置。
1.1 在claude.json中配置多个MCP服务器
MCP客户端(如Claude Desktop、Claude Code等)通过JSON配置文件管理所有可用的MCP服务器。每个服务器在mcpServers对象中以唯一名称注册,包含启动命令和参数配置。
{
"mcpServers": {
"brave-search": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-server-brave-search"],
"env": {
"BRAVE_API_KEY": "your-brave-api-key"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "your-github-token"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-server-postgres"],
"env": {
"DATABASE_URL": "postgresql://user:pass@localhost:5432/mydb"
}
}
}
}
1.2 每个服务器独立命名和配置
在配置多服务器时,每个服务器必须有唯一的名称标识。命名建议采用小写字母加连字符的形式,如brave-search、filesystem、github等。每个服务器的配置项包括:
- command:启动服务器的可执行命令,通常是npx、node或python
- args:传递给命令的参数数组,包括MCP服务器包名和运行时参数
- env:环境变量配置,用于设置API密钥、数据库连接字符串等敏感信息
- disabled:可选字段,设为true可临时禁用某个服务器而不删除配置
一个MCP服务器本质上是一个独立的子进程,通过标准输入/输出(stdin/stdout)与客户端(AI模型)进行JSON-RPC协议通信。多个服务器同时运行时,它们之间相互隔离,彼此不会产生干扰。点击复制
1.3 多服务器的启动和连接管理
当MCP客户端启动时,它会读取配置文件并依次启动每个已启用的MCP服务器。每个服务器作为一个独立的子进程运行,通过进程间通信(IPC)与客户端交换消息。客户端维护一个服务器注册表,记录每个服务器的可用工具(Tools)、资源(Resources)和提示(Prompts)。
当AI模型需要调用某个工具时,客户端根据工具名称和服务器映射关系,将请求路由到对应的MCP服务器进程。响应则沿着相同路径返回给AI模型。这种架构确保了多服务器环境下的请求隔离和正确的数据路由。
1.4 服务器之间的隔离
每个MCP服务器运行在独立的进程中,拥有独立的进程空间、环境变量和文件系统访问权限。这种进程级别的隔离提供了以下安全保障:
- 安全边界:一个服务器的配置错误或崩溃不会影响其他服务器的正常运行
- 权限隔离:不同服务器可以配置不同的环境变量和API密钥,避免密钥泄露
- 资源限制:可以为每个服务器分别设置资源使用限制(CPU、内存)
- 独立生命周期:可以单独重启或停止某个服务器而不影响其他服务器
最佳实践:建议为每个服务器配置最小权限原则(Principle of Least Privilege)。例如,文件系统服务器只挂载必要的目录,数据库服务器只配置只读用户用于查询操作,避免在生产环境中使用管理员权限。
二、工作流1:代码审查工作流
代码审查是软件开发中的关键环节。本工作流将多个MCP服务器编排成一个自动化的代码审查流水线,从搜索规范到创建跟踪Issue,全程自动化完成。
Brave Search 搜索最新代码规范
使用Brave Search搜索指定语言或框架的最新代码规范、最佳实践和编码标准文档,确保审查依据是最新版本。
Git 获取Diff
通过Git MCP服务器获取当前分支与目标分支之间的差异(diff),包括新增、修改和删除的文件变更内容。
Filesystem 读取变更文件
根据Git diff提供的文件列表,使用Filesystem服务器读取完整代码文件,获取变更的上下文信息。
OpenAI/GPT 进行代码审查
将代码变更和搜索到的最佳实践一同发送给OpenAI MCP服务器,由GPT模型进行自动审查并生成审查意见。
Slack 发送审查结果
通过Slack MCP服务器将代码审查结果以格式化消息发送到指定的团队频道,通知相关开发人员。
Linear 创建跟踪Issue
对于审查中发现的问题,使用Linear MCP服务器自动创建跟踪Issue,分配处理人并设置优先级。
工作流执行过程
整个代码审查工作流按以下步骤执行:
- AI模型识别到有新的代码变更后,首先调用Brave Search搜索相关领域的最新代码规范文档
- 调用Git服务器获取当前变更的详细diff信息,包括文件列表、改动行数和具体变更内容
- 根据diff中的文件路径列表,依次调用Filesystem服务器读取每个文件的完整内容,获取足够的上下文
- 将搜索到的规范文档和代码变更内容整合成审查提示词,调用OpenAI服务器进行AI驱动的代码审查
- 接收审查结果后,通过Slack服务器将审查摘要和建议发送到团队协作频道
- 对审查发现的Bug或改进建议,使用Linear服务器创建Issue并设置标签、优先级和负责人
代码审查工作流的核心价值在于:将搜索、分析、审查、通知和跟踪整合为一个自动化流程,减少人工操作的繁琐步骤,让开发者专注于解决真正的问题。点击复制
三、工作流2:Bug修复工作流
当生产环境出现Bug时,快速定位和修复是开发团队的当务之急。本工作流从错误监控到提交修复再到创建PR,形成完整的Bug修复闭环。
Sentry 获取错误详情
通过Sentry MCP服务器获取最新的错误报告和堆栈跟踪信息,包括错误发生时间、频率、影响的用户数等元数据。
Git 检出Bug所在分支
根据错误报告中涉及的代码版本,使用Git服务器检出对应的分支或标签,确保修复基于正确的代码基线。
Sequential Thinking 分析根因
使用Sequential Thinking MCP服务器进行结构化推理,结合错误堆栈和代码上下文逐步分析Bug的根本原因。
Filesystem 编辑修复代码
确定根因后,使用Filesystem服务器读取并编辑相关源文件,在正确位置应用修复代码。
Git 提交修复
使用Git服务器暂存修改、创建提交并编写规范的提交信息,包括Bug描述、根因分析和修复说明。
GitHub 创建PR
通过GitHub MCP服务器将修复分支推送到远程并创建Pull Request,设置审查者、标签和关联Issue。
Linear 更新Issue状态
最后使用Linear服务器将原始的Bug Issue标记为"已修复"状态,并附上PR链接供团队追踪。
工作流执行过程
- AI模型收到Bug修复指令后,首先调用Sentry服务器获取错误的完整详情,包括堆栈跟踪、错误频率、影响范围和环境信息
- 根据Sentry报告中的版本信息,调用Git服务器检出包含Bug的分支
- 调用Sequential Thinking服务器进行多步骤推理分析,模拟执行路径、检查变量状态、推断条件分支,精准定位根因
- 确定修复方案后,调用Filesystem服务器读取、编辑和验证受影响的源文件
- 修复验证通过后,调用Git服务器暂存更改并创建提交,提交信息包含Bug编号和修复描述
- 调用GitHub服务器推送分支并创建Pull Request,设置code review审查者和相关标签
- 最后调用Linear服务器将Bug Issue状态更新为"Fixed",添加PR链接和修复备注
重要说明:在生产环境执行Bug修复时,务必确保在修复前已充分理解业务逻辑和代码上下文。AI辅助代码编辑虽然高效,但仍需人工审查确认修复方案的正确性,特别是在涉及数据完整性和资金交易的场景中。
四、工作流3:文档生成工作流
项目文档的维护往往落后于代码变更。本工作流实现从源代码到API文档的自动生成,并将文档同步到协作平台,确保文档始终与代码保持一致。
Filesystem 读取源代码
使用Filesystem服务器递归读取项目中的源代码文件,重点关注函数签名、类定义、接口声明和注释块。
OpenAI 生成API文档
将源代码发送给OpenAI MCP服务器,由GPT模型分析代码结构并生成规范的API文档,包括参数说明、返回值类型和使用示例。
Notion 创建文档页面
通过Notion MCP服务器在指定知识库中创建新的文档页面,按照预设的模板格式组织API文档内容。
Google Drive 备份文档
使用Google Drive MCP服务器将生成的文档文件另存为备份副本,确保文档在Notion不可用时仍有其他访问途径。
Slack 通知团队
通过Slack MCP服务器在团队频道发送文档更新通知,包含文档标题、更新摘要和Notion页面链接。
工作流执行过程
- AI模型按项目结构调用Filesystem服务器,递归读取需要生成文档的源代码目录中的所有相关文件
- 将收集到的代码内容按模块组织后,调用OpenAI服务器进行分析,生成结构化的API文档,包含模块概述、函数签名、参数说明、返回值类型、错误处理和代码示例
- 调用Notion服务器在文档数据库中创建新页面,使用预设的文档模板组织内容,包括目录、版本号和最后更新日期
- 调用Google Drive服务器将文档导出为PDF或Markdown格式,保存到团队共享的文档备份目录中
- 最后调用Slack服务器向团队频道发送格式化通知消息,包含新文档的链接、变更摘要和查阅建议
文档自动化的核心收益:消除文档维护的滞后性、减少开发者手动写文档的负担、保证文档格式的一致性、降低团队知识传递的成本。点击复制
五、工作流4:数据分析和报告
数据分析工作流将数据库查询、日志搜索、结果保存和报告生成整合为一个自动化流程,帮助团队快速获取业务洞察。
PostgreSQL 查询业务数据
通过PostgreSQL MCP服务器连接业务数据库,执行SQL查询获取指定时间段内的业务指标数据,如用户增长、收入统计和转化率。
Elasticsearch 搜索相关日志
使用Elasticsearch MCP服务器搜索和分析系统日志,将业务数据与系统行为数据关联起来,发现数据背后的原因。
Filesystem 保存分析结果
将PostgreSQL和Elasticsearch获取的数据整合后,使用Filesystem服务器保存为CSV或JSON格式的分析中间文件。
OpenAI 生成分析报告
将分析数据发送给OpenAI MCP服务器,生成包含图表描述、趋势分析和业务建议的自然语言分析报告。
Gmail 发送报告邮件
通过Gmail MCP服务器将生成的分析报告以邮件形式发送给指定收件人列表,支持HTML格式和附件。
工作流执行过程
- AI模型根据分析需求构造SQL查询,调用PostgreSQL服务器执行查询并获取结构化业务数据
- 为补充数据上下文,调用Elasticsearch服务器搜索与业务数据时间范围匹配的系统日志,获取用户行为和技术指标
- 将两个数据源的结果整合后,调用Filesystem服务器保存原始数据和分析中间文件,便于后续审查和追溯
- 将整合后的数据和分析目标发送给OpenAI服务器,生成包含数据可视化描述、趋势解读、异常检测和业务建议的分析报告
- 最后调用Gmail服务器将分析报告以格式化邮件发送给管理层和相关团队成员,完成数据分析闭环
提示:在数据分析工作流中,建议将敏感数据脱敏后再发送给AI模型进行处理。可以在SQL查询阶段就使用脱敏函数(如PostgreSQL的pgp_sym_decrypt或自定义掩码函数),确保AI模型只接触到匿名的聚合数据。
六、工作流设计原则
设计和构建健壮的多MCP服务器工作流时,需要遵循以下几项核心原则。这些原则借鉴了软件工程和系统设计的最佳实践,确保工作流的可靠性、可维护性和可扩展性。
6.1 任务分解:将复杂任务拆分为原子操作步骤
每个MCP服务器提供一组特定的工具能力。设计工作流时,需要将复杂的业务任务分解为一系列原子操作步骤,每个步骤对应一个MCP服务器的工具调用。任务分解的原则包括:
- 单一职责:每个步骤只做一件事,如"读取文件"和"写入文件"应分为两个独立步骤
- 可组合性:步骤之间通过数据依赖关系连接,每个步骤的输出应清晰定义
- 可测试性:每个步骤可以独立验证和测试,不依赖于其他步骤的状态
- 可重试性:步骤执行失败时,可以在不影响整体工作流的前提下单独重试
// 任务分解示例:代码审查工作流
const codeReviewWorkflow = [
{ server: 'brave-search', action: 'search', params: { query: 'latest React best practices' } },
{ server: 'git', action: 'getDiff', params: { base: 'main', head: 'feature-branch' } },
{ server: 'filesystem', action: 'readFiles', params: { paths: ['src/Component.tsx'] } },
{ server: 'openai', action: 'analyze', params: { prompt: 'Review code...' } },
{ server: 'slack', action: 'sendMessage', params: { channel: '#code-review' } },
{ server: 'linear', action: 'createIssue', params: { title: 'Code review findings' } }
];
6.2 数据传递:工具输出作为下一个工具的输入
工作流的核心是数据在步骤之间的流转。每个MCP服务器工具的输出应该能够无缝地作为下一个工具的输入。实现高效数据传递需要注意:
- 数据格式转换:AI模型负责在不同服务器之间转换数据格式,如将Brave Search的搜索结果转换为OpenAI的审查上下文
- 上下文累积:每一步的处理结果应该逐步累积到上下文中,后续步骤可以引用之前所有步骤的输出
- 数据截断策略:对于大数据集,需要合理截断和摘要,避免超出AI模型的上下文窗口限制
- 中间结果持久化:对于长时间运行的工作流,建议将中间结果保存到文件系统,防止进程崩溃导致数据丢失
6.3 错误处理:单个服务器失败时的降级策略
在多服务器工作流中,单个服务器的故障不应该导致整个工作流的失败。需要设计健壮的错误处理和降级策略:
- 优雅降级:当某个服务器不可用时,工作流应自动跳过该步骤或使用替代方案继续执行
- 超时控制:为每个服务器调用设置合理的超时时间,防止某个服务器挂起导致整个工作流阻塞
- 重试机制:对于网络不稳定等暂时性故障,应实现指数退避重试策略
- 部分结果处理:即使某些数据源不可用,工作流也应能基于已有数据生成有意义的输出
- 错误通知:当降级策略生效时,应通知用户哪些步骤被跳过或使用了替代方案
注意:降级策略应该在设计阶段就明确考虑。不要在运行时才发现某个关键服务器不可用而导致流程中断。建议为每个工作流定义"关键路径"——哪些步骤是必不可少的,哪些步骤可以跳过或延迟执行。
6.4 幂等性设计:确保可重入和一致性
幂等性是指同一个操作执行多次和执行一次产生相同的结果。在工作流设计中,幂等性至关重要:
- Git操作:创建分支、提交代码等操作应设计为幂等的,避免重复执行时产生冲突
- 数据库操作:INSERT语句应使用ON CONFLICT处理重复插入,UPDATE应使用条件更新
- 通知操作:Slack和Gmail等通知服务应检查重复内容,避免发送重复消息
- Issue创建:创建跟踪Issue时应检查是否已存在相同内容的Issue,避免产生重复条目
- 文件操作:文件写入应考虑文件是否已存在,使用覆盖或追加策略需明确
幂等性设计的黄金法则:一个工作流无论执行一次还是执行一百次,产生的最终状态应该是一致的。这不仅是系统设计的要求,也是AI自动化工作流获得用户信任的基础。点击复制
6.5 工作流模板化
为了提高工作效率,建议将常见的工作流模式抽象为可复用的模板。工作流模板包含固定的步骤序列和可配置的参数占位符,用户只需提供具体参数即可快速启动工作流。
模板的核心要素包括:
- 步骤序列:固定的工具调用顺序和数据依赖关系
- 参数定义:用户需要提供的输入参数,如分支名称、数据库查询语句、目标文件路径等
- 错误处理规则:每个步骤的降级策略和失败处理行为
- 输出格式:工作流最终输出的结构和内容模板
实践建议:开始阶段可以先手动执行几次工作流,观察AI模型的执行路径和决策模式。当执行路径稳定后,将其固化为一套提示词指令,再逐步演进为完整的工作流模板。这种渐进式的方法比一次性设计完美的工作流更加实用。