使用说明
Cloud-Native Serverless Model-Context-Protocol (MCP) Server
将模型上下文协议服务器部署到AWS Lambda,无需担心基础设施问题
CloudMCP是一个Golang库,简化了 模型上下文协议(MCP) 服务器到 AWS Lambda 后面A API网关,使用AWS CDK作为基础设施代码。它弥合了两者之间的差距 模型上下文协议 以及AWS无服务器基础架构。在Go中编写MCP工具,在几分钟内将其部署为Lambda函数。没有样板,没有基础设施难题。
为什么 cloudmcp 图书馆?
构建MCP服务器很容易。将它们作为具有适当身份验证、扩展和监控的最终产品部署到生产中需要付出真正的努力。这个库消除了这种摩擦,并为您提供了开箱即用的生产就绪设置。
您将获得:
- 建立在 官方Go MCP SDK 默认情况下,确保严格的协议正确性、长期兼容性和高性能的生产级MCP服务器。
- 无服务器优先架构 具有即时自动缩放、零服务器管理、按使用付费经济性以及完全专注于MCP逻辑而非基础设施的干净开发人员体验。
- 生产级安全 在AWS API网关使用作战测试认证和授权层。
- 可插拔身份提供者 使用AWS Cognito、Auth0等进行无缝JWT验证。
- 基于AWS IAM的安全 用于细粒度权限、安全服务交互和云原生去极化。
- 基础设施即代码 通过使用AWS CDK进行版本控制、可重复的部署。
- 开箱即用的可观察性 CloudWatch为每个MCP请求记录日志、指标和结构化跟踪。
- 一次指挥部署 在全球范围内运送新的MCP工具和服务器,几乎没有运营负担。
- 无需费力即可移植到服务器(长时间运行)模式 当您的规模或延迟配置文件需要时,无需更改代码,即可从Lambda无缝切换到持久服务器部署。
快速开始
go get github.com/fogfish/cloudmcp
看 examples/helloworld 以一个完整的工作示例作为开始。下面是服务器的简约骨架。
定义您的MCP工具,添加部署配置,运行 cdk deploy.您的MCP服务器现在位于API网关上,已准备好让AI助手呼叫。
import (
"github.com/modelcontextprotocol/go-sdk/mcp"
"github.com/fogfish/cloudmcp"
)
// define your tool using **offical Golang SDK**
func Sayer(ctx context.Context, req *mcp.CallToolRequest, input Input) (*mcp.CallToolResult, Output, error) {
//...
}
// define your server using **offical Golang SDK**
func HelloWorld() (*mcp.Server, error) {
server := mcp.NewServer(/* ... */)
return server, nil
}
// deploy MPC server as serverless gateway
func main() {
cloudmcp.New(server.HelloWorld).
Hostless().
AccessApiKey("access", "secret").
Build()
}
无服务器MCP
图书馆同时提供 高级API 用于以最小的配置将整个MCP服务器部署为Lambda函数,以及 低级API 用于对基础架构进行高级、细粒度的控制。这两种方法都需要对AWS CDK v2有基本的了解,但低级API假设您正在编写完整的IaC,而高级API则提供了一个简单而强大的抽象,大大降低了配置的复杂性。当您将MCP集成到现有的云原生应用程序中时,需要使用低级api,对于备用MCP部署,高级api就足够了。
高级API使用构建器模式,您只需提供服务器工厂功能,而库则负责连接、打包和将MCP服务器部署到Lambda(它自动生成Lambda代码):
cloudmcp.New( func() (*mcp.Server, error) )
只需要配置 托管 和 安全 部署前的选项。
托管
MCP服务器托管在AWS API网关之后。您可以使用默认主机名和TLS证书(所谓的 无主机 模式),或提供自定义主机名和TLS证书。使用自定义域需要正确配置AWS Route 53中的DNS区域,并通过AWS证书管理器配置TLS证书(有关详细说明,请参阅AWS官方文档)。
.Hostless()使用默认主机名作为端点.Host(domain, tlsarn)配置自定义端点
安全
使用单个方法调用选择您的安全模型:
.AccessPublic()-无身份验证(仅用于开发).AccessApiKey(access, secret)-基于简单密钥的身份验证.AccessJWT(issuer, audiences...)-行业标准JWT代币.AccessAwsCognito(poolArn, clients...)-与AWS Cognito集成.AllowAccessIAM(authorizer, principal)-AWS到AWS的安全通信
IAM身份验证
由于该库通过ApiKey和IAM增强了身份验证选项,因此它提供了一个简单的客户端库,用于创建具有内置身份验证配置的MCP客户端传输。看 pkg/auth
import (
"github.com/fogfish/cloudmcp/pkg/auth"
)
transport, err := auth.NewTransportIAM(/* ... */)
client := mcp.NewClient(/* ... */)
client.Connect(context.Backgorund(), transport, nil)
CloudWatch日志
自动创建具有可配置保留的日志组。日志显示在 /app/{ServerName} 保留5天(可调)。
示例
这两个例子都包括工作代码和可部署的单个 cdk deploy 命令。
在VS代码中使用
无服务器MCP的集成与其他任何MCP一样简单 mcp.json
{
"servers": {
"helloworld": {
"type": "http",
"url": "https://0000000000.execute-api.eu-west-1.amazonaws.com/api/helloworld",
"headers": {
"Authorization": "Basic YWNjZXNzOnNlY3JldA"
}
},
}
}
何时使用 cloudmcp 图书馆
✅ 您需要生产中的MCP服务器,而不仅仅是本地开发
✅ 你想要无服务器的好处:自动扩展、按使用付费、零维护
✅ 您使用AWS或愿意在那里部署
✅ 您希望使用AWS CDK将基础架构视为代码
❌ 您需要WebSocket/SSE流(Lambda代理限制)
❌ 您已选择其他云提供商
需求
- 转到1.25+
- AWS账户
- AWS-CDK-CLI:
npm install -g aws-cdk - 已配置AWS凭据
相关项目
- 模型上下文协议 -MCP官方规范
- MCP Go SDK -官方Go MCP实施
- 飞毛腿 -无服务器CDK实用程序(依赖于cloudmcp)
贡献
iq 是 麻省理工学院 通过GitHub pull请求获得许可并接受贡献:
- 叉起来
- 创建功能分支(
git checkout -b my-new-feature) - 提交您的更改(
git commit -am 'Added some feature') - 推到分支(
git push origin my-new-feature) - 创建新的Pull请求