使用说明
MCP服务器-占位符实现
Python中的模型上下文协议(MCP)服务器实现,已准备好通过GitHub Actions部署到Azure Web App。
特性
- MCP协议支持:实现模型上下文协议规范
- 占位符工具:包括您可以用自己的实现替换的示例工具
- Azure Web应用程序就绪:已配置为部署到Azure Web应用程序
- GitHub操作CI/CD:自动化测试和部署
- 多个接口:
- STDIO促进地方发展
- 用于web访问的HTTP REST API
- 用于实时通信的WebSocket
- Docker支持:容器化部署选项
- 健康检查:Azure内置运行状况监控
项目结构
mcp-server/
├── main.py # Core MCP server implementation
├── app.py # FastAPI wrapper for web deployment
├── requirements.txt # Python dependencies
├── startup.sh # Azure startup script
├── web.config # Azure Web App configuration
├── Dockerfile # Container configuration
├── test_mcp_server.py # Unit tests
├── .github/workflows/ # GitHub Actions CI/CD
└── README.md # This file
快速开始
地方发展
-
克隆存储库
git clone <your-repo-url> cd mcp-server -
安装依赖项
pip install -r requirements.txt -
在本地运行服务器
# STDIO mode (for MCP clients) python main.py # Web mode (for HTTP access) python app.py -
测试服务器
python -m pytest test_mcp_server.py -v
Azure部署
-
创建Azure Web应用程序
- 转到Azure门户
- 使用Python运行时创建新的Web应用程序
- 记下应用程序名称并获取发布配置文件
-
配置GitHub机密
AZURE_WEBAPP_NAME:您的Azure Web应用程序名称AZURE_WEBAPP_PUBLISH_PROFILE:从Azure门户下载
-
部署
- 推送到主分支
- GitHub Actions将自动构建和部署
可用工具(占位符)
服务器包括三个占位符工具,您可以用自己的实现替换它们:
1.回声工具
- 名字:
echo - 描述:回显输入消息
- 参数:
message(字符串)
2.获取时间工具
- 名字:
get_time - 描述:获取当前服务器时间
- 参数:无
3.占位符工具
- 名字:
placeholder_tool - 描述:自定义实现的占位符
- 参数:
input(字符串)
API终点
当部署为web应用程序时,服务器提供以下端点:
GET /-服务器信息GET /health-健康检查GET /tools-列出可用工具POST /mcp-MCP协议请求POST /tools/call-直接执行工具WebSocket /ws-实时MCP通信
定制
添加您自己的工具
-
更新
_setup_default_tools()在……里面main.py:def _setup_default_tools(self): self.tools = { "your_tool": { "name": "your_tool", "description": "Description of your tool", "inputSchema": { "type": "object", "properties": { "param1": { "type": "string", "description": "Parameter description" } }, "required": ["param1"] } } } -
在中实现工具逻辑
_execute_tool()方法:async def _execute_tool(self, tool_name: str, arguments: Dict[str, Any]) -> str: if tool_name == "your_tool": # Your custom implementation here param1 = arguments.get('param1') result = your_custom_logic(param1) return f"Result: {result}"
添加资源
资源是工具可以访问的静态或动态内容:
def __init__(self):
self.resources = {
"your_resource": {
"uri": "resource://your_resource",
"name": "Your Resource",
"description": "Description of your resource",
"mimeType": "text/plain"
}
}
添加提示
提示是AI交互的可重用模板:
def __init__(self):
self.prompts = {
"your_prompt": {
"name": "your_prompt",
"description": "Description of your prompt",
"arguments": [
{
"name": "context",
"description": "Context for the prompt",
"required": True
}
]
}
}
测试
运行测试套件:
# Run all tests
python -m pytest test_mcp_server.py -v
# Run specific test
python -m pytest test_mcp_server.py::TestMCPServer::test_echo_tool -v
# Run with coverage
pip install pytest-cov
python -m pytest test_mcp_server.py --cov=main --cov-report=html
环境变量
配置这些部署环境变量:
PORT:服务器端口(默认值:8000)PYTHONUNBUFFERED:Azure设置为1PYTHONDONTWRITEBYTECODE:Azure设置为1
Docker部署
使用Docker构建和运行:
# Build image
docker build -t mcp-server .
# Run container
docker run -p 8000:8000 mcp-server
# Run with environment variables
docker run -p 8000:8000 -e PORT=8000 mcp-server
监控和日志记录
服务器包括全面的日志记录:
- 应用程序日志:所有请求和答复
- 错误日志:详细的错误信息
- 健康检查:可在
/health端点 - Azure日志:检查Azure门户以获取部署日志
安全考虑
- CORS:已配置为web部署
- 输入验证:验证所有工具参数
- 错误处理:优雅的错误响应
- 速率限制:考虑实施生产
- 认证:为敏感操作添加身份验证
性能优化
对于生产部署:
- 使用Gunicorn:在启动脚本中预先配置
- 配置工作人员:根据您的需求进行调整
- 启用缓存:为昂贵的操作实施缓存
- 监控资源:使用Azure应用程序洞察
- 水平扩展:使用Azure应用服务扩展
故障排除
常见问题
-
部署失败:
- 检查Azure发布配置文件
- 验证GitHub机密
- 查看部署日志
-
工具没有响应:
- 检查工具执行情况
- 验证参数架构
- 查看服务器日志
-
性能问题:
- 检查工作程序配置
- 监控内存使用情况
- 检查数据库连接
调试模式
启用开发调试模式:
# In app.py
app = FastAPI(debug=True)
# In main.py
logging.basicConfig(level=logging.DEBUG)
贡献
- 分叉存储库
- 创建要素分支
- 添加您的实现
- 编写测试
- 提交拉取请求
许可证
这个项目是开源的,可以在MIT许可证下使用。
支持
对于问题和疑问:
- 检查故障排除部分
- 查看Azure Web应用程序文档
- 在GitHub上打开一个问题
后续步骤
- 替换占位符工具 与您的实际实现
- 添加身份验证 如有需要
- 实现缓存 为了获得更好的性能
- 添加监控 并发出警报
- 规模 基于使用模式
备注:这是一个占位符实现。用实际的业务逻辑替换示例工具,并为生产使用添加适当的错误处理、验证和安全措施。