flux mcp服务器
🌀 为Flux Framework的MCP工具部署功能的服务
这个图书馆使用 通量mcp img/flux-mcp-small.png
看 设计思维 查看设计概述。
用法
目前预计此服务器将与Flux实例一起部署在集群上。 这意味着您需要flux python(随flux打包,或 pip install flux-python==).
Flux实例
让我们模拟一个flux实例。在终端中执行通量启动:
flux start得到 FLUX_URI 所以我们可以从另一个终端连接。
echo $FLUX_URI您可能希望将服务器安装到本地环境中。
pip install -e . --break-system-packages服务器
为了启动服务器,我们为它提供了一个配置文件,其中包含Flux的函数定义。
无SSL
flux-mcp-server --config ./configs/mcpserver.yaml
# or
python3 -m flux_mcp_server.server --config ./configs/mcpserver.yaml使用SSL
从ssl开始,生成自签名证书(或生产证书):
mkdir -p ./certs
openssl req -x509 -newkey rsa:4096 -keyout ./certs/key.pem -out ./certs/cert.pem -sha256 -days 365 -nodes -subj '/CN=localhost'
# This adds the equivalent of --ssl-keyfile and --ssl-certfile
flux-mcp-server --config ./configs/mcpserver-ssl.yaml客户端
接下来,我们可以运行一个测试,该测试将提交一个作业,然后查看事件(已保存到我们的数据库中)。 在另一个终端中,导出 $FLUX_URI 你看到上面了。
export FLUX_URI=local:///tmp/flux-aG87Ma/local-0现在运行这个小演示。您可以根据服务器的配置选择是否使用SSL。如果您尝试访问 http 在SSL服务器上,它将无法工作。
# With SSL
export SSL_CERT_DIR=$(pwd)/certs
export SSL_CERT_FILE=$(pwd)/certs/cert.pem
python3 ./tests/test_submit_ssl.py
# Without SSL
python3 ./tests/test_submit.py ✅ Job ID: 359735320641536
⏳ Waiting for events to propagate to DB...
found 1 events: {'submit'}
found 7 events: {'start', 'submit', 'depend', 'alloc', 'priority', 'validate', 'annotations'}
found 7 events: {'start', 'submit', 'depend', 'alloc', 'priority', 'validate', 'annotations'}
found 11 events: {'start', 'submit', 'free', 'depend', 'finish', 'alloc', 'priority', 'validate', 'release', 'clean', 'annotations'}
📊 Event Log Analysis:
✅ Success! Recorded 11 events for Job 359735320641536.
- [SUBMIT]
- [VALIDATE]
- [DEPEND]
- [PRIORITY]
- [ANNOTATIONS]
- [ALLOC]
- [START]
- [FINISH]
- [RELEASE]
- [FREE]
- [CLEAN]如果您不小心杀死了服务器(并且端口仍然有效):
kill $(lsof -t -i :8089)发展
apt-get install -y python3-build
pyproject-build待办事项
- \[x\] Fastmcp端点服务于Flux MCP功能
- \[x\] 句柄应接收事件并写入数据库
- \[x\] 数据库应该是接口(并且对不同的数据库灵活)
- SQLAlchemy
- \[\]Auth也应该是与不同后端的接口
- 最基本的是“none”,它只使用Flux句柄。 - 接下来是简单的令牌,应该实现为fastmcp的中间件 - 然后是OAuth2 - 然后(自定义)一些传递OAuth2的东西,比如作为Flux用户提交。
- \[x\] 示例:用户手动提交作业,可以查询数据库状态
- \[\]示例:代理提交工作,稍后可以找到状态。
- \[x\] 迁移到容器,然后迁移到Flux Operator/KubeKubernetes服务。
- \[\]CI和自动构建中的测试。
许可证
HPCIC DevTools根据MIT许可证的条款进行分发。 所有新的贡献都必须根据此许可证进行。
SPDX 许可证标识符: (MIT)
LLNL-CODE-842614
