项目简介
本项目是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在提供天气信息查询功能。它被设计部署在 Google Cloud Run 上,利用 Google Cloud IAM 进行用户身份验证,确保只有授权用户才能访问和使用该服务。为了解决 MCP 协议在早期阶段缺乏内置身份验证的限制,本项目通过一个本地代理服务器 ('mcp_proxy.ts') 实现了安全的访问控制。
注意: 本项目主要关注的是 工具 (Tools) 功能的实现,提供 'get_alerts' 和 'get_forecast' 两个工具用于获取天气警报和天气预报。
主要功能点
- 天气信息查询工具:
- 'get_alerts': 获取指定州的天气警报信息。
- 'get_forecast': 获取指定经纬度的天气预报信息。
- Google Cloud Run 部署: 易于部署到 Google Cloud Run,利用其serverless特性和可扩展性。
- IAM 身份验证: 通过 Google Cloud IAM 进行身份验证,保障服务安全。
- SSE 协议支持: 使用 SSE (Server-Sent Events) 协议与 MCP 客户端通信,实现实时的事件推送。
- 本地代理 (Proxy) 访问: 提供本地代理服务器,简化本地开发和测试,并处理身份验证。
安装步骤
-
克隆仓库:
git clone https://github.com/the-freetech-company/mcp-sse-authenticated-cloud-run cd mcp-sse-authenticated-cloud-run -
安装依赖:
npm install -
部署到 Google Cloud Run:
- 确保已安装 Google Cloud SDK 并完成初始化配置。
- 修改 'deploy.sh' 脚本,替换以下占位符:
- 'PROJECT_ID': 你的 Google Cloud 项目 ID
- 'REGION': 你偏好的 GCP 区域
- 'SERVICE_ACCOUNT_EMAIL': 具有足够权限的服务账户邮箱
- 运行部署脚本:
chmod +x deploy.sh ./deploy.sh - 部署成功后,脚本会输出 Cloud Run 应用的 URL。
-
配置本地代理:
- 修改 'mcp_proxy.ts' 文件,替换以下占位符:
- 'CLOUD_RUN_URL': 替换为上一步获取的 Cloud Run 应用 URL
- 'PROJECT_ID': 你的 Google Cloud 项目 ID
- 修改 'mcp_proxy.ts' 文件,替换以下占位符:
-
运行本地代理:
npx ts-node mcp_proxy.ts首次运行可能会打开浏览器进行 Google Cloud 身份验证,请按照提示完成验证。
服务器配置
对于 MCP 客户端(例如 Cursor),你需要配置 MCP 服务器连接信息。由于本项目使用了本地代理,你需要配置连接到本地代理服务器。
以下是 MCP 客户端配置的 JSON 示例,请根据你的实际情况进行调整:
{ "servers": [ { "name": "Authenticated Cloud Run MCP Weather Server", "command": "npx ts-node mcp_proxy.ts", "args": [], "serverTransport": "sse", "serverUrl": "http://localhost:3030/sse", "capabilities": [ "tools" ] } ] }
配置参数说明:
- 'name': 服务器名称,可以自定义。
- 'command': 本地代理服务器的启动命令,这里指向 'mcp_proxy.ts' 脚本的执行命令。
- 'args': 启动命令的参数,本项目本地代理脚本无需额外参数,因此为空数组 '[]'。
- 'serverTransport': 指定服务器传输协议为 'sse' (Server-Sent Events)。
- 'serverUrl': 本地代理服务器的 SSE 端点 URL,固定为 'http://localhost:3030/sse'。
- 'capabilities': 声明服务器提供的能力,本项目主要提供 'tools' 功能。
注意: MCP 客户端需要配置连接到 本地代理服务器 ('http://localhost:3030/sse'),而不是直接连接 Cloud Run 应用的 URL。本地代理负责处理身份验证并将请求转发到 Cloud Run 上的 MCP 服务器。
基本使用方法
- 确保本地代理服务器 ('npx ts-node mcp_proxy.ts') 正在运行。
- 在 MCP 客户端(例如 Cursor)中,按照上述 服务器配置 部分的说明配置 MCP 服务器连接。
- 在支持 MCP 协议的客户端功能中使用注册的工具,例如:
- 在 Cursor 中,启动 Agent 模式的 Composer,可以使用 '@get_alerts' 和 '@get_forecast' 工具查询天气信息。例如,可以提问 "What are the weather alerts in California?" 或 "What is the forecast for latitude 34.0522 and longitude -118.2437?".
请参考仓库 README 和代码注释获取更详细的信息。
信息
分类
网页与API