数据库查询服务器

一个基于Python的模型上下文协议(MCP)服务器,支持SAP HANA和SQL数据库,允许AI客户端(如Claude Desktop)从SAP系统查询实时数据。

  • by AmistaUS-AVA
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 AmistaUS-AVA/SBO-MCP-HANA

使用说明

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-python

2.安装包装

对于SAP HANA:

pip install -e ".[hana]"

对于ODBC连接:

pip install -e ".[odbc]"

对于两者:

pip install -e ".[all]"

3.安装SAP HANA客户端(用于HANA连接)

这 hdbcli 软件包要求安装SAP HANA客户端:

  1. 下载自 SAP开发工具
  2. 安装SAP HANA客户端
  3. 这 hdbcli 套餐将可用

或者,直接通过pip安装(如果可用):

pip install hdbcli

配置

1.创建配置文件

复制示例配置:

cp config.example.yaml config.yaml

2.编辑配置

对于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请求。

使用克劳德桌面

  1. 编辑Claude Desktop的配置文件:

    窗户: %APPDATA%\Claude\claude_desktop_config.json

    雨衣: ~/Library/Application Support/Claude/claude_desktop_config.json

  2. 添加MCP服务器配置:

{
  "mcpServers": {
    "sap-hana": {
      "command": "python",
      "args": [
        "-m",
        "sap_mcp",
        "D:\\_projects\\sap-mcp-server-python\\config.yaml"
      ]
    }
  }
}
  1. 重新启动Claude Desktop(完全退出并重新打开)

  2. 在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 否 调试日志文件的路径

故障排除

服务器无法启动

  1. 检查是否安装了Python 3.10+: python --version
  2. 验证软件包是否已安装: pip show sap-mcp-server
  3. 检查配置文件语法: python -c "import yaml; yaml.safe_load(open('config.yaml'))"

连接失败

  1. 测试与SAP HANA服务器的连接
  2. 验证凭据是否正确
  3. 对于HANA云,请确保 encrypt: true 已设置
  4. 检查防火墙规则是否允许端口

工具未显示在Claude Desktop中

  1. 完全退出Claude Desktop(检查任务管理器/活动监视器)
  2. 验证中的配置路径 claude_desktop_config.json
  3. 检查JSON配置中的拼写错误
  4. 查看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许可证-有关详细信息,请参阅许可证文件。

学分

基于 SAP Business One的CData MCP服务器.