README
🚀 Azure容器应用程序远程MCP服务器示例
本项目是一个基于FastAPI的模型上下文协议(MCP)服务器,专为Azure容器应用设计。它借助安全的、受API密钥保护的Server-Sent事件(SSE)接口,提供天气相关工具(如警报和预报),能与MCP兼容客户端(如Visual Studio Code或自定义脚本)集成。
🚀 快速开始
此MCP服务器使用SSE传输并使用API密钥进行身份验证。下面为你介绍如何快速搭建和使用该服务器。
✨ 主要特性
- 基于FastAPI构建,专为Azure容器应用设计。
- 通过安全的、受API密钥保护的Server-Sent事件(SSE)接口提供服务。
- 提供天气相关工具,如警报和预报。
- 可与MCP兼容客户端集成,例如Visual Studio Code或自定义脚本。
📦 安装指南
克隆仓库
git clone https://github.com/KRVaghani/Azure-MCP-Server.git
cd Azure-MCP-Server
安装先决条件
- Python 3.11或更高版本
- uv
设置虚拟环境和依赖项
uv venv
uv sync
设置API密钥
export API_KEYS=devkey # 或您选择的密钥
运行服务器
uv run fastapi dev main.py
💻 使用示例
基础用法
本项目包含一个用于命令行交互的示例Python客户端(model_request_client.py),你可以按以下步骤操作:
python model_request_client.py
- 输入您的API密钥(默认为devkey)
- 选择工具:
get_alerts(按美国州)或get_forecast(按纬度/经度) - 输入所需的参数
- 服务器响应将在终端中显示
高级用法
你可以使用curl命令进行测试:
curl -H "x-api-key: devkey" http://localhost:8000/sse
📚 详细文档
API端点
/sse(GET):主要的SSE端点,用于MCP协议通信。需要x-api-key头。/messages(SSE):内部使用的消息流端点(基于会话)。
🔧 技术细节
本项目是一个基于FastAPI的MCP服务器,通过Server-Sent事件(SSE)接口提供服务。SSE是一种允许服务器向客户端发送实时更新的技术,非常适合需要实时数据的应用场景。服务器使用API密钥进行身份验证,确保只有授权的客户端可以访问服务。
📄 许可证
本项目采用MIT许可证(如需添加LICENSE文件)。
本地运行
前提条件
- Python 3.11或更高版本
- uv
运行步骤
uv venv
uv sync
# Linux/macOS
export API_KEYS=<AN_API_KEY>
# Windows
set API_KEYS=<AN_API_KEY>
uv run fastapi dev main.py
VS Code MCP配置(mcp.json)
{
"inputs": [
{
"type": "promptString",
"id": "weather-api-key",
"description": "Weather API Key",
"password": true
}
],
"servers": {
"weather-sse": {
"type": "sse",
"url": "http://localhost:8000/sse",
"headers": {
"x-api-key": "${input:weather-api-key}"
}
}
}
}
部署到Azure容器应用
az containerapp up -g <RESOURCE_GROUP_NAME> -n weather-mcp --environment mcp -l westus --env
故障排除
- 如果看到
ModuleNotFoundError,请确保激活了虚拟环境并且安装了依赖项。 - 如果客户端挂起,请检查服务器是否在运行且API密钥匹配。
- 对于venv中的pip问题,运行:
python -m ensurepip --upgrade python -m pip install --upgrade pip
贡献
欢迎拉取请求!请先打开问题讨论主要更改。
Scan to join WeChat group