MCP服务器
一个独立的MCP(模型上下文协议)服务器,为MCP操作提供HTTP REST API和WebSocket端点。任何应用程序都可以使用此服务器与MCP服务器进行交互,以实现Jira、ServiceNow和其他集成。
特性
- REST API:用于MCP服务器管理和操作的HTTP端点
- WebSocket API:MCP操作的实时通信
- 服务器管理:启动、停止、重新启动和监视MCP服务器
- 工具执行:执行MCP工具并处理自然语言请求
- 配置管理:动态配置更新
- 健康监测:服务器健康检查和状态监视
建筑
mcp-server/
├── 01_server/ # Core server components
│ ├── 01_core/ # Core MCP functionality
│ ├── 02_api/ # REST and WebSocket APIs
│ ├── 03_config/ # Configuration management
│ └── 04_utils/ # Utility functions
├── 02_mcp_servers/ # MCP server configurations
│ ├── 01_jira_mcp/ # Jira MCP server
│ ├── 02_servicenow_mcp/ # ServiceNow MCP server
│ └── 03_common/ # Common MCP components
├── 03_communication/ # Communication libraries
├── 04_documentation/ # Documentation
├── 05_tests/ # Test suites
└── 06_deployment/ # Deployment scripts快速开始
先决条件
- Python 3.8或更高版本
- 虚拟环境(推荐)
安装
- 克隆存储库
git clone
cd mcp-server- 创建虚拟环境
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装依赖项
pip install -r requirements.txt- 配置环境
cp env.example .env
# Edit .env with your configuration- 启动服务器
python main.py服务器将于启动 http://localhost:8001
API终点
REST API
服务器管理
GET /api/v1/status-获取整体系统状态POST /api/v1/servers/start-启动MCP服务器POST /api/v1/servers/stop-停止MCP服务器POST /api/v1/servers/restart-重新启动MCP服务器
MCP操作
GET /api/v1/mcp/tools-从MCP服务器获取可用工具POST /api/v1/mcp/process_request-处理自然语言请求POST /api/v1/mcp/call_tool-调用特定的MCP工具
配置
GET /api/v1/config-获取当前配置PUT /api/v1/config-更新配置POST /api/v1/config/reload-重新加载配置
WebSocket API
连接到 ws://localhost:8001/ws 用于实时通信。
消息类型
ping-健康检查subscribe-订阅活动mcp_request-MCP操作请求server_action-服务器管理操作
事件
mcp_server_status-服务器状态更新mcp_tool_execution-工具执行结果mcp_error-错误通知server_health_update-健康更新
使用示例
REST API示例
启动Jira MCP服务器
curl -X POST "http://localhost:8001/api/v1/servers/start" \
-H "Content-Type: application/json" \
-d '{"server_name": "jira-mcp", "action": "start"}'处理自然语言请求
curl -X POST "http://localhost:8001/api/v1/mcp/process_request" \
-H "Content-Type: application/json" \
-d '{
"request": "Get all active users from Jira",
"system": "jira",
"provider": "openai",
"api_key": "your_api_key"
}'获取可用工具
curl "http://localhost:8001/api/v1/mcp/tools?server_name=jira-mcp"WebSocket示例
JavaScript客户端
const ws = new WebSocket('ws://localhost:8001/ws');
ws.onopen = function() {
// Subscribe to events
ws.send(JSON.stringify({
type: 'subscribe',
events: ['mcp_server_status', 'mcp_tool_execution']
}));
// Send MCP request
ws.send(JSON.stringify({
type: 'mcp_request',
request_id: '123',
request: 'Get active users from Jira',
system: 'jira'
}));
};
ws.onmessage = function(event) {
const data = JSON.parse(event.data);
console.log('Received:', data);
};Python客户端
import websockets
import json
import asyncio
async def mcp_client():
uri = "ws://localhost:8001/ws"
async with websockets.connect(uri) as websocket:
# Subscribe to events
await websocket.send(json.dumps({
"type": "subscribe",
"events": ["mcp_server_status", "mcp_tool_execution"]
}))
# Send MCP request
await websocket.send(json.dumps({
"type": "mcp_request",
"request_id": "123",
"request": "Get active users from Jira",
"system": "jira"
}))
# Listen for responses
async for message in websocket:
data = json.loads(message)
print(f"Received: {data}")
asyncio.run(mcp_client())配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_SERVER_PORT | 服务器端口 | 8001 |
MCP_SERVER_HOST | 服务器主机 | 0.0.0.0 |
MCP_LOG_LEVEL | 日志记录级别 | 信息 |
MCP_MAX_CONNECTIONS | 最大WebSocket连接数 | 100 |
MCP_AUTH_TOKEN | 身份验证令牌 | - |
OPENAI_API_KEY | OpenAI API密钥 | - |
ANTHROPIC_API_KEY | 无烟煤API密钥 | - |
MCP服务器配置
MCP服务器配置在 02_mcp_servers/ 目录:
01_jira_mcp/01_config.json-Jira MCP服务器配置02_servicenow_mcp/01_config.json-ServiceNow MCP服务器配置
发展
运行测试
# Run all tests
python -m pytest 05_tests/
# Run specific test categories
python -m pytest 05_tests/01_unit_tests/
python -m pytest 05_tests/02_integration_tests/
python -m pytest 05_tests/03_api_tests/编码结构
- 核心组件:MCP服务器管理、启动器、客户端集成
- API层:REST和WebSocket端点
- 配置:环境和服务器配置管理
- 公用事业:健康检查、流程管理、安全
部署
Docker部署
# Build image
docker build -t mcp-server .
# Run container
docker run -p 8001:8001 mcp-server生产部署
- 设置环境变量
- 配置反向代理(nginx)
- 设置SSL证书
- 配置监控和日志记录
- 建立流程管理(系统、主管)
故障排除
常见问题
- 端口已在使用中
- 检查是否有其他服务正在使用端口8001 - 更改配置中的端口
- MCP服务器未启动
- 检查MCP服务器配置 - 验证是否安装了依赖项 - 检查日志是否有错误
- WebSocket连接问题
- 验证WebSocket端点是否可访问 - 检查防火墙设置 - 确保消息格式正确
日志
日志被写入 mcp_server.log 默认情况下。集 LOG_LEVEL 在环境中进行更详细的日志记录。
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加测试
- 提交拉取请求
许可证
\[在此处添加您的许可证信息\]
支持
有关支持和问题:
- 在存储库中创建问题
- 检查文档
- 查看故障排除部分
