SAP MCP服务器(Python)
用于SAP HANA和SQL数据库的基于Python的模型上下文协议(MCP)服务器。这允许像Claude Desktop这样的AI客户端从SAP系统查询实时数据。
特性
- SAP HANA支持 通过
hdbcli(SAP的官方Python客户端) - 通用SQL支持 通过ODBC访问其他数据库
- 只读访问 -只允许SELECT查询
- csv输出 -结果格式化,便于人工智能消费
- 简单的YAML配置
先决条件
- Python 3.10或更高版本
- SAP HANA客户端库(用于HANA连接)
- ODBC驱动程序(用于ODBC连接)
安装
1.克隆或下载此项目
cd D:\_projects\sap-mcp-server-python2.安装包装
对于SAP HANA:
pip install -e ".[hana]"对于ODBC连接:
pip install -e ".[odbc]"对于两者:
pip install -e ".[all]"3.安装SAP HANA客户端(用于HANA连接)
这 hdbcli 软件包要求安装SAP HANA客户端:
- 下载自 SAP开发工具
- 安装SAP HANA客户端
- 这
hdbcli套餐将可用
或者,直接通过pip安装(如果可用):
pip install hdbcli配置
1.创建配置文件
复制示例配置:
cp config.example.yaml config.yaml2.编辑配置
对于SAP HANA:
server:
name: sap-hana
prefix: sap_hana
version: "1.0"
connector:
type: hana
host: your-hana-server.example.com
port: 30015
user: SYSTEM
password: your-password
tables: []对于SAP HANA云:
server:
name: hana-cloud
prefix: hana_cloud
version: "1.0"
connector:
type: hana
host: your-instance.hana.ondemand.com
port: 443
user: DBADMIN
password: your-password
encrypt: true
sslValidateCertificate: true
tables: []对于ODBC(SQL Server等):
server:
name: sql-server
prefix: sql
version: "1.0"
connector:
type: odbc
connection_string: "Driver={ODBC Driver 17 for SQL Server};Server=localhost;Database=mydb;UID=user;PWD=password"
tables: []运行服务器
独立测试
python -m sap_mcp config.yaml如果配置正确,服务器将启动并通过stdin等待MCP请求。
使用克劳德桌面
- 编辑Claude Desktop的配置文件:
窗户: %APPDATA%\Claude\claude_desktop_config.json
雨衣: ~/Library/Application Support/Claude/claude_desktop_config.json
- 添加MCP服务器配置:
{
"mcpServers": {
"sap-hana": {
"command": "python",
"args": [
"-m",
"sap_mcp",
"D:\\_projects\\sap-mcp-server-python\\config.yaml"
]
}
}
}- 重新启动Claude Desktop(完全退出并重新打开)
- 在Claude Desktop中查找MCP工具图标(锤子)
可用工具
配置后,AI客户端将可以访问这些工具:
| 工具 | 说明 |
|---|---|
{prefix}_get_tables | 列出数据库中的所有表/视图 |
{prefix}_get_columns | 列出特定表的列 |
{prefix}_run_query | 执行SQL SELECT语句 |
示例用法
问克劳德:
- “SAP HANA中有哪些表可用?”
- “显示CUSTOMERS表中的列”
- “按价值获得前10个订单”
配置参考
| 字段 | 必填 | 描述 |
|---|---|---|
server.name | Yes | MCP服务器的名称 |
server.prefix | 是 | 工具名称的前缀(例如。, sap_hana) |
server.version | 否 | 服务器版本(默认:“1.0”) |
connector.type | 是 | 连接器类型: hana 或 odbc |
connector.host | HANA | HANA服务器主机名 |
connector.port | HANA | HANA服务器端口(默认:30015) |
connector.user | HANA | 数据库用户名 |
connector.password | HANA | 数据库密码 |
connector.encrypt | 否 | 启用SSL加密(默认值:false) |
connector.sslValidateCertificate | 否 | 验证SSL证书(默认值:true) |
connector.connection_string | ODBC | ODBC连接字符串 |
tables | 否 | 要公开的表列表(空=全部) |
log_file | 否 | 调试日志文件的路径 |
故障排除
服务器无法启动
- 检查是否安装了Python 3.10+:
python --version - 验证软件包是否已安装:
pip show sap-mcp-server - 检查配置文件语法:
python -c "import yaml; yaml.safe_load(open('config.yaml'))"
连接失败
- 测试与SAP HANA服务器的连接
- 验证凭据是否正确
- 对于HANA云,请确保
encrypt: true已设置 - 检查防火墙规则是否允许端口
工具未显示在Claude Desktop中
- 完全退出Claude Desktop(检查任务管理器/活动监视器)
- 验证中的配置路径
claude_desktop_config.json - 检查JSON配置中的拼写错误
- 查看Claude Desktop日志中的错误
调试记录
在配置中启用日志记录:
log_file: /path/to/debug.log然后检查日志文件以获取详细信息。
项目结构
sap-mcp-server-python/
├── pyproject.toml # Package configuration
├── config.example.yaml # Example configuration
├── README.md # This file
└── src/sap_mcp/
├── __init__.py
├── __main__.py # Entry point
├── server.py # MCP server setup
├── config.py # Configuration loader
├── csv_utils.py # CSV formatting
├── connectors/
│ ├── base.py # Abstract connector
│ ├── hana.py # SAP HANA connector
│ └── odbc.py # ODBC connector
└── tools/
├── get_tables.py # List tables tool
├── get_columns.py # List columns tool
└── run_query.py # SQL query tool许可证
MIT许可证-有关详细信息,请参阅许可证文件。
