Consul微服务分析工具

一个基于Model Control Protocol的服务器,用于与HashiCorp Consul服务发现和服务网格交互,通过自然语言提供微服务架构分析、图表生成、问题诊断和优化建议。

  • by 3loka
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 3loka/consul-mcp-server

使用说明

领事MCP服务器

用于与HashiCorp Consul服务发现和服务网格交互的模型控制协议(MCP)服务器。此实现遵循Anthropic的MCP规范,允许Claude分析您的微服务架构,创建图表,识别问题,并通过自然语言交互提供建议。

什么是模型控制协议?

模型控制协议(MCP) 是Anthropic开发的一个规范,它使像Claude这样的AI模型能够与外部工具和API进行交互。此实现将AI代理连接到您的Consul基础设施,允许您使用自然语言管理和分析您的服务。

特性

  • 列出并分析在Consul中注册的服务
  • 识别和诊断未通过的健康检查
  • 生成服务网格架构图
  • 检测服务连接问题并提供建议
  • 获取有关服务负载平衡和资源利用率的AI见解

需求

  • Node.js 18+
  • npm或纱线
  • 正在运行的Consul实例(本地或远程)
  • 与Claude集成的Claude桌面或Cursor IDE

安装

# Clone the repository
git clone https://github.com/3loka/consul-mcp-server.git
cd consul-mcp-server

# Install dependencies
npm install

# Build the project
npm run build

配置

创建一个 .env 根目录中的文件,包含以下变量:

CONSUL_HTTP_ADDR=http://localhost:8500
CONSUL_HTTP_TOKEN=your-consul-token
PORT=3000
USE_HTTP=true
  • CONSUL_HTTP_ADDR:Consul服务器的地址
  • CONSUL_HTTP_TOKEN:Consul服务器的ACL令牌
  • PORT:HTTP服务器的端口
  • USE_HTTP:对于HTTP模式设置为“true”,对于stdio模式省略

安装

在Cursor中安装

要在中安装和使用此MCP服务器 光标:

  1. 在光标中,打开设置(⌘+,)并导航到“MCP”选项卡。

  2. 点击“+添加新的MCP服务器。”

  3. 输入以下内容:

    • 姓名:领事助理
    • 类型:命令
    • 命令:npx-y consul mcp服务器
  4. 单击“添加”,然后滚动到服务器,单击“禁用”以启用服务器。

  5. 如果需要,请重新启动Cursor,以确保MCP服务器已正确加载。

在Claude Desktop中安装

要在Claude Desktop中安装和使用此MCP服务器:

  1. 在Claude Desktop中,打开设置(⌘+,)并导航到“开发人员”选项卡。

  2. 单击窗口底部的“编辑配置”。

  3. 编辑文件(~/Library/Application Support/Claude/claude_desktop_config.json)要添加以下代码,请单击“保存文件”。

{
  "mcpServers": {
    "consul-assistant": {
      "command": "npx",
      "args": ["-y", "consul-mcp-server"]
    }
  }
}

如果服务器不是本地主机或启用了ACL,请改用以下配置

{
    "mcpServers": {
      "consul-assistant": {
        "command": "npx",
        "args": ["-y", "consul-mcp-server"],
        "env": {
          "CONSUL_HTTP_ADDR": "http://<host/ip>:8500",
          "CONSUL_HTTP_TOKEN": "<ACL Token>"
        }
      }
    }
  }
  1. 重新启动Claude Desktop以确保MCP服务器已正确加载。

示例提示

连接后,与Claude一起尝试以下提示:

  • “显示Consul中注册的所有服务”
  • “哪些服务的健康检查不合格?”
  • “创建我的服务网格连接图”
  • “分析哪些服务存在连接问题”
  • “我的微服务架构的整体健康状况如何?”
  • “显示连接中错误率高的服务”

可用的MCP操作

此服务器执行以下MCP操作:

动作 描述
consul/get_services 获取Consul中所有服务的列表
consul/get_health_checks 获取健康检查,可选择过滤未通过的检查
consul/get_service_connections 获取服务连接及其状态
consul/create_service_diagram 创建服务关系的美人鱼图
consul/analyze_service 分析特定服务以识别问题
consul/get_service_metrics 获取特定服务的详细指标

运行演示环境

出于测试目的,您可以使用在Consul中注册的多个微服务设置本地演示环境:

# Run the setup script (requires Docker and Docker Compose)
chmod +x ./demo/setup-demo.sh
./demo/setup-demo.sh

这将开始:

  • Consul服务器
  • 几个演示微服务
  • 在Consul中注册服务
  • 设置一些服务网格连接和健康检查

演示演练

  1. 启动演示环境:

    ./scripts/setup-demo.sh
    
  2. 启动MCP服务器:

    npm start
    
  3. 将Claude Desktop或Cursor连接到您的MCP服务器

  4. 尝试以下演示场景:

    a.获取服务概述:

    Show me all the services registered in my Consul instance.
    

    b.检查健康检查是否失败:

    Are any services experiencing health issues? What might be causing them?
    

    c.创建服务网格图:

    Create a diagram showing the connections between my services.
    

    d.分析连接问题:

    Which services are having trouble connecting to each other?
    

    e.获取建议:

    Based on my service mesh setup, what improvements would you recommend?
    

发展

项目结构

  • src/index.ts:主要入口点
  • src/resources/:Consul API交互代码
  • src/tools/:辅助功能,如图表生成
  • src/server/:MCP服务器组件
  • src/mcp/:MCP动作定义和处理程序
  • src/prompts/:人工智能交互的模板管理
  • src/tests/:测试套件

运行测试

npm test

建筑

npm run build

贡献

欢迎投稿!请随时提交拉取请求。

许可证

麻省理工学院