forked from DevOps/deploy.stack
添加MCP服务器的初始实现,包括: - 主程序文件mcp_server.py - 配置文件config.toml - 依赖文件requirements.txt - 安装指南INSTALL.md - 使用说明README.md 服务器功能包括: - 接收客户端请求 - 调用OpenAI API进行分析 - 提供健康检查接口 - 支持与disk_inspection.py脚本对接
214 lines
4.7 KiB
Markdown
214 lines
4.7 KiB
Markdown
# MCP服务器 - OpenAPI对接版
|
||
|
||
## 简介
|
||
|
||
这是一个对接OpenAPI的MCP(Model Context Protocol)服务器实现,用于接收来自客户端的请求并调用OpenAI API进行处理和分析。本服务器特别为与`disk_inspection.py`硬盘巡检脚本配合使用而设计,可以自动分析硬盘健康状态报告。
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
mcp_server/
|
||
├── config.toml # 配置文件
|
||
├── mcp_server.py # 主程序文件
|
||
└── README.md # 说明文档
|
||
```
|
||
|
||
## 安装依赖
|
||
|
||
在运行MCP服务器之前,需要安装必要的Python依赖包:
|
||
|
||
```bash
|
||
pip install flask openai
|
||
```
|
||
|
||
## 配置说明
|
||
|
||
### 配置文件 `config.toml`
|
||
|
||
配置文件使用TOML格式,包含以下几个主要部分:
|
||
|
||
1. **服务器配置**
|
||
```toml
|
||
[server]
|
||
host = "0.0.0.0" # 监听地址,0.0.0.0表示所有网卡
|
||
port = 8080 # 监听端口
|
||
debug = false # 是否开启调试模式
|
||
```
|
||
|
||
2. **OpenAI API配置**
|
||
```toml
|
||
[openai]
|
||
api_key = "your-api-key-here" # 请替换为您的OpenAI API密钥
|
||
model = "gpt-3.5-turbo" # 使用的模型
|
||
base_url = "https://api.openai.com/v1" # API基础URL
|
||
max_tokens = 2048 # 最大token数
|
||
temperature = 0.7 # 温度参数
|
||
```
|
||
|
||
3. **日志配置**
|
||
```toml
|
||
[logging]
|
||
level = "info" # 日志级别:debug, info, warn, error
|
||
format = "text" # 日志格式:text, json
|
||
file_path = "/var/log/mcp_server.log" # 日志文件路径
|
||
```
|
||
|
||
4. **安全配置**
|
||
```toml
|
||
[security]
|
||
enable_auth = false # 是否启用认证
|
||
# 如果启用认证,需配置以下参数
|
||
# auth_token = "your-auth-token" # 认证令牌
|
||
```
|
||
|
||
## 运行MCP服务器
|
||
|
||
### 1. 修改配置文件
|
||
|
||
首先,编辑`config.toml`文件,设置您的OpenAI API密钥:
|
||
|
||
```bash
|
||
vim /home/geng/mydate/deploy.stack/mcp_server/config.toml
|
||
```
|
||
|
||
找到`[openai]`部分,将`api_key`替换为您的实际API密钥。
|
||
|
||
### 2. 启动服务器
|
||
|
||
使用Python直接运行服务器:
|
||
|
||
```bash
|
||
cd /home/geng/mydate/deploy.stack/mcp_server
|
||
python mcp_server.py
|
||
```
|
||
|
||
或者,您可以将其作为后台服务运行:
|
||
|
||
```bash
|
||
nohup python mcp_server.py > /dev/null 2>&1 &
|
||
```
|
||
|
||
## 与 `disk_inspection.py` 的对接
|
||
|
||
已修改的`disk_inspection.py`脚本可以直接向MCP服务器提交硬盘巡检报告:
|
||
|
||
### 1. 为`disk_inspection.py`安装依赖
|
||
|
||
```bash
|
||
pip install requests
|
||
```
|
||
|
||
### 2. 运行硬盘巡检脚本
|
||
|
||
```bash
|
||
python /home/geng/mydate/deploy.stack/crontab/disk_inspection.py
|
||
```
|
||
|
||
脚本会自动执行以下操作:
|
||
- 检查各个控制器的硬盘状态
|
||
- 生成Markdown格式的报告
|
||
- 将报告通过HTTP请求发送到MCP服务器
|
||
- 接收并保存AI分析结果
|
||
|
||
### 手动提交数据(可选)
|
||
|
||
如果需要手动提交数据,可以使用curl命令:
|
||
|
||
```bash
|
||
curl -X POST -H 'Content-Type: application/json' -d @/root/mcp_data_日期.json http://localhost:8080/mcp/v1/submit
|
||
```
|
||
|
||
## API接口说明
|
||
|
||
### MCP提交接口
|
||
|
||
```
|
||
POST /mcp/v1/submit
|
||
```
|
||
|
||
**请求体(JSON格式)**:
|
||
```json
|
||
{
|
||
"type": "disk_inspection_report",
|
||
"timestamp": "2023-08-15T12:34:56.789012",
|
||
"content": "# 硬盘巡检报告\n..."
|
||
}
|
||
```
|
||
|
||
**响应(JSON格式)**:
|
||
```json
|
||
{
|
||
"status": "success",
|
||
"result": {
|
||
"analysis": "分析结果...",
|
||
"processed_at": "2023-08-15T12:35:00.123456",
|
||
"original_type": "disk_inspection_report"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 健康检查接口
|
||
|
||
```
|
||
GET /health
|
||
```
|
||
|
||
**响应(JSON格式)**:
|
||
```json
|
||
{
|
||
"status": "healthy"
|
||
}
|
||
```
|
||
|
||
## 故障排除
|
||
|
||
1. **API密钥错误**
|
||
- 确保`config.toml`中的OpenAI API密钥正确
|
||
- 检查API密钥是否有足够的余额和权限
|
||
|
||
2. **连接失败**
|
||
- 确保MCP服务器正在运行
|
||
- 检查防火墙设置,确保8080端口已开放
|
||
- 验证`disk_inspection.py`中的MCP服务器URL是否正确
|
||
|
||
3. **权限问题**
|
||
- 确保运行服务器的用户有权限写入日志文件
|
||
- 确保`disk_inspection.py`以root权限运行
|
||
|
||
## 定期运行设置
|
||
|
||
您可以将MCP服务器添加到系统服务中,确保其持续运行:
|
||
|
||
1. 创建系统服务文件:
|
||
```bash
|
||
sudo vim /etc/systemd/system/mcp_server.service
|
||
```
|
||
|
||
2. 添加以下内容(根据实际路径修改):
|
||
```
|
||
[Unit]
|
||
Description=MCP Server for OpenAPI Integration
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=root
|
||
WorkingDirectory=/home/geng/mydate/deploy.stack/mcp_server
|
||
ExecStart=/usr/bin/python /home/geng/mydate/deploy.stack/mcp_server/mcp_server.py
|
||
Restart=on-failure
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
```
|
||
|
||
3. 启用并启动服务:
|
||
```bash
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl enable mcp_server
|
||
sudo systemctl start mcp_server
|
||
```
|
||
|
||
4. 检查服务状态:
|
||
```bash
|
||
sudo systemctl status mcp_server
|
||
``` |