Nomad MCP Server

Nomad MCP Server

site icon
2025.04.22 1
Go集群管理作业调度开发效率数据库
Nomad MCP Server 是一个通过 MCP(Model Control Protocol)接口管理 Nomad 集群的服务器。它提供了一系列工具,用于管理 Nomad 集群中的作业、部署、命名空间、节点、分配、变量、卷和 ACL(访问控制列表)。该服务器支持实时监控(通过 SSE)和基于令牌的安全认证。
View on GitHub

Overview

基本能力

产品定位

Nomad MCP Server 是一个用于管理 Nomad 集群的工具服务器,通过 MCP 接口提供集群管理的各种功能。

核心功能

  • 作业管理:列出、获取、运行、停止、重启和缩放作业。
  • 部署管理:列出和获取部署。
  • 命名空间管理:列出、创建和删除命名空间。
  • 节点管理:列出、获取和排空节点。
  • 分配管理:列出、获取和停止分配。
  • 变量管理:列出、获取、创建和删除变量。
  • 卷管理:列出、获取、创建和删除卷。
  • ACL 管理:管理令牌、策略和角色。
  • 作业模板访问:提供作业模板作为创建新作业的起点。
  • 实时监控:通过 SSE 实现实时监控。
  • 安全认证:基于令牌的安全认证。

适用场景

  • 管理 Nomad 集群中的作业和部署。
  • 管理集群中的命名空间、节点和分配。
  • 管理集群中的变量和卷。
  • 管理集群的访问控制(ACL)。
  • 实时监控集群状态。

工具列表

  • Job Tools:管理作业的工具,如 list_jobs, get_job, run_job, stop_job, restart_job, scale_job 等。
  • Deployment Tools:管理部署的工具,如 list_deployments, get_deployment
  • Namespace Tools:管理命名空间的工具,如 list_namespaces, create_namespace, delete_namespace
  • Node Tools:管理节点的工具,如 list_nodes, get_node, drain_node
  • Allocation Tools:管理分配的工具,如 list_allocations, get_allocation, stop_allocation
  • Variable Tools:管理变量的工具,如 list_variables, get_variable, create_variable, delete_variable
  • Volume Tools:管理卷的工具,如 list_volumes, get_volume, create_volume, delete_volume
  • ACL Tools:管理 ACL 的工具,如 bootstrap_acl_token, list_acl_tokens, get_acl_token, create_acl_token, delete_acl_token, list_acl_policies, get_acl_policy, create_acl_policy, delete_acl_policy, list_acl_roles, get_acl_role, create_acl_role, delete_acl_role

常见问题解答

  • 如何启动服务器? 使用 go run main.go 命令,并指定必要的参数和环境变量。
  • 如何配置服务器? 通过命令行标志和环境变量进行配置。
  • 如何管理 ACL? 使用提供的 ACL 工具进行令牌、策略和角色的管理。

使用教程

使用依赖

# Clone the repository
git clone https://github.com/kocierik/nomad-mcp-server.git
cd nomad-mcp-server

# install dependencies
go mod tidy

安装教程

# Start with custom configuration
NOMAD_TOKEN=your-token-here go run main.go \
  -transport=sse \
  -port=8080 \
  -nomad-addr=http://localhost:4646

调试方式

# Using the MCP Inspector
NOMAD_TOKEN=your-token-here npx @modelcontextprotocol/inspector go run main.go -transport=stdio

配置

命令行标志

  • -transport: 传输类型("stdio" 或 "sse",默认:"stdio")
  • -port: SSE 服务器的端口(默认:"8080")
  • -nomad-addr: Nomad 服务器地址(默认:"http://localhost:4646")

环境变量

  • NOMAD_TOKEN: Nomad 的认证令牌(如果启用了 ACL,则为必需)

Claude 集成

将以下配置添加到您的 Claude 设置中:

{
  "mcpServers": {
    "nomad_mcp": {
      "command": "/home/erik/Desktop/nomad-mcp-server/nomad-mcp-server",
      "args": [
        "-transport=stdio",
        "-port=8080",
        "-nomad-addr=http://localhost:4646"
      ],
      "env": {
        "NOMAD_TOKEN": "${NOMAD_TOKEN}"
      }
    }
  }
}

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。