main
功能: - search_microsoft_docs: 搜索 Microsoft Learn 文档 - get_microsoft_doc: 获取完整文档内容(Markdown) - search_microsoft_code_samples: 搜索代码示例 - list_microsoft_learn_tools: 列出可用工具 特性: - 支持 Microsoft Learn MCP API (SSE 格式) - 集成 Pydantic AI 进行结果整理和解释 - 提供 REST API 和 MCP 协议端点 - 支持 API Key 验证
Microsoft Learn Agent
基于 Pydantic AI 和 FastMCP 的微软文档查询 Agent。
功能概述
Microsoft Learn Agent 提供以下功能:
- 搜索 Microsoft Learn 文档 - 在 Microsoft Learn 上搜索技术文档、API 参考、教程等
- 获取文档内容 - 根据 URL 获取完整的文档内容
- 列出可用工具 - 查看 Microsoft Learn MCP 服务器提供的所有工具
快速开始
1. 环境变量配置
# LiteLLM Gateway 配置
export LITELLM_GATEWAY_URL="https://litellm.graystone-fb459c5d.southeastasia.azurecontainerapps.io/v1"
export OPENAI_API_KEY="your-api-key"
# Microsoft Learn MCP 服务器(可选,默认使用官方地址)
export MICROSOFT_LEARN_MCP_URL="https://learn.microsoft.com/api/mcp"
# 服务端口(可选,默认 8000)
export API_PORT=8000
2. 本地测试
cd microsoft-learn
pip install -r requirements.txt
python run_api_server.py
3. 构建镜像
docker build -t microsoft-learn:latest .
4. 运行容器
docker run -d -p 8000:8000 \
-e LITELLM_GATEWAY_URL="https://..." \
-e OPENAI_API_KEY="your-key" \
microsoft-learn:latest
项目结构
microsoft-learn/
├── Dockerfile
├── requirements.txt
├── run_api_server.py # 启动脚本
└── src/
├── __init__.py
└── server/
├── __init__.py
├── api_server.py # FastAPI + MCP HTTP
└── mcp_server.py # MCP 工具定义
API 端点
REST API
GET /- 服务信息GET /health- 健康检查POST /api/v1/search- 搜索文档(需要 API Key)POST /api/v1/doc- 获取文档内容(需要 API Key)GET /api/v1/tools- 列出可用工具(需要 API Key)
MCP 端点
POST /mcp- MCP HTTP 端点GET /mcp/sse- MCP SSE 端点POST /mcp/sse- MCP SSE POST 端点
使用示例
搜索文档
curl -X POST http://localhost:8000/api/v1/search \
-H "Content-Type: application/json" \
-H "api-key: your-api-key" \
-d '{
"query": "Azure Functions Python",
"max_results": 5
}'
获取文档内容
curl -X POST http://localhost:8000/api/v1/doc \
-H "Content-Type: application/json" \
-H "api-key: your-api-key" \
-d '{
"doc_url": "https://learn.microsoft.com/en-us/azure/functions/functions-reference-python"
}'
MCP 调用
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-H "api-key: your-api-key" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_microsoft_docs",
"arguments": {
"query": "Python Azure SDK",
"max_results": 10
}
}
}'
环境变量
| 变量 | 必需 | 说明 |
|---|---|---|
| LITELLM_GATEWAY_URL | 是 | LiteLLM Gateway URL |
| OPENAI_API_KEY | 是 | LLM API Key |
| MICROSOFT_LEARN_MCP_URL | 否 | Microsoft Learn MCP 服务器地址,默认 https://learn.microsoft.com/api/mcp |
| API_PORT | 否 | 服务端口,默认 8000 |
工具说明
search_microsoft_docs
搜索 Microsoft Learn 文档。
参数:
query(string, 必需): 搜索关键词max_results(integer, 可选): 最大返回结果数,默认 10
示例:
{
"query": "Azure Functions",
"max_results": 5
}
get_microsoft_doc
获取 Microsoft Learn 文档内容。
参数:
doc_url(string, 必需): Microsoft Learn 文档 URL
示例:
{
"doc_url": "https://learn.microsoft.com/en-us/azure/functions/..."
}
list_microsoft_learn_tools
列出 Microsoft Learn MCP 服务器可用的工具。
参数: 无
注册到 Agent Manager
在 k8s_manager.py 中添加:
# TEMPLATE_PORTS
"microsoft-learn": 8000,
# image_map
"microsoft-learn": "agnettaiji.azurecr.io/ai-agents/microsoft-learn:latest",
在 app.py 的 valid_templates 中添加 "microsoft-learn"。
Languages
Python
98.2%
Dockerfile
1.8%