概述
这是在AWS上使用以下堆栈创建简单、安全的MCP服务器的蓝图:
API网关
该组件将MCP服务器暴露于互联网,并处理API调用的授权。
拉姆达
此组件作为无服务器MCP服务器工作,使用“AWS Lambda Web适配器”,该适配器是AWS Lambda的扩展,允许其作为HTTP服务器工作。
干邑
该组件负责JWT令牌的发行和轮换,允许客户端通过API网关和Lambda进行身份验证来访问MCP服务器。
认证
访问MCP服务器功能的客户端身份验证在两个层完成:API网关和Lambda。这两层需要相同的JWT令牌进行身份验证。实现了API网关级别的身份验证,以避免AWS Lambda函数因无效请求而过载。
安装
需求
为了能够使用此库设置自己的MCP服务器,您需要安装以下软件:
- Python 3.10
- 您可以在本地访问的AWS帐户以及部署概述中提到的服务的权限,还可以在AWS控制台中访问此AWS帐户
安装过程
依赖项
- 如果你没有安装python 3.10,请使用brew安装它:
brew install python@3.10 - 使用以下命令在存储库中创建新的虚拟环境
python -m venv .venv - 使用激活新的虚拟环境
source .venv/bin/activate - 使用安装项目依赖项
pip install -r requirements.txt
创建MCP服务器
- 在中设置自定义堆栈前缀和自定义Cognito域前缀
stack_names.py. - 从终端运行
cd aws-vault exec然后cdk deploy(您也可以使用不同的AWS身份验证方法)。 - 创建堆栈后,CDK部署在终端中打印API网关URL(MCP服务器URL)的URL。将此URL保存为以后需要的URL。这是您的MCP服务器的URL。
- 要能够调用MCP服务器,您需要:
1. 从Cognito AWS服务(处理令牌发放和轮换)检索授权令牌。要获取MCP服务器的访问令牌,请执行以下操作: 1. 首先检索 Client ID 和 Client secret 从AWS控制台Cognito服务,在 us-east-1 区域内 MCPServerWorkshopPool 为了 MCPServerWorkshopClient (在应用程序客户端中找到)。 1. 将这些凭据放入 auth.py 此存储库中的文件,并使用运行 python auth.py。这应该会打印出您对MCP服务器的访问令牌。将此令牌保存到步骤5。 1. 放置 Cognito User pool ID 在Lambda函数的环境变量中,名为 USER_POOL_ID: 1. 搜索 MCPServerWorkshopLambda 并查找使用堆栈名称(前缀+WorhsopMCPServer)创建的Lambda 1. 导航到配置–>环境变量。单击“编辑”。使用以下命令添加新的键值对 USER_POOL_ID 作为关键,你的 Cognito User pool ID 作为价值。 1. 这是必要的,因此Lambda函数知道在哪里可以找到用于验证用户请求的公钥。如果不放置此环境变量,则函数(正在运行MCP服务器)将无法运行。
- 要测试在线MCP服务器,请使用以下命令运行MCP检查器
npx @modelcontextprotocol/inspector:
1. 选择 Streamable HTTP 作为传输协议。 1. 粘贴从以下位置检索到的URL step 3 进入URL字段。 1. 从粘贴检索到的访问令牌 step 4.2 按原样进入认证/承载令牌字段。
- 连接到MCP服务器后,您可以通过以下方式测试MCP服务器的不同工具是如何工作的:
1. 点击 Tools 1. 点击 List Tools 1. 点击工具名称(例如。 echo_text) 1. 工具检查器窗口应出现在右侧,带有输入字段。 1. 在输入字段中添加值,然后单击run 1. 工具应该运行 1. 您应该能够通过在右侧的工具检查器窗口中向下滚动来观察响应
