claude mcp aws sqlserver
MCP服务器 这使Claude能够以自然语言访问在AWS VPC内的Windows EC2实例上运行的SQL Server,而不需要公开公共数据库。
   
______________________________________________________________________
概述
该项目演示了如何构建 MCP(模型上下文协议)服务器 它将Claude Desktop连接到AWS托管的SQL Server环境。所有数据库流量都通过私有VPC网络流动——SQL Server端口永远不会暴露在公共互联网上。
克劳德可以用简单的英语:
- 检查和管理EC2实例(启动、停止、列出)
- 通过AWS SSM在任何实例上运行PowerShell或bash命令
- 使用T-SQL查询SQL Server上的任何数据库
- 列出所有数据库及其运行状况
______________________________________________________________________
建筑
Claude Desktop
|
| MCP (streamable-HTTP)
v
┌─────────────────────────────────┐
│ server.py │
│ (FastMCP) │
│ │
│ ┌──────────┐ ┌─────────────┐ │
│ │ boto3 │ │ pyodbc │ │
│ └────┬─────┘ └──────┬──────┘ │
└───────┼───────────────┼─────────┘
│ │
AWS API VPC-internal TCP
│ │
┌──────┴──────┐ ┌─────┴──────────────┐
│ EC2 + SSM │ │ Windows EC2 │
│ (control) │ │ SQL Server 2019+ │
└─────────────┘ └────────────────────┘关键设计决策:
- SSM用于远程命令执行,而不是RDP/SSH——实例上不需要入站端口。
- 平台检测会自动选择正确的SSM文档(PowerShell与bash)。
pyodbc通过私有VPC IP连接到SQL Server,使数据库远离公共互联网。
______________________________________________________________________
MCP工具
| 工具 | 说明 |
|---|---|
list_instances | 列出所有EC2实例,包括状态、类型和公共IP |
start_instance | 按ID启动已停止的EC2实例 |
stop_instance | 按ID停止正在运行的EC2实例 |
run_command | 通过SSM运行shell或PowerShell命令(自动检测操作系统) |
sql_query | 对命名数据库执行任何T-SQL查询 |
list_databases | 列出所有具有状态和恢复模式的SQL Server数据库 |
______________________________________________________________________
先决条件
AWS端
- 至少有一个EC2实例运行SQL Server(Windows)的AWS帐户
- SSM代理 在所有托管EC2实例上安装并运行
- IAM角色通过以下方式附加到每个EC2实例
AmazonSSMManagedInstanceCore政策 - 运行此服务器的计算机需要具有以下权限的AWS凭据
ec2:Describe*,ec2:StartInstances,ec2:StopInstances,ssm:SendCommand,以及ssm:GetCommandInvocation
本地计算机
- Python 3.10或更高版本
- SQL Server的ODBC驱动程序17
- 窗户: 从Microsoft下载 - macOS: brew install msodbcsql17 - Ubuntu/Debian: sudo apt-get install -y msodbcsql17
- 克劳德桌面 启用MCP支持
______________________________________________________________________
设置
1.克隆存储库
git clone https://github.com/jesseeastern/claude-mcp-aws-sqlserver.git
cd claude-mcp-aws-sqlserver2.安装Python依赖项
pip install -r requirements.txt3.配置凭据
编辑 server.py 并填写文件顶部的常量:
WINDOWS_INSTANCE_ID = "i-XXXXXXXXXXXXXXXXX" # Your Windows EC2 instance ID
SQL_SERVER_IP = "10.0.0.X" # Private VPC IP of the SQL Server
SQL_SERVER_PORT = 1433
SQL_USER = "sa"
SQL_PASSWORD = "your-password-here"提示: 对于生产使用,请从环境变量或AWS Secrets Manager加载这些值,而不是对其进行硬编码。
4.配置AWS凭据
服务器使用标准boto3凭据链。最简单的方法:
aws configure
# or set environment variables:
export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
export AWS_DEFAULT_REGION=us-east-25.在克劳德桌面注册
将以下内容添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"vpc-mcp": {
"command": "python",
"args": ["/absolute/path/to/server.py"],
"transport": "streamable-http",
"url": "http://localhost:8000/mcp"
}
}
}6.启动服务器
python server.py______________________________________________________________________
示例提示
连接后,您可以问Claude以下问题:
- *“列出我的所有EC2实例,并告诉我哪些实例正在运行。”*
- *“启动实例i-0abc123def456789a并等待其可用。”*
- *“SQL Server上存在哪些数据库?”*
- *“对AdventureWorks2019运行此查询:从Sales.SalesOrderHeader ORDER BY TotalDue DESC中选择前10名\*”*
- *“使用PowerShell检查Windows实例上的可用磁盘空间。”*
______________________________________________________________________
安全说明
- 切勿提交真实密码或AWS凭据 源代码控制。使用环境变量或机密管理器。
- 中的占位符值
server.py(i-XXXXXXXXXXXXXXXXX,YOUR_SA_PASSWORD_HERE)是故意的——只在本地副本中替换它们。 - 使用最小权限原则将IAM角色限制为所需的最小权限。
- 考虑启用AWS CloudTrail来审核所有SSM命令执行。
______________________________________________________________________
技术栈
- FastMCP --Python MCP服务器框架
- 肉毒杆菌3 --AWS Python SDK
- pyodbc --ODBC数据库连接
- AWS EC2 --云中的虚拟机
- AWS系统经理(SSM) --无需打开入站端口即可安全执行远程命令
______________________________________________________________________
许可证
该项目根据 MIT许可证.
