这是一个在安全的AWS Nitro enclaves实例中运行的gmail MCP服务器。它最初是从Claude Post MCP服务器分叉出来的。大多数MCP服务器是通过stdio传输方式本地运行的;我们遵循了这个指南,使用sse传输实现了远程MCP服务器。
要使用此MCP服务器,您需要一个应用专用密码。
然后只需将以下内容添加到客户端的mcp.json文件中。
"gmail_mcp": {
"url": "https://gmail.mcp.freysa.ai/sse/?ADDR=<your.email@gmail.com>&ASP=<your app-specific password>"
}
请注意,您可能需要重启您的客户端。
此实现是一个概念验证。在URL中传递应用专用密码不是一个安全模式,因为:
不幸的是,当前的MCP客户端在连接到服务器的方式上存在限制。在发布时,MCP规范没有定义用于SSE服务器的标准认证机制。这意味着我们不能使用更安全的模式,如bearer token或其他通常首选的授权头。
为了增加安全性,请考虑:
AWS Nitro Enclaves提供了隔离的计算环境,通过基于硬件的身份验证来增强安全性。当代码在Nitro Enclave中运行时,平台会生成代码身份和状态的加密测量值。这些测量值作为可验证的保证,确保代码未被修改,并且正在按预期执行,从而防止篡改或未经授权的修改。有关更多信息,请参阅这篇博客文章。
我们使用Nitriding快速部署代码到AWS Nitro TEE。
要验证运行在TEE中的代码库是否是我们预期的代码库,您必须自己重现其在AWS Nitro enclave中的运行。操作步骤如下。一旦运行起来,您可以按照以下步骤使用此仓库进行验证。
cd verifier
pnpm install && pnpm run build
cd mcp/react-ts-webpack
pnpm i && pnpm run dev
http://localhost:8080/。您将被提示添加两个字段(a) PCR2哈希,这是代码库的哈希值
(b) 代码认证,由AWS签名
您可以按照以下步骤重现此服务器在TEE中的运行。
使用AWS EC2控制台选择足够大的实例,并确保启用Nitro。
确保检查实例的安全组,以确认应用程序所需的端口已开放。
将此仓库克隆到您的ec2实例中。
运行设置脚本以下载所有必要的依赖项。
sudo /setup.sh
sudo nano /etc/nitro_enclaves/allocator.yaml
sudo systemctl restart nitro-enclaves-allocator.service
make
make run
要实际使用MCP服务器,您还需要运行gvproxy,如下所示。
screen
./gvproxy.sh
然后您可以curl健康检查端点以确认MCP服务器正在enclave中运行。
curl http://127.0.0.1:7047/