mcpField
H
HANA Cloud MCP Server

HANA Cloud MCP Server

本地服务
github.com/HatriGt数据库723 周前更新

关于 HANA Cloud MCP Server

HANA Cloud MCP Server 是面向 SAP HANA 与 SAP HANA Cloud 的 MCP 服务,允许 AI 客户端浏览数据库结构并执行带防护的 SQL。它还可合并业务领域元数据,使 Agent 对代码和表含义的理解保持一致,同时数据库仍为权威数据源。

主要功能

  1. 01Schema、表与列的结构浏览
  2. 02带防护的参数化 SQL 执行与分页
  3. 03约束、索引、视图及 DDL 查询
  4. 04默认禁止 DML,可按类型单独开启
  5. 05可选的业务语义 JSON 覆盖层

适用场景

  1. 01让 AI 客户端在 HANA 中探索数据表结构
  2. 02在受限条件下执行只读 SQL 分析
  3. 03为 Agent 提供代码值与表含义的统一说明

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露 34 个工具(如 hana_execute_query、hana_describe_table)以及 hana:/// 系列资源 URI。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

SAP HANA MCP 服务

npm version npm downloads Node.js License MCP

SAP HANA MCP Server 为 SAP HANA 和 SAP HANA Cloud 实现了 Model Context Protocol。AI 客户端可以发现架构、在防护措施下运行 SQL,并按需合并业务/领域元数据,帮助 Agent 一致地解读代码和表,而不会取代作为事实来源的数据库。


📚 文档

文档用途
本 README前提条件、安装、各客户端的连接方法、功能摘要、配置速查表、故障排除
CHANGELOG.md发布历史——按版本列出的功能和修复(最新版本为 0.3.1)
docs/README.md/docs 索引
docs/ENVIRONMENT.md权威环境变量参考:所有变量、默认值、严格边界、HTTP 身份验证、安全说明
docs/configuration-samples.md可直接复制粘贴:连接配置文件(单容器、MDC)、语义 JSON、分页说明
docs/local-http-mcp.md本地 HTTP MCP:npm run start:http、Cursor mcp.json、curl 冒烟测试

✅ 前提条件

  • Node.js 18+
  • 一台可从运行服务的机器通过 SQL 端口访问的 SAP HANA 或 SAP HANA Cloud 数据库
  • 一个 MCP 客户端(Claude Desktop、Claude Code、VS Code、Cursor、Cline、Windsurf 或自定义 HTTP 客户端)
  • 通过 env 提供的凭据(参见安全)

📦 安装

方法适用场景
在 MCP 配置中使用 npx + -y hana-mcp-server默认方式——无需全局安装
npm install -g hana-mcp-server需要将 hana-mcp-server 添加到 PATH
克隆后运行 node hana-mcp-server.js开发或固定使用本地构建版本

HTTP 入口(从克隆的项目运行):npm run start:http——默认绑定地址为 127.0.0.1:3100,路径为 /mcp。参见托管与 HTTP。


🎯 使用场景

用户群体传输方式下一步
聊天 / 轻量用户stdioClaude Desktop
开发者(Claude Code、VS Code、Cline、Cursor、Windsurf)stdioIDE 和编码 Agent
使用 AI Agent 的业务应用(通过 HTTP 托管 MCP)HTTP托管与 HTTP

🖥️ Claude Desktop

  1. 配置文件路径:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\claude\claude_desktop_config.json
    • Linux: ~/.config/claude/claude_desktop_config.json
  2. 注册服务;将连接设置放入 env(参见配置;完整配置文件 JSON 见 configuration-samples.md)。以下示例包含适用于 MDC 的 HANA_INSTANCE_NUMBER / HANA_DATABASE_NAME——如果使用单容器数据库,请删除它们。

{
  "mcpServers": {
    "HANA Database": {
      "command": "npx",
      "args": ["-y", "hana-mcp-server"],
      "env": {
        "HANA_HOST": "your-hana-host.com",
        "HANA_PORT": "443",
        "HANA_USER": "your-username",
        "HANA_PASSWORD": "your-password",
        "HANA_SCHEMA": "your-schema",
        "HANA_SSL": "true",
        "HANA_ENCRYPT": "true",
        "HANA_VALIDATE_CERT": "true",
        "HANA_CONNECTION_TYPE": "auto",
        "HANA_INSTANCE_NUMBER": "10",
        "HANA_DATABASE_NAME": "HQQ",
        "LOG_LEVEL": "info",
        "ENABLE_FILE_LOGGING": "true",
        "ENABLE_CONSOLE_LOGGING": "false"
      }
    }
  }
}

如果 CLI 位于 PATH 中,可以使用 "command": "hana-mcp-server" 并省略 args。

  1. 重启 Claude Desktop。

可选: HANA MCP UI——运行 npx hana-mcp-ui 以编辑 env 并部署到 Claude Desktop。

💻 IDE 和编码 Agent

仅支持 stdio;env 键与上文相同。规范示例 — Claude Code(~/.claude.json 或项目 .mcp.json)。下方的 env 块包含用于 MDC 租户 HANA 的 HANA_DATABASE_NAME;大多数单容器部署可省略此项。

{
  "mcpServers": {
    "hana": {
      "type": "stdio",
      "timeout": 600,
      "command": "npx",
      "args": ["-y", "hana-mcp-server"],
      "env": {
        "HANA_HOST": "<host>",
        "HANA_PORT": "31013",
        "HANA_USER": "<user>",
        "HANA_PASSWORD": "<password>",
        "HANA_SCHEMA": "SAPABAP1",
        "HANA_DATABASE_NAME": "HQQ",
        "HANA_SSL": "false",
        "HANA_ENCRYPT": "false",
        "HANA_VALIDATE_CERT": "false",
        "LOG_LEVEL": "info",
        "ENABLE_FILE_LOGGING": "true",
        "ENABLE_CONSOLE_LOGGING": "false"
      }
    }
  }
}

在 VS Code、Cline、Cursor 和 Windsurf 中使用相同的 command、args 和 env。每次修改 env 后,都要在 IDE 中重启 MCP 服务连接。


🌐 托管与 HTTP

从本仓库的检出目录运行 HTTP 传输(运行 npm install 后)。已发布的 npx hana-mcp-server 仅支持 stdio。

npm run start:http

**通过 HTTP 使用 Cursor / 本地 IDE:**在运行 start:http 的 shell(或进程管理器)中设置 HANA_*,然后添加 HTTP MCP 条目,将 url 设为 http://127.0.0.1:3100/mcp(根据 Cursor 版本使用 "type": "fetch" 或 "type": "http")。参见 docs/local-http-mcp.md 和 ./scripts/start-http-mcp.sh。

主题详情
端点向 /mcp 发送 POST JSON-RPC 请求(默认基址为 http://127.0.0.1:3100)
调优MCP_HTTP_HOST、MCP_HTTP_PORT
健康检查GET /health → 200
CORSMCP_HTTP_ALLOWED_ORIGINS — ENVIRONMENT.md §7
可选的 Bearer JWT(OAuth2 / OIDC)
变量作用
MCP_HTTP_AUTH_ENABLEDtrue → 要求 POST /mcp 携带 Authorization: Bearer <token>
MCP_HTTP_JWT_ISSUER颁发者 / JWKS(绑定 XSUAA 的 SAP BTP 环境中可省略)
MCP_HTTP_JWT_AUDIENCE可选的预期 aud
MCP_HTTP_JWT_SCOPES_REQUIRED可选的作用域列表

**SAP BTP:**绑定 XSUAA,设置 MCP_HTTP_AUTH_ENABLED=true,并分配角色集合。详情:ENVIRONMENT.md §7。


🔒 安全

  • 机密信息:HANA_PASSWORD、JWT 材料以及嵌入凭据的 URL 应存放在 env 或机密管理器中,而不是 git 中。
  • **供应链:**在 CI 和共享桌面环境中,优先使用已发布软件包中的 npx -y,而不是可变的全局安装。
  • **HTTP:**除 localhost 以外的场景都应启用 JWT 验证;将服务置于反向代理之后,以实现 TLS 终止和网络策略控制。

更多说明:ENVIRONMENT.md §9。


🎯 功能

34 个工具,涵盖六个领域,均已在 HANA Cloud 上验证。

领域工具功能
连接与配置hana_show_config hana_test_connection hana_show_env_vars hana_get_session_info验证连通性、检查配置、查看当前用户/架构/数据库/版本
架构浏览hana_list_schemas hana_list_tables hana_describe_table hana_explain_table hana_search_tables hana_search_columns分页列出架构/表、列元数据、跨架构搜索,以及可选的业务含义叠加信息
SQL 执行hana_execute_query hana_query_next_page参数化 SQL,支持可选的行/列/单元格上限、分页(maxRows/offset/includeTotal)和快照续查
结构分析hana_list_constraints hana_list_foreign_keys hana_list_indexes hana_describe_index hana_list_views hana_describe_view hana_list_synonyms hana_list_privileges hana_get_ddlPK/UK/FK/检查约束、索引、带 SQL 定义的视图、同义词、有效权限、CREATE 语句 DDL
代码对象hana_list_procedures hana_describe_procedure hana_list_functions hana_describe_function hana_list_calculation_views hana_list_sequences存储过程、标量/表函数、SAP BW/S4 计算视图(_SYS_BIC)、序列
数据与性能hana_get_table_stats hana_get_sample_data hana_get_column_stats hana_explain_plan hana_get_dependencies hana_get_partition_info hana_get_expensive_queries行数、样本行、不同值/空值统计、查询执行计划、对象依赖关系图、分区信息、开销最高的语句
DML 防护—默认阻止 INSERT / UPDATE / DELETE / TRUNCATE;可通过 HANA_ALLOW_INSERT / HANA_ALLOW_UPDATE / HANA_ALLOW_DELETE 分别选择启用
资源hana:///schemas hana:///schemas/{s}/tables/{t}用于列举架构和表的 MCP 资源 URI;大型负载中包含 truncated 标志
领域知识通过 hana_explain_table可选的 JSON 语义叠加信息(表描述、列含义、代码值映射)——configuration-samples.md

🛠️ 配置

变量适用于 stdio(客户端配置中的 env)和 HTTP(进程环境)。更改后请重启。

名称、默认值和限制范围的权威来源:docs/ENVIRONMENT.md。
可直接复制粘贴的连接 JSON(单容器/MDC):docs/configuration-samples.md#connection-profiles-env-json。

必填项
参数描述示例
HANA_HOST主机名或 IPhana.company.com
HANA_USER数据库用户DBADMIN
HANA_PASSWORD数据库密码(机密)
连接与 TLS
参数默认值备注
HANA_PORT443MDC SQL 端口通常为 3NN13(例如 31013)
HANA_SCHEMA—工具未提供 schema_name 时使用的默认值
HANA_CONNECTION_TYPEautoauto、single_container、mdc_system、mdc_tenant
HANA_INSTANCE_NUMBER—MDC 实例 ID(例如 10)
HANA_DATABASE_NAME—MDC 的租户名称(例如 HQQ、HQP)——仅用于会话数据库
HANA_SSL / HANA_ENCRYPT / HANA_VALIDATE_CERTtrue驱动程序的 TLS 和证书验证标志
日志记录
参数默认值备注
LOG_LEVELinfoerror … debug
ENABLE_FILE_LOGGINGfalse*true 表示启用文件日志
ENABLE_CONSOLE_LOGGINGtrue对于 stdio,通常设为 false 以减少 stderr 输出

*代码默认值;示例中通常将文件日志记录设为 true。

限制(查询、列表、资源)
参数默认值用途
HANA_QUERY_LIMITS_ENABLEDfalse设置为 true 可启用自动行数/列数/单元格上限。设置为 false 时,用户提供的 maxRows、offset 和 includeTotal 仍然有效。
HANA_QUERY_TIMEOUT_MS0语句超时时间(ms);0 = 已禁用。单次调用的 timeout_ms 会覆盖此设置。
HANA_MAX_RESULT_ROWS50每个 hana_execute_query 分页的最大行数(启用限制后生效)
HANA_MAX_RESULT_COLS50每行返回的最大列数(启用限制后生效)
HANA_MAX_CELL_CHARS200截断较长的单元格文本(启用限制后生效)
HANA_QUERY_DEFAULT_OFFSET0默认 offset(启用限制后生效)
HANA_LIST_DEFAULT_LIMIT200列表工具:默认及最大分页大小
HANA_RESOURCE_LIST_MAX_ITEMS500限制 hana:/// 载荷中嵌入的名称数量
HANA_QUERY_SNAPSHOT_TTL_MS300000查询分页的快照 ID 有效期
HANA_CONNECTION_POOL_SIZE3HANA 连接池大小(1–20)
DML 权限

默认禁止 INSERT、UPDATE 和 DELETE。将相应选项设为 true 即可允许:

参数默认值用途
HANA_ALLOW_INSERTfalse允许通过 hana_execute_query 执行 INSERT
HANA_ALLOW_UPDATEfalse允许通过 hana_execute_query 执行 UPDATE
HANA_ALLOW_DELETEfalse允许通过 hana_execute_query 执行 DELETE 和 TRUNCATE
业务/领域 JSON(HANA_SEMANTICS_*)
参数默认值用途
HANA_SEMANTICS_PATH—词典 JSON 的文件路径(优先于 URL)
HANA_SEMANTICS_URL—指向相同格式内容的 HTTPS URL
HANA_SEMANTICS_TTL_MS60000缓存/重新加载行为

示例:configuration-samples.md。


🔧 故障排除

症状检查项
客户端日志中出现 spawn npx ENOENT / spawn hana-mcp-server ENOENT客户端无法在 PATH 中找到 npx / hana-mcp-server——请参阅下文的客户端无法找到 npx
连接被拒绝HANA_HOST、HANA_PORT、网络路径
身份验证失败/没有客户端密码、用户、租户上的 HANA_DATABASE_NAME;使用连接测试工具查看驱动程序消息
TLS 错误HANA_VALIDATE_CERT、信任存储
对象错误或为空MDC:可见性由租户决定;不同租户中同名的架构可能不同
SQL 需要另一个数据库前缀hana_execute_query 不会重写 SQL;请使用 HANA 所需的三段式名称(例如 HSP.SAPABAP1.TABLE),同时让 HANA_DATABASE_NAME 保持为你连接的租户(例如 HQP)

**调试:**设置 LOG_LEVEL=debug、ENABLE_CONSOLE_LOGGING=true,然后重启。

客户端无法找到 npx(spawn ENOENT)

从 Dock 或开始菜单启动的 GUI 客户端(Claude Desktop、Cursor、VS Code,……)会继承一个精简的 PATH,可能无法找到安装在 /opt/homebrew/bin、~/.nvm/...、mise 或 volta 下的 Node 工具。这会影响所有基于 npx 的 MCP,而不仅是此服务。错误会显示在 MCP 客户端日志中:

Connection failed: spawn npx ENOENT

选择一种修复方法:

  1. 将 npx / node 符号链接到 GUI 可见的路径(macOS、Homebrew):

    ln -s "$(which npx)"  /usr/local/bin/npx
    ln -s "$(which node)" /usr/local/bin/node
    
  2. 在 MCP 配置中使用绝对路径——可移植性最佳,不依赖 PATH。使用 which node 和 npm root -g 获取路径:

    {
      "mcpServers": {
        "hana": {
          "type": "stdio",
          "command": "/opt/homebrew/bin/node",
          "args": ["/opt/homebrew/lib/node_modules/hana-mcp-server/hana-mcp-server.js"],
          "env": { "HANA_HOST": "...", "HANA_USER": "...", "HANA_PASSWORD": "..." }
        }
      }
    }
    

    需要一次性运行 npm install -g hana-mcp-server。

  3. 在 MCP 的 env 块中注入 PATH——保留 npx 的写法:

    "env": {
      "PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin",
      "HANA_HOST": "...",
      "HANA_USER": "...",
      "HANA_PASSWORD": "..."
    }
    

更改后重启 MCP 客户端。如果随后 npx 因 ~/.npm/_cacache 上的 EPERM 而失败,说明 npm 缓存中有先前通过 sudo npm 创建的 root 所有文件——运行 sudo chown -R "$(whoami)" ~/.npm 修复,或在同一个 env 块中设置 "NPM_CONFIG_CACHE": "/tmp/hana-mcp-npm-cache"。


🖥️ HANA MCP UI

npx hana-mcp-ui

HANA MCP UI


🏗️ Architecture

HANA MCP Server Architecture

hana-mcp-server/
├── src/
│   ├── server/           # MCP lifecycle, resources, HTTP transport
│   ├── tools/            # 34 tools: schema, SQL, discovery, config
│   ├── database/         # HANA client, connection pool, executor, query runner
│   ├── semantics/        # Optional semantics / domain JSON loader
│   ├── utils/            # Logger, config, validators, formatters
│   ├── query-snapshot-store.js
│   └── constants/        # MCP constants, tool definitions
├── tests/
├── docs/                 # README index, ENVIRONMENT.md, configuration-samples.md, diagrams
└── hana-mcp-server.js    # stdio entry point

📦 Package

RuntimeNode.js 18+
PlatformsmacOS, Linux, Windows
Dependencies@sap/hana-client, axios, jose

🤝 Support

📄 License

MIT — see LICENSE.

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。