多云白名单MCP服务器
](https://pypi.org/project/whitelistmcp/) ](https://pypi.org/project/whitelistmcp/)     
一个模型上下文协议(MCP)服务器,用于跨AWS、Azure和Google云平台管理安全组/防火墙规则。通过特定于云的优化和并行处理提供统一的白名单功能。
🚀 特性
核心功能
- 多云支持:AWS、Azure和GCP防火墙管理的统一接口
- MCP协议合规性:完整的JSON-RPC 2.0实现,支持批处理
- Claude桌面集成:与Claude无缝集成,实现多云管理
- 无状态设计:无凭据存储-设计安全
- 并行处理:同时跨多个云执行操作
- 全面验证:IP地址、端口和参数验证
- 生产就绪:错误处理、日志记录和超时管理
云特定功能
- 亚马逊云服务:具有完整规则管理的EC2安全组
- Azure:具有基于优先级规则的网络安全组
- 谷歌云平台:出于安全考虑,VPC防火墙规则采用仅添加模式
高级删除选项
- 仅按IP地址删除(跨所有端口/服务)
- 仅按服务名称/端口删除(跨所有IP)
- 按IP+服务名称/端口组合删除
- 带过滤的批量移除操作
📦 安装
来自PyPI(推荐)
pip install whitelistmcp>=2.0.0来源
git clone https://github.com/dbbuilder/whitelistmcp.git
cd whitelistmcp
pip install -e .🔧 快速开始
1.安装服务器
pip install whitelistmcp>=2.0.02.配置克劳德桌面
添加到您的Claude Desktop配置文件中:
{
"mcpServers": {
"whitelistmcp": {
"command": "whitelistmcp",
"env": {
"CLOUD_PROVIDER": "aws", // Options: aws, azure, gcp, all
"AWS_ACCESS_KEY_ID": "your-aws-key",
"AWS_SECRET_ACCESS_KEY": "your-aws-secret",
"AWS_DEFAULT_REGION": "us-east-1",
"AZURE_CLIENT_ID": "your-azure-client-id",
"AZURE_CLIENT_SECRET": "your-azure-secret",
"AZURE_TENANT_ID": "your-azure-tenant",
"AZURE_SUBSCRIPTION_ID": "your-azure-subscription",
"GCP_PROJECT_ID": "your-gcp-project",
"GCP_CREDENTIALS_PATH": "/path/to/gcp-credentials.json"
}
}
}
}3.在Claude中使用
只需让Claude跨任何云管理您的安全组:
- “将我的IP添加到AWS安全组sg-123456以进行SSH访问”
- “将192.168.1.0/24添加到Azure NSG web NSG以用于HTTPS”
- “将我的IP添加到端口8080的GCP防火墙”(仅为安全起见添加)
- “从所有安全组中删除IP 192.168.1.1”
- “从安全组sg-123456中删除所有SSH规则”
- “从Azure NSG中删除192.168.1.1:443”
有关详细的设置说明,请参阅 CLAUDE_DESKTOP_SETUP.md.
🚀 并行多云执行
当 CLOUD_PROVIDER=all,操作在所有配置的云上同时执行:
# Example: Add IP to all clouds in parallel
{
"cloud": "all",
"ip_address": "203.0.113.1",
"port": 443,
"description": "Production API access"
}
# Result: Rules created in parallel on:
# - AWS Security Group (us-east-1)
# - Azure NSG (eastus)
# - GCP Firewall (us-central1)性能优势
- 快3倍:操作完成速度与最慢的云一样快
- 原子操作:每个云操作都是独立的
- 详细结果:每个云的个人成功/失败
- 自动重试:每个云都可以重试失败的操作
🔐 环境变量
关键环境变量(参见 .env.example 完整列表):
# Cloud Provider Selection
CLOUD_PROVIDER=aws # Options: aws, azure, gcp, all
# AWS Credentials
AWS_ACCESS_KEY_ID=your_aws_key_here
AWS_SECRET_ACCESS_KEY=your_aws_secret_here
AWS_DEFAULT_REGION=us-east-1
AWS_DEFAULT_SECURITY_GROUP_ID=sg-0f0df629567eb6344
# Azure Credentials
AZURE_CLIENT_ID=your_azure_client_id
AZURE_CLIENT_SECRET=your_azure_client_secret
AZURE_TENANT_ID=your_azure_tenant_id
AZURE_SUBSCRIPTION_ID=your_azure_subscription_id
AZURE_DEFAULT_RESOURCE_GROUP=my-resource-group
AZURE_DEFAULT_NSG_NAME=my-nsg
# GCP Credentials
GCP_PROJECT_ID=your_gcp_project
GCP_CREDENTIALS_PATH=/path/to/credentials.json
GCP_DEFAULT_NETWORK=default
GCP_ADDITIVE_ONLY=true # Safety feature: only add rules, never remove
# Common Settings
DESCRIPTION_PREFIX=auto
DESCRIPTION_SEPARATOR=-
DESCRIPTION_TIMESTAMP_FORMAT=%Y%m%d-%H%M🛠️ 可用工具
MCP服务器提供以下工具:
whitelist_add
在一个或多个云的安全组/防火墙中添加IP地址。
{
"cloud": "all", // aws, azure, gcp, or all for parallel execution
"credentials": {
"aws_credentials": {
"access_key_id": "AKIA...",
"secret_access_key": "...",
"region": "us-east-1" // AWS-specific region
},
"azure_credentials": {
"client_id": "...",
"client_secret": "...",
"tenant_id": "...",
"subscription_id": "...",
"region": "eastus" // Azure-specific region
},
"gcp_credentials": {
"project_id": "my-project",
"credentials_path": "/path/to/creds.json",
"region": "us-central1" // GCP-specific region
}
},
"security_group_id": "sg-123456", // AWS
"nsg_name": "my-nsg", // Azure
"resource_group": "my-rg", // Azure
"firewall_name": "allow-web", // GCP
"ip_address": "192.168.1.1",
"port": 22,
"protocol": "tcp",
"description": "SSH access",
"service_name": "ssh"
}whitelist_remove
使用灵活的筛选删除规则:
- 仅按IP:删除该IP的所有规则
- 仅按服务/端口:删除该服务的所有规则
- 按IP+服务/端口:删除特定组合
{
"cloud": "aws",
"credentials": {...},
"security_group_id": "sg-123456",
"ip_address": "192.168.1.1", // optional
"port": 22, // optional
"service_name": "ssh" // optional
}whitelist_list
列出安全组/防火墙中的所有规则。
whitelist_check
检查IP/服务组合是否已列入白名单。
whitelist_sync
跨多个云同步规则(企业功能)。
在Claude Desktop中,这些显示为:
whitelistmcp:whitelist_addwhitelistmcp:whitelist_removewhitelistmcp:whitelist_listwhitelistmcp:whitelist_checkwhitelistmcp:whitelist_sync
🔐 凭据管理
选项1:环境变量
{
"mcpServers": {
"whitelistmcp": {
"command": "whitelistmcp",
"env": {
"AWS_ACCESS_KEY_ID": "your-key",
"AWS_SECRET_ACCESS_KEY": "your-secret",
"AWS_DEFAULT_REGION": "us-east-1"
}
}
}
}选项2:AWS配置文件
{
"mcpServers": {
"whitelistmcp": {
"command": "whitelistmcp",
"env": {
"AWS_PROFILE": "production"
}
}
}
}选项3:按请求
克劳德将在需要时提示提供凭据。
有关高级模式,请参见 MCP_CREDENTIAL_PATTERNS.md.
🛡️ 安全最佳实践
- 从不将凭据存储在配置文件中
- 使用IAM角色 在AWS基础架构上运行时
- 轮换凭据 定期
- 最低权限 -仅授予所需的EC2权限:
- ec2:DescribeSecurityGroups - ec2:AuthorizeSecurityGroupIngress - ec2:RevokeSecurityGroupIngress
🧪 测试
测试MCP服务器
# Test initialization
echo '{"jsonrpc":"2.0","method":"initialize","id":1,"params":{}}' | whitelistmcp
# List available tools
echo '{"jsonrpc":"2.0","method":"tools/list","id":2,"params":{}}' | whitelistmcp运行合规性测试
# Check MCP compliance
python MCP_DIAGNOSTIC_SCRIPT.py whitelistmcp🔍 故障排除
常见问题
- “找不到方法:工具/调用”
- 更新到1.1.10或更高版本 - 重新启动克劳德桌面
- “JSON输入意外结束”
- 更新到1.1.6或更高版本 - 检查stdout的调试输出
- AWS凭据错误:
- 验证是否设置了环境变量 - 测试: aws sts get-caller-identity
- 权限被拒绝:
- 确保IAM用户具有所需的EC2权限 - 检查安全组是否存在于正确的区域中
启用调试日志记录
{
"mcpServers": {
"whitelistmcp": {
"command": "whitelistmcp",
"args": ["-v"]
}
}
}📚 MCP协议合规性
此服务器实现:
- ✅ JSON-RPC 2.0协议
- ✅ 批量请求支持
- ✅ 标准
tools/call方法 - ✅ 请求ID跟踪
- ✅ 适当的通知处理
- ✅ 全面的错误代码
有关合规性详细信息,请参阅:
📖 文档
- CLAUDE_DESKTOP_SETUP.md -详细的Claude桌面设置
- MCP_CREDENTIAL_PATTERNS.md -凭证管理模式
- MCP_企业_企业文化.md -MCP开发指南
- MCP_PYTHON_STOUT_GUIDE.md -Python MCP最佳实践
🤝 贡献
- 分叉存储库
- 创建要素分支
- 运行合规性测试
- 提交拉取请求
📄 许可证
MIT许可证-请参阅 许可证 文件。
🏷️ 版本历史记录
- v1.1.10 -已添加
tools/call支持和批量请求 - v1.1.9 -更新了工具命名约定
- v1.1.8 -修复了JSON模式验证问题
- v1.1.7 -集中式版本管理
- v1.1.6 -固定通知处理
看 更改日志.md 完整的历史。
