使用说明
MSK MCP服务器
一个全面的模型上下文协议服务器,为Amazon MSK(Apache Kafka的托管流媒体)提供管理功能,包括MirrorMaker2连接器、自定义域创建和灾难恢复操作。此服务器使LLM能够创建、配置和管理具有高级DNS管理和DR交换功能的完整MSK基础架构。
[!小心] 此服务器需要具有访问MSK Connect、S3、Route53和相关AWS服务权限的AWS凭据。使用此MCP服务器时请务必小心,以确保正确的AWS安全实践。
服务器提供两个主要模块:
- MirrorMaker2模块(mm2) -通过自定义插件创建、连接器配置和状态监控完成MM2管道编排
- 自定义域模块(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文件并上传到S3create_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_性能 -针对不同规模的性能优化建议
先决条件
-
AWS帐户设置
- 具有适当权限的AWS帐户
- MSK集群(源和目标)配置正确
- 为MSK Connect配置的VPC子网和安全组
- MSK Connect的IAM服务执行角色
-
所需的AWS权限
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kafkaconnect:*", "kafka:*", "s3:GetObject", "s3:PutObject", "s3:ListBucket", "route53:*", "ec2:DescribeSubnets", "ec2:DescribeVpcs" ], "Resource": "*" } ] } -
S3铲斗
- 用于存储MirrorMaker2插件文件的S3存储桶
- MSK Connect访问bucket的适当IAM权限
-
Route53托管区 (用于自定义域功能)
- Route53托管区域,用于创建自定义域
- Route53记录管理的适当IAM权限
- 为私有托管区域配置VPC关联
-
网络配置
- 源和目标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文件。
