关于 MCP Server Implementation
MCP Server Implementation 是一个 Python 服务实现,支持处理 HDF5 数据并模拟 Slurm 作业,适用于需要通过 HTTP MCP 端点使用这些能力的用户。
主要功能
- 01递归列出 HDF5 目录
- 02读取 HDF5 数据集和元数据
- 03模拟提交 Slurm 作业
- 04跟踪模拟作业状态
- 05异步处理请求
适用场景
- 01检查模拟 HDF5 数据集
- 02读取 HDF5 文件元数据
- 03提交模拟 Slurm 作业
- 04查看模拟作业状态
MCP 相关
它通过 HTTP MCP 端点提供 HDF5 和 Slurm 功能,并使用 JSON-RPC 2.0 请求。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
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"
-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"
-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
项目根目录/ ├── mock_data/ │ ├── hdf5/ │ │ ├── simulation_1.h5 │ │ └── simulation_2.h5 │ └── slurm/ │ ├── job_scripts/ │ └── job_status.json
实现详情
HDF5 处理程序 使用 h5py 库进行文件操作
模拟数据路径:./mock_data/hdf5/
支持的操作:
list:递归列出目录
read:获取数据集及其形状和 dtype 信息
metadata:文件级元数据
Slurm 处理程序
使用 subprocess 模拟作业提交
模拟功能:
生成基于 UUID 的作业 ID
在内存中跟踪作业状态
模拟排队、运行和已完成状态
故障排除
常见问题: lsof -i :8000 kill -9
缺少依赖项:
uv 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
共运行 13 个测试,耗时 0.42s 成功
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。