FastAPI Azure MCP
与模型上下文协议(MCP)和Azure Active Directory身份验证集成的安全FastAPI应用程序。
概述
该项目提供了一个FastAPI web服务,该服务:
- 使用带有PKCE的OAuth2授权代码流实现Azure AD身份验证
- 与模型上下文协议(MCP)框架集成
- 通过自动令牌验证提供安全的API端点
- 包括Swagger UI和OAuth2集成,用于测试
特性
- Azure AD身份验证:使用OAuth2的单租户Azure身份验证
- 快速 API:具有自动API文档的现代快速web框架
- MCP集成:支持AI工具交互的模型上下文协议
- 交互式文档:Swagger UI支持OAuth2登录
- 安全第一:默认情况下,所有端点都受Azure AD令牌保护
先决条件
- Python 3.10.6或更高版本
- Azure AD应用程序注册
- 已配置环境变量(请参阅配置部分)
安装
- 克隆存储库:
git clone
cd fastapi-azure-mcp- 使用uv安装依赖项(推荐):
uv init .
uv add -r requirements.txt或者使用pip:
pip install -r requirements.txt配置
创建一个 .env 根目录中的文件,包含以下变量:
# Azure AD Configuration
CLIENT_ID=your-azure-ad-client-id
TENANT_ID=your-azure-ad-tenant-id
FRONTEND_CLIENT_ID=your-frontend-client-id
SCOPE_DESCRIPTION=user-impersonationAzure AD安装程序
- 在Azure AD中注册应用程序
- 配置身份验证:
- 添加重定向URI: http://localhost:8000/oauth2-redirect
- 根据需要配置API权限
- 记下客户ID和租户ID
用法
运行服务器
启动开发服务器:
python main.py或者直接使用uvicorn:
uvicorn main:app --host 0.0.0.0 --port 8000 --reload服务器将于启动 http://localhost:8000
API文档
访问API交互式文档:
- Swagger用户界面:
http://localhost:8000/docs - 重新记录:
http://localhost:8000/redoc
认证
- 导航到Swagger UI
http://localhost:8000/docs - 点击“授权”按钮
- 使用您的Azure AD凭据完成OAuth2流
- 测试受保护的端点
使用MCP客户端进行测试
使用提供的测试脚本验证MCP功能:
- 更新
token变量intest_security.py持有有效的Bearer代币 - 运行测试:
python test_security.py项目结构
fastapi-azure-mcp/
├── main.py # FastAPI application with MCP integration
├── auth.py # Azure AD authentication configuration
├── test_security.py # MCP client test script
├── pyproject.toml # Project dependencies and metadata
├── uv.lock # Dependency lock file
└── README.md # Project documentationAPI终点
/ (获取)
- 描述:安全的hello world端点
- 认证:必需(Azure AD承载令牌)
- 响应:
{"message": "Hello, secure world!"}
/mcp (MCP协议)
- 描述:模型上下文协议端点
- 认证:必需(Azure AD承载令牌)
- 用法:用于AI工具交互和MCP客户端
依赖项
- 快速:用于构建API的现代web框架
- fastapi azure身份验证:用于FastAPI的Azure AD集成
- fastapi-mcp:模型上下文协议集成
- fastmcp:MCP客户端库
- 优维康:FastAPI的ASGI服务器
- python dotenv:环境变量管理
- 请求::API调用的HTTP库
发展
编码结构
main.py:包含FastAPI应用程序设置、MCP集成和端点定义auth.py:处理Azure AD身份验证配置和方案设置test_security.py:提供用于验证MCP功能的测试客户端
安全
默认情况下,所有端点都使用Azure AD身份验证进行安全保护。应用程序:
- 根据Azure AD验证承载令牌
- 支持PKCE以实现安全授权流
- 将OAuth2与Swagger UI集成,便于测试
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
