复合MCP图案
复合MCP模式为使用多个相关API并希望在Claude Code、Cursor、Gemini等AI构建工具中通过MCP使用它们的开发人员提供了一种实现模式。该模式演示了如何在单个MCP工具调用中公开多个API。其结果是大大简化了最终开发人员的体验。
示例实现
AWS提供了一组非常流行的与基础设施相关的API,用于配置s3存储桶、数据库、服务器等。这些通常由内部工程团队使用,需要集中治理(AWS凭据、命名约定等)。复合MCP模式可用于公开单个MCP服务并集中管理需求,从而确保开发人员的生产力和持续的合规性,而不是公开特定的API端点或MCP服务的单个工具。
1.将API连接到Postman
使用Postman Public API网络的AWS集合,我们可以看到四类基础设施:
- 存储(s3)
- 网络(vpc)
- 服务器(ec2)
- 数据库(rds)
将这些添加到工作区后,将AWS访问和密钥添加到 金库。您还可以指定集合默认值。在下面的示例中,区域被设置为环境配置。
2.使用Flows创建复合服务
Postman流将提供工具,为特定端点创建具有分支逻辑的可视化工作流。正是这种流最终将作为单个MCP服务公开。确保您正在使用Flow操作。(寻找闪电图标)。您的流的具体细节将与AWS示例不同,但总体模式是相同的:
在“设置”下,确保添加了任何配置变量。对于我们的示例,这将是AWS密钥。在流级别添加它们可以确保不必公开传递任何自信的信息,并有助于保持下游实现非常简单。开发人员不需要访问密钥。
定义工具定义
要将您的流作为MCP公开,您必须创建一个名为“工具定义”的场景。场景允许您创建执行场景并传入请求值。因为复合MCP模式将是一个MCP工具,所以工具定义定义了Postman生成MCP所需的结构。
添加一个新的场景toolDefinition,并为其提供JSON正文,类似于下面。确保定义了所需的输入值。对于AWS复合MCP,我们需要区域和基础设施类型。
{
"tools": [
{
"name": "createAWSInfrastructure",
"description": "create any type of aws infra",
"inputSchema": {
"type": "object",
"properties": {
"infrastructureType": {
"type": "string",
"description": "database,server,storage, or ec2"
},
"region": {
"type": "string",
"description": "AWS region you want this resource created in. eg: us-east-1"
}
}
}
}
]
}将请求参数映射到变量
现在定义了toolDefinition场景,您必须将body参数映射到流变量。路径必须是 arguments.propertyname例如,使用上面的工具定义JSON,您需要使用 arguments.infrastructureType 和 arguments.region。确保你是从身体和参数映射的。
mapping toolDefinition properties
添加分支逻辑
根据我们的复合逻辑,您需要实现分支逻辑。这个分支是您确定调用哪个底层API的地方。对于AWS示例,我们将使用刚刚创建的变量在infrastructureType上进行分支。
处理API实现
假设基础设施类型是“存储”,然后我们想要实现从CloudInfra Collection创建S3 Bucket的API调用
如果您注意到,Create S3 bucket API需要两个参数:region和bucketname,region是我们通过工具定义传入的。我们本可以添加一个额外的工具定义属性,但由于这个API端点是唯一需要这个值的端点,我们可以利用Flow使用AI创建的能力来生成bucketName。在上面的示例中,我们提供了一个根据历史生成名称并符合AWS bucket命名约定的提示:
根据历史上这一天发生的有趣的事情生成一个12个字符的名字。这个名字可以包含一个hypthen,但只能包含小写字母
处理响应
剩下的就是处理回应。在我们的示例中,我们返回一条确认消息,如果存在,则返回名称。
部署MCP
复合服务完成后,点击部署。这将为您提供远程MCP端点的邮递员url。点击右侧的小图标将带您进入MCP入口。
一旦你有了MCP端点,你可以通过点击连接来测试它。你应该看看你可用的工具。输入一些值并进行测试。
此时,您的复合MCP服务已完成。值得庆幸的是,由于您是在Postman上构建的,因此开发人员将集合作为单个MCP工具使用的体验不仅很棒,您还可以通过以下方式轻松添加单元测试、文档编制、监控等 代理 模式,以确保您的服务继续运行。
3.与AI工具集成
现在您有一个作为远程服务器运行的复合MCP,您可以将其添加到您最喜欢的AI工具中。例如,如果您使用的是Google Gemini CLI,则可以执行以下命令:
gemini mcp add --scope user --transport http yourServiceName https://the-postman-mcp-url-from-deploy
