项目简介
这是一个基于Model Context Protocol (MCP) 实现的应用后端,专门用于与HashiCorp Nomad集群进行交互。它将Nomad的各项管理功能抽象为标准的MCP工具,并暴露Nomad集群的状态和配置作为MCP资源,使大型语言模型 (LLM) 客户端能够理解和操作Nomad环境。
主要功能点
- 作业管理: 查看、获取、运行、停止、重启和扩缩Nomad作业。
- 部署管理: 查看和获取部署详情。
- 命名空间管理: 列出、创建和删除命名空间。
- 节点管理: 列出、获取节点详情,以及控制节点的排空(drain)和资格(eligibility)状态。
- 分配管理: 列出、获取分配详情,并停止分配。
- 变量管理: 列出、获取、创建和删除Nomad变量。
- 卷管理: 列出、获取和删除Nomad卷。
- ACL 管理: 管理访问控制列表 (ACL) 代币、策略和角色,并支持ACL引导。
- 日志获取: 获取特定任务的日志。
- 资源访问: 提供对Nomad作业模板、节点状态、分配日志、作业历史等信息的标准化访问。
- 多种传输: 支持Stdio和SSE (Server-Sent Events) 传输协议。
- 安全认证: 支持基于Nomad代币的身份验证。
安装步骤
- 安装 Go 语言: 确保您的系统安装了 Go 1.18 或更高版本。请参考 Go官方安装指南。
- 克隆仓库:
git clone https://github.com/kocierik/mcp-nomad.git cd mcp-nomad - 安装依赖:
go mod tidy - 构建服务器:
这将在当前目录下生成一个名为 'mcp-nomad' (或 'mcp-nomad.exe' on Windows) 的可执行文件。go build -o mcp-nomad main.go
MCP客户端配置
此服务器设计为由支持MCP的LLM客户端(如Claude等)启动和连接。客户端需要配置如何启动此服务器进程并与之通信。以下是一个示例配置(JSON格式),您可以根据实际安装路径和Nomad集群地址进行调整:
{ "mcpServers": { "nomad_mcp": { "command": "/path/to/your/mcp-nomad", // 替换为实际的可执行文件路径 "args": [ "-transport=stdio", // 或 "sse",取决于客户端和服务器的连接方式 "-port=8080", // 如果使用 SSE 传输,指定端口 "-nomad-addr=http://localhost:4646" // 替换为您的Nomad服务器地址 ], "env": { "NOMAD_TOKEN": "${NOMAD_TOKEN}" // 如果您的Nomad集群启用了ACL,需要Nomad代币,可以从环境变量读取或直接配置 } } } }
- 'command': 服务器可执行文件的完整路径。
- 'args': 传递给服务器进程的命令行参数。
- '-transport': 指定MCP传输协议('stdio' 或 'sse')。
- '-port': 如果使用 'sse' 传输,指定服务器监听的端口。
- '-nomad-addr': 指定要连接的Nomad服务器地址。
- 'env': 传递给服务器进程的环境变量,例如Nomad认证所需的 'NOMAD_TOKEN'。
基本使用方法
一旦通过您的MCP客户端配置并启动了此服务器,LLM客户端就可以:
- 发现能力: 客户端会自动发现服务器注册的工具、资源和Prompt模板。
- 调用工具: 客户端可以通过JSON-RPC调用服务器提供的工具,例如调用 'list_jobs' 工具来获取Nomad作业列表,或者调用 'run_job' 来提交新的作业。
- 读取资源: 客户端可以通过URI访问服务器提供的资源,例如读取 'nomad://jobs/{job_id}/spec' 来获取特定作业的规范。
- 使用Prompt模板: 客户端可以使用服务器定义的Prompt模板来引导与用户的交互,例如使用 'job_management' 模板来协助用户执行作业相关的任务。
LLM客户端将根据用户意图,自动选择并调用合适的工具或访问资源,并通过服务器与Nomad集群进行交互。
信息
分类
开发者工具