Flux作业管理MCP服务

flux-mcp 是面向 Flux 高性能计算框架的 MCP 工具集,通过作业提交、取消、查询、验证与资源图等能力,让 AI 代理可以直接管理 HPC 集群作业。

  • by converged-computing
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 converged-computing/flux-mcp

使用说明

flux-mcp

🌀 Agentic MCP tools for Flux Framework

Related Projects

  • fractale-mcp: (fractale) MCP orchestration (agents, databases, ui interfaces).
  • hpc-mcp: HPC tools for a larger set of HPC and converged computing use cases.

Usage

These Flux MCP tools can be used via a standalone server, or combined with other tools. Note that along with flux-python (comes packaged with Flux, or pip install flux-python==<version> you can optionally install flux-sched-py for flux-sched functionality.

Server

We provide examples for fastmcp and a vanilla mcp (stdio) setup. Neither requirements are added to the install directly, so it's up to the user (you) to install. Tests are performed with fastmcp.

fastmcp

You will need fastapi and fastmcp installed.

# fastmcp
pip install fastmcp fastapi
# in the devcontainer
pip install fastmcp fastapi --break-system-packages

To start the demo server:

# Vanilla MCP (with cli)
echo '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "test", "version": "1.0"}}}' | python3 -m flux_mcp.server | jq

# Initialize and list tools
(echo '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "manual-test", "version": "1.0"}}}';
 echo '{"jsonrpc": "2.0", "method": "notifications/initialized"}';
 echo '{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}') | python3 -m flux_mcp.server | jq

# FastMCP
python3 -m flux_mcp.server.fastmcp

Agents (stdio)

See agents for Claude Code, Codex, Google ADK and AWS Strands, with tests for each and a devcontainer that has Flux and flux-mcp.

flux-mcp-stdio runs the stdio server for agents such as Claude Code, Codex, Google ADK and AWS Strands that you start inside a Flux instance you own.

flux python -m venv ~/.flux-mcp/venv
~/.flux-mcp/venv/bin/pip install flux-mcp
# then point your agent at this command
~/.flux-mcp/venv/bin/flux-mcp-stdio

It exits with an error if FLUX_URI is unset (rather than falling back to the system instance). If the Flux Python bindings are not importable, it re-runs itself under flux env.

Jobs never receive the server environment. A job gets exactly the environment the agent passes, or else a minimal user environment. That has HOME, USER, LOGNAME and SHELL from the password database, and the login PATH from ENV_PATH in /etc/login.defs plus the directory containing flux. Commands run with flux exec get the same minimal environment.

Docker

We have a provided Dockerfile that builds and includes mcp-server to provide the basic set of Flux endpoints (submit, info, cancel, etc) via the configuration file flux-mcp.yaml. You can tweak that file and build, or just use from our GitHub packages registry.

docker build -t ghcr.io/converged-computing/flux-mcp:latest .
docker run -it -p 8089:8089 ghcr.io/converged-computing/flux-mcp:latest

Testing

You need pytest

pip install pytest --break-system-packages

I will add tools to git as I write tests for them. To test, start the fastmcp server in one terminal:

python3 -m flux_mcp.server.fastmcp

To test flux-sched, ensure libreapi_cli.so is on the LD_LIBRARY_PATH of the server:

export LD_LIBRARY_PATH=/usr/lib/flux/
python3 -m flux_mcp.server.fastmcp

In another terminal, run the test. You'll need to pip install pytest pytest-asyncio

pytest -xs tests/test_flux_validate.py
pytest -xs tests/test_flux_counts.py
pytest -xs tests/test_flux_job_delegation.py
pytest -xs tests/test_flux_job_core.py
pytest -xs tests/test_transformers.py
pytest -xs tests/test_flux_resource.py

# Requires libreapi_cli.so
pytest -xs tests/test_flux_sched.py

# or
pytest -xs tests/test_*.py

To run the whole suite the way CI does, with the HTTP server inside a test instance, run this.

flux start --test-size=2 tests/run-in-flux.sh -v --ignore=tests/test_flux_sched.py tests

Tools

Tools to add:

  • flux
    • flux-sched
      • [ ] grow
      • [ ] shrink
      • [x] create resource graph
      • [x] match allocate
      • [x] cancel
      • [x] partial-cancel
      • [ ] satisfy
    • flux-core
      • [x] submit jobs
      • [x] job info
      • [x] cancel job
      • [x] validator
        • [x] counter
        • [x] batch jobs
        • [x] canonical jobspec
        • [x] json jobspec
    • [ ] topology?
    • delegation
    • [x] local flux URI
    • [x] translation (the transformers?)

License

HPCIC DevTools is distributed under the terms of the MIT license. All new contributions must be made under this license.

See LICENSE, COPYRIGHT, and NOTICE for details.

SPDX-License-Identifier: (MIT)

LLNL-CODE- 842614