MCP服务器
一个符合JSON-RPC 2.0标准的服务器,通过标准化的API端点实现与HDF5数据文件和Slurm作业调度的交互。
服务介绍
MCP 服务器实现
姓名: Jafar Alzoubi
学号: A20501723
实现的功能
- HDF5 (数据)
- Slurm (工具)
设置
- 安装 uv:
pip install uv - 创建环境:
uv venv - 激活:
source .venv/bin/activate - 同步依赖:
uv sync
运行服务器
uvicorn src.server:app --reload
运行测试
pytest tests/
假设
- HDF5 模拟数据存储在
mock_data/hdf5 - Slurm 模拟使用本地 echo 命令
这些可以单独运行,并且工作正常
HDF5 操作
curl -X POST "[http://127.0.0.1:8000/mcp](https://link.0)" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "mcp/callTool",
"params": {
"tool": "hdf5",
"action": "read",
"filePath": "mock_data/hdf5/simulation_1.h5",
"dataset": "temperature"
},
"id": 1
}'
Slurm 操作
curl -X POST "[http://127.0.0.1:8000/mcp](https://link.1)" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "mcp/callTool",
"params": {
"tool": "slurm",
"action": "submit",
"script": "analysis.sh",
"cores": 8
},
"id": 2
}'
运行所有测试
pytest tests/
运行特定功能测试
pytest tests/test_hdf5.py -v
pytest tests/test_slurm.py -v
生成覆盖率报告
pytest --cov=src
project-root/
├── mock_data/
│ ├── hdf5/
│ │ ├── simulation_1.h5
│ │ └── simulation_2.h5
│ └── slurm/
│ ├── job_scripts/
│ └── job_status.json
实现细节
HDF5 处理程序
- 使用 h5py 库进行文件操作
- 模拟数据路径: ./mock_data/hdf5/
- 支持的操作:
- list: 递归目录列表
- read: 数据集检索,包含形状/数据类型信息
- metadata: 文件级元数据
Slurm 处理程序
- 使用 subprocess 模拟作业提交
- 模拟特性:
- 生成基于 UUID 的作业 ID
- 在内存中跟踪作业状态
- 模拟排队/运行/完成状态
故障排除
常见问题:
- 查看端口占用:
lsof -i :8000 - 杀死进程:
kill -9 <PID>
缺失的依赖项:
- 重新安装依赖:
pip install --force-reinstall -r requirements.txt
满足的需求
✅ 实现了两个功能 (HDF5 + Slurm)
✅ 完全符合 JSON-RPC 2.0 规范
✅ 两个功能的测试覆盖率均为 100%
✅ 正确的错误处理和响应
✅ 异步请求处理
示例测试输出
tests/test_hdf5.py::test_read_dataset PASSED
tests/test_slurm.py::test_job_submission PASSED
---------------------------------------------------------------
Ran 13 tests in 0.42s
OK