HDF5和Slurm工具调用服务

一个基于JSON-RPC 2.0的服务器实现,提供HDF5数据操作和Slurm作业管理功能,适用于科学计算和批量任务处理场景。

  • by jalzoubi
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jalzoubi/mcp-server

使用说明

MCP服务器实现

名字贾法尔·阿尔祖比 学号:A20501723

已实现的能力

  • HDF5(数据)
  • Slurm(工具)

设置

  1. 安装紫外线: pip install uv
  2. 创建环境: uv venv
  3. 激活 source .venv/bin/activate
  4. 同步依赖关系: uv sync

正在运行的服务器

uvicorn src.server:app --reload

运行测试

pytest tests/

假设

  • HDF5模拟数据存储在 mock_data/hdf5
  • Slurm模拟使用本地回声命令

这些都可以用induvidule运行,而且效果很好

HDF5运营

卷曲-X POST”http://127.0.0.1:8000/mcp"
-H“内容类型:应用程序/json”
d “jsonrpc”:“2.0”, “方法”:“mcp/callTool”, “参数”:{ “工具”:“hdf5”, “action”:“read”, “filePath”:“mock_data/hdf5/simulation_1.h5”, “数据集”:“温度” }, “id”:1 }'

泥浆作业

卷曲-X POST”http://127.0.0.1:8000/mcp"
-H“内容类型:应用程序/json”
d “jsonrpc”:“2.0”, “方法”:“mcp/callTool”, “参数”:{ “工具”:“诽谤”, “动作”:“提交”, “脚本”:“analysis.sh”, “核心”:8 }, “id”:2 }'

运行所有测试

pytest测试/

运行特定的能力测试

pytest测试/test_hdf5.py-v pytest测试/test_slurm.py-v

生成覆盖率报告

请求 --cov=src

项目根/ ├── 模拟数据/ │ ├── hdf5/ │ │ ├── 模拟1.h5 │ │ └── 模拟2.h5 │ └── 泥浆/ │ ├── job_scripts/ │ └── job_status.json


实现细节

HDF5处理器 使用h5py库进行文件操作

模拟数据路径:。/mock_data/hdf5/

支持的操作:

list:递归目录列表

read:使用shape/dtype信息检索数据集

元数据:文件级元数据

Slurm处理器

使用子流程模拟作业提交

模拟功能:

生成基于UUID的作业ID

跟踪内存中的作业状态

模拟排队/运行/完成状态


故障排除

常见问题: 上一篇:8000 杀-9

缺少依赖项:

uv pip安装--强制重新安装-r要求.txt


满足要求

✅ 实现了两个功能(HDF5+Slurm)

✅ 完全符合JSON-RPC 2.0标准

✅ 两种功能的测试覆盖率均为100%

✅ 正确的错误处理和响应

✅ 异步请求处理

样本测试输出

tests/test_hdf5.py::test_read_dataset已通过 tests/test_slurm.py::test_job_submission已通过

在0.42s内进行了13次测试 好的