MSK管理协议服务器

一个全面的模型上下文协议服务器,提供Amazon MSK(托管式Apache Kafka)的管理功能,包括MirrorMaker2连接器、自定义域名创建和灾难恢复操作。

  • by yhyyz
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 yhyyz/msk-mcp-server

使用说明

MSK MCP服务器

一个全面的模型上下文协议服务器,为Amazon MSK(Apache Kafka的托管流媒体)提供管理功能,包括MirrorMaker2连接器、自定义域创建和灾难恢复操作。此服务器使LLM能够创建、配置和管理具有高级DNS管理和DR交换功能的完整MSK基础架构。

[!小心] 此服务器需要具有访问MSK Connect、S3、Route53和相关AWS服务权限的AWS凭据。使用此MCP服务器时请务必小心,以确保正确的AWS安全实践。

服务器提供两个主要模块:

  1. MirrorMaker2模块(mm2) -通过自定义插件创建、连接器配置和状态监控完成MM2管道编排
  2. 自定义域模块(dr) -MSK自定义域创建,具有Route53集成和灾难恢复交换功能

自定义域模块仅支持PLAINTEXT,MSK MM2支持多种身份验证方法(IAM、PLAINTEXT、SCRAM-SHA-512),并通过适当的超时和重试处理长时间运行的操作。

特性

MSK自定义域和灾难恢复(dr模块)

  • 自定义域创建 -使用Route53为MSK群集创建自定义DNS域
  • 灾难恢复切换 -主MSK群集和辅助MSK群集之间的自动灾难恢复故障转移
  • Route53集成 -管理DNS记录和VPC关联,实现无缝切换
  • 集群信息 -检索详细的MSK集群和代理信息
  • VPC管理 -跨区域部署的VPC自动发现和关联

核心镜像制造商2管理

  • 完成MM2管道设置 -使用三种连接器类型(心跳、检查点、源)协调完整的MirrorMaker2复制设置
  • 自定义插件管理 -通过自动S3集成创建和管理MSK Connect自定义插件
  • 身份验证支持 -为源集群和目标集群配置IAM、PLAINTEXT和SCRAM-SHA-512身份验证
  • 状态监测 -通过自动等待功能实时监控连接器和插件状态

可用工具

MSK自定义域和灾难恢复

  • get_msk_cluster_info -检索有关MSK群集的详细信息
  • get_msk_broker_info -获取MSK集群的代理信息和引导地址
  • get_vpc_for_msk_cluster -发现MSK集群网络的VPC信息
  • get_route53_hosted_zone_info -检索Route53托管区域详细信息
  • create_msk_custom_domain -使用Route53集成为MSK群集创建自定义DNS域
  • list_route53_resource_record_sets -列出Route53托管区域中的所有DNS记录
  • perform_dr_switch -在主群集和灾难恢复群集之间执行灾难恢复切换

插件管理

  • create_empty_plugin_zip -创建一个空的MirrorMaker2插件ZIP文件并上传到S3
  • create_custom_plugin -从S3存储的ZIP文件创建MSK Connect自定义插件
  • check_plugin_status -检查自定义插件的当前状态
  • wait_for_plugin_ready -等待插件通过超时处理达到ACTIVE状态

连接器管理

  • create_mirror_heartbeat_connector -创建MirrorHeartbeatConnector以进行群集监视
  • create_mirror_checkpoint_connector -创建MirrorCheckpointConnector以进行偏移跟踪
  • create_mirror_source_connector -创建MirrorSourceConnector以进行数据复制
  • check_connector_status -监控连接器运行状态
  • wait_for_connector_ready -等待连接器达到RUNNING状态

Worker配置

  • create_worker_configuration -创建MSK Connect工作配置
  • describe_worker_configuration -检索工作程序配置详细信息
  • delete_worker_configuration -删除工作配置

高层运营

  • create_complete_mm2_setup -端到端MirrorMaker2安装编排
  • update_connector -更新现有连接器配置
  • delete_connector -安全地移除连接器
  • list_connectors -列出所有MSK Connect连接器
  • describe_connector -连接器详细信息

可用资源

  • msk://clusters -列出所有MSK集群及其详细信息
  • msk://clusters/{cluster_name} -有关特定MSK集群的详细信息
  • msk://route53/zones -列出所有Route53托管区域
  • msk://route53/zones/{zone_name}/records -特定托管区域的DNS记录
  • msk://connectors -列出所有MSK Connect连接器
  • msk://plugins -列出所有自定义插件
  • msk://worker-configs -列出所有工作配置
  • msk://connector-status/{connector_name} -实时连接器状态信息

可用提示

  • setup_msk_custom_domain -使用Route53为MSK集群创建自定义域的指南
  • configure_msk_disaster_recovery -在主集群和次集群之间逐步进行灾难恢复设置
  • 执行msk_dr_故障转移 -执行灾难恢复故障转移操作的说明
  • setup_complete_mm2_replication -在群集之间设置完整MirrorMaker2复制的指南
  • 故障排除连接器 -连接器问题的故障排除指南
  • 优化_mm2_性能 -针对不同规模的性能优化建议

先决条件

  1. AWS帐户设置

    • 具有适当权限的AWS帐户
    • MSK集群(源和目标)配置正确
    • 为MSK Connect配置的VPC子网和安全组
    • MSK Connect的IAM服务执行角色
  2. 所需的AWS权限

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kafkaconnect:*",
            "kafka:*",
            "s3:GetObject",
            "s3:PutObject",
            "s3:ListBucket",
            "route53:*",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcs"
          ],
          "Resource": "*"
        }
      ]
    }
    
  3. S3铲斗

    • 用于存储MirrorMaker2插件文件的S3存储桶
    • MSK Connect访问bucket的适当IAM权限
  4. Route53托管区 (用于自定义域功能)

    • Route53托管区域,用于创建自定义域
    • Route53记录管理的适当IAM权限
    • 为私有托管区域配置VPC关联
  5. 网络配置

    • 源和目标MSK集群都可以访问VPC子网
    • 允许MSK Connect与群集通信的安全组

安装

使用紫外线(推荐)

使用时 uv 不需要特定的安装。我们将使用 uvx 直接运行 msk mcp服务器.

使用PIP

或者,您可以安装 msk-mcp-server 通过pip:

pip install msk-mcp-server

安装后,您可以使用以下命令将其作为脚本运行:

python -m mcp_server_msk_mm2

配置

为Claude.app进行配置

添加到您的Claude设置中:

使用最新版本的uvx

{
  "mcpServers": {
    "msk-mcp-server": {
      "command": "uvx",
      "args": ["msk-mcp-server@latest"],
      "env": {
        "AWS_REGION": "us-east-1",
        "AWS_PROFILE": "your-aws-profile",
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

使用uvx(简单)

{
  "mcpServers": {
    "msk-mm2": {
      "command": "uvx",
      "args": ["msk-mcp-server"],
      "env": {
        "AWS_REGION": "us-east-1",
        "AWS_PROFILE": "your-aws-profile"
      }
    }
  }
}

使用pip安装

{
  "mcpServers": {
    "msk-mm2": {
      "command": "python",
      "args": ["-m", "mcp_server_msk_mm2"],
      "env": {
        "AWS_REGION": "us-east-1",
        "AWS_PROFILE": "your-aws-profile"
      }
    }
  }
}

配置VS代码

对于手动安装,请将以下JSON块添加到VS Code中的用户设置(JSON)文件中。您可以按 Ctrl + Shift + P 和打字 Preferences: Open User Settings (JSON).

您可以选择将其添加到名为的文件中 .vscode/mcp.json 在您的工作空间中。这将允许您与他人共享配置。

请注意 mcp 使用时需要密钥 mcp.json 文件。

使用最新版本的uvx

{
  "mcp": {
    "servers": {
      "msk-mcp-server": {
        "command": "uvx",
        "args": ["msk-mcp-server@latest"],
        "env": {
          "AWS_REGION": "us-east-1",
          "AWS_PROFILE": "your-aws-profile",
          "FASTMCP_LOG_LEVEL": "ERROR"
        },
        "disabled": false,
        "autoApprove": []
      }
    }
  }
}

使用uvx(简单)

{
  "mcp": {
    "servers": {
      "msk-mm2": {
        "command": "uvx",
        "args": ["msk-mcp-server"],
        "env": {
          "AWS_REGION": "us-east-1",
          "AWS_PROFILE": "your-aws-profile"
        }
      }
    }
  }
}

环境变量

AWS配置

  • AWS_REGION -用于MSK Connect操作的AWS区域(默认:使用AWS SDK默认值)
  • AWS_PROFILE -用于身份验证的AWS配置文件
  • AWS_ACCESS_KEY_ID -AWS访问密钥(如果不使用配置文件)
  • AWS_SECRET_ACCESS_KEY -AWS密钥(如果不使用配置文件)

超时配置

  • AWS_READ_TIMEOUT -AWS操作的读取超时时间(秒)(默认值:300)
  • AWS_CONNECT_TIMEOUT -AWS操作的连接超时时间(秒)(默认值:60)

使用示例

MSK自定义域创建

为您的MSK集群创建自定义DNS域:

{
  "tool": "create_msk_custom_domain",
  "arguments": {
    "region": "us-east-1",
    "cluster_name": "my-msk-cluster", 
    "zone_name": "kafka.example.com.",
    "vpc_id": "vpc-12345678"
  }
}

灾难恢复切换

在主群集和辅助群集之间执行灾难恢复故障转移:

{
  "tool": "perform_dr_switch",
  "arguments": {
    "primary_region": "us-east-1",
    "primary_cluster_name": "primary-cluster",
    "dr_region": "us-west-2", 
    "dr_cluster_name": "dr-cluster",
    "zone_name": "kafka.example.com.",
    "activate_dr": true
  }
}

获取MSK群集信息

检索详细的集群和代理信息:

{
  "tool": "get_msk_cluster_info",
  "arguments": {
    "region": "us-east-1",
    "cluster_name": "my-msk-cluster"
  }
}

完成MirrorMaker2设置

服务器提供了一个高级编排工具来完成设置:

{
  "tool": "create_complete_mm2_setup",
  "arguments": {
    "plugin_name": "my-mm2-plugin",
    "s3_bucket": "my-kafka-plugins",
    "s3_key": "mm2/mirrormaker2.zip",
    "source_bootstrap_servers": "source-cluster.kafka.us-east-1.amazonaws.com:9092",
    "target_bootstrap_servers": "target-cluster.kafka.us-east-1.amazonaws.com:9092",
    "service_execution_role_arn": "arn:aws:iam::123456789012:role/MSKConnectRole",
    "vpc_subnets": ["subnet-12345", "subnet-67890"],
    "vpc_security_groups": ["sg-abcdef"],
    "source_auth_type": "iam",
    "target_auth_type": "iam"
  }
}

监视器连接器状态

{
  "tool": "check_connector_status",
  "arguments": {
    "connector_arn": "arn:aws:kafkaconnect:us-east-1:123456789012:connector/my-connector/abc-123"
  }
}

身份验证方法

IAM身份验证

{
  "source_auth_type": "iam",
  "source_role_arn": "arn:aws:iam::123456789012:role/MSKSourceRole"
}

SCRAM-SHA-512身份验证

{
  "source_auth_type": "scram-sha-512",
  "source_username": "kafka-user",
  "source_password": "kafka-password"
}

PLAINTEXT身份验证

{
  "source_auth_type": "plaintext",
  "source_username": "kafka-user",
  "source_password": "kafka-password"
}

调试

您可以使用MCP检查器调试服务器:

对于uvx安装:

npx @modelcontextprotocol/inspector uvx msk-mcp-server

或者,如果您已将软件包安装在特定目录中或正在其上开发:

cd path/to/msk-mcp-server
npx @modelcontextprotocol/inspector python -m mcp_server_msk_mm2

建筑

服务器采用模块化架构构建:

核心框架:

  • FastMCP框架 -具有依赖关系管理的现代MCP服务器实现
  • 模块化设计 -针对不同MSK管理功能的单独模块
  • 统一接口 -带有已安装子模块的单个服务器实例

模块结构:

  • mm2模块 -完整的MirrorMaker2连接器管理
  • dr模块 -自定义域创建和灾难恢复操作

技术特点:

  • 同步操作 -所有操作都是同步的,以提高可靠性
  • 全面的错误处理 -带有AWS错误代码的详细错误消息
  • 状态监测 -为长时间运行的操作内置轮询
  • 重试逻辑 -瞬态故障的指数回退
  • 资源验证 -参数验证和状态检查

贡献

我们鼓励为扩展和改进msk-mcp服务器做出贡献。无论您是想添加新工具、增强现有功能还是改进文档,您的意见都是有价值的。

有关其他MCP服务器和实现模式的示例,请参阅: https://github.com/modelcontextprotocol/servers

欢迎拉取请求!请随时贡献新想法、错误修复或增强功能,使msk mcp服务器更加强大和有用。

许可证

msk-mcp服务器根据MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。