Token导航 LogoToken导航TokenDH.com
Sap Hana MCP logo
AI代理未说明官方级别未说明来源级核验

Sap Hana MCP

MCP Server

SAP B1-HANA Broker MCP是一个经过认证的、具有范围感知的MCP服务器,用于SAP HANA读取和SAP Service Layer写入,通过每个调用者配置文件、审批门和深度防御安全将LLM(如Claude)连接到SAP环境。

工具数

12

提示词数

0

GitHub Stars

0

资源数

0
安全控制TypeScriptClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

novarii

提供方

novarii

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

SAP B1-HANA经纪人MCP

用于SAP HANA读取和SAP服务层写入的经过身份验证、范围感知的MCP服务器。通过按呼叫者配置文件、审批门和深度防御安全将Claude等LLM连接到您的SAP环境。

特性

  • 两次运输 --stdio(开发,无身份验证)和HTTP(生产,承载令牌身份验证)
  • 基于范围的访问控制 --配置文件定义了每个调用者可以查看和使用的工具
  • HANA读取工具 --模式自检、表采样、只读SQL查询
  • SAP写入工具 --通过服务层处理生产订单、采购请求、库存变动
  • 审批工作流程 --写操作在执行前可能需要人工批准
  • 安全控制 --SQL验证、速率限制、行限制、查询超时、审计日志记录
  • SAP HANA 2.0 SPS05+SAP Business One服务层 兼容的

安装

git clone 
cd sap-hana-mcp

# Configure SAP npm registry (required for @sap/hana-client)
npm config set @sap:registry https://npm.sap.com

pnpm install
pnpm build

配置

环境变量

复制 .env.example.env 并填写你的价值观。

变量必填默认描述
经纪人
BROKER_TRANSPORT没有stdiostdio (dev)或 http (生产)
BROKER_HOST没有127.0.0.1HTTP绑定地址
BROKER_PORT没有3000HTTP端口
BROKER_CONFIG没有./broker.config.yaml代理配置路径(仅限HTTP模式)
BROKER_TLS没有false为代理端点启用HTTPS
BROKER_TLS_KEY没有/opt/sap-broker/tls/key.pem启用TLS时的PEM私钥路径
BROKER_TLS_CERT没有/opt/sap-broker/tls/cert.pem启用TLS时的PEM证书路径
哈纳
HANA_HOST-HANA服务器主机名或IP
HANA_PORT没有30015HANA端口(3\15)
HANA_USER-数据库用户名
HANA_PASSWORD-数据库密码
HANA_SCHEMA-限制为单个架构(空=全部)
HANA_ENCRYPT没有true启用TLS加密
HANA_SSL_VALIDATE_CERTIFICATE没有true验证SSL证书
HANA_ROW_LIMIT没有1000每次查询的最大行数
HANA_QUERY_TIMEOUT没有30000查询超时(ms)
HANA_CONNECTION_TIMEOUT没有5000连接超时(ms)
SAP服务层 (可选)
SAP_BASE_URL-服务层URL(启用写入工具)
SAP_COMPANY_DB-公司数据库名称
SAP_USERNAME-服务层用户名
SAP_PASSWORD-服务层密码

代理配置(HTTP模式)

broker.config.yaml 定义范围、配置文件、令牌和审批规则。有关完整注释的示例,请参阅随附文件。

范围 映射到工具集:

范围工具
read:metadatalist_schemas, list_tables, list_views, describe_table, get_table_sample
query:hanaexecute_query
write:production_orderscreate_production_order, update_production_order
write:purchase_requestscreate_purchase_request, update_purchase_request
write:inventoryreceive_inventory, issue_inventory

档案 为不同角色(观察者、分析师、计划员、仓库、操作员)捆绑范围。

代币 SHA-256哈希承载令牌映射到配置文件:

# Generate a token + hash pair
TOKEN=$(openssl rand -hex 32)
HASH=$(echo -n "$TOKEN" | shasum -a 256 | cut -d' ' -f1)
echo "token: $TOKEN"
echo "hash:  sha256:$HASH"

审批规则 门写入工具: required (人类必须批准), auto (立即执行),或 deny (块)。

设置

开发模式(stdio)

创建 .mcp.json 在项目根目录中:

{
  "mcpServers": {
    "sap-broker": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/sap-hana-mcp/dist/index.js"],
      "env": {
        "HANA_HOST": "your-hana-host.example.com",
        "HANA_PORT": "30015",
        "HANA_USER": "MCP_READER",
        "HANA_PASSWORD": "your_password",
        "HANA_SCHEMA": "YOUR_SCHEMA"
      }
    }
  }
}

或者通过CLI:

claude mcp add sap-broker --transport stdio \
  --env HANA_HOST=your-hana-host.example.com \
  --env HANA_PORT=30015 \
  --env HANA_USER=your_user \
  --env HANA_PASSWORD=your_password \
  --env HANA_SCHEMA=YOUR_SCHEMA \
  -- node /path/to/sap-hana-mcp/dist/index.js

在stdio模式下,所有工具都可以在没有身份验证的情况下使用(仅限开发人员)。

生产模式(HTTP)

BROKER_TRANSPORT=http \
BROKER_HOST=127.0.0.1 \
BROKER_PORT=3000 \
BROKER_TLS=true \
BROKER_TLS_KEY=/opt/sap-broker/tls/key.pem \
BROKER_TLS_CERT=/opt/sap-broker/tls/cert.pem \
HANA_HOST=your-hana-host.example.com \
HANA_USER=MCP_READER \
HANA_PASSWORD=your_password \
node dist/index.js

呼叫者通过以下方式进行身份验证 Authorization: Bearer 并且只看到与其配置文件范围匹配的工具。

可用工具

读取工具(HANA)

工具说明
list_schemas列出可访问的数据库架构
list_tables列出架构中具有记录计数的表
list_views列出架构中的视图
describe_table获取列、主键;将全部详细信息写入文件
execute_query执行只读SELECT查询
get_table_sample表中的示例行(写入CSV)

写入工具(SAP服务层)

要求 SAP_BASE_URL 待配置。仅在包含写入权限的范围内可用。

工具说明
create_production_order创建生产订单(需要OriginAbs)
update_production_order通过DocEntry更新生产订单
create_purchase_request创建购买请求
update_purchase_request通过DocEntry更新采购请求
receive_inventory收货(库存GenEntries)
issue_inventory货物出库(库存GenExits)

HTTP API

MCP端点

方法路径描述
POST/mcp初始化会话或发送MCP请求
GET/mcp现有会话的SSE流
DELETE/mcp结束会话

会话通过以下方式跟踪 Mcp-Session-Id 头球

批准API(侧通道)

方法路径描述
GET/approvals列出待批准事项
POST/approvals/:id/approve批准待处理的请求
POST/approvals/:id/deny拒绝待处理的请求(可选 reason 体内)

健康检查

GET /health --退货 { status, sessions, pendingApprovals } (未经身份验证)。如果 BROKER_TLS=true,用 curl -k https://127.0.0.1:${BROKER_PORT:-3000}/health.

安全模型

纵深防御架构

Agent Request
    |
[1] Bearer Token Auth ────── Validate token, resolve profile + scopes
    |
[2] Scope Filtering ─────── Only tools matching caller scopes are visible
    |
[3] Approval Gate ────────── Write tools may require human approval
    |
[4] SQL Keyword Validator ── Block INSERT, UPDATE, DELETE, DROP, etc.
    |
[5] Query Parser ─────────── Single statement only (no injection)
    |
[6] Prefix Validation ────── Must start with SELECT, WITH, or EXPLAIN
    |
[7] Rate Limiter ─────────── Sliding window (30 req / 60s)
    |
[8] DB User Privileges ───── SELECT-only grants (recommended)
    |
[9] Result Limits ─────────── Row count and query timeout enforcement

被阻止的SQL关键字

INSERT, UPDATE, DELETE, MERGE, UPSERT, REPLACE
CREATE, ALTER, DROP, TRUNCATE, RENAME
GRANT, REVOKE, CALL, EXEC, EXECUTE
BEGIN, COMMIT, ROLLBACK, SAVEPOINT, SET
IMPORT, EXPORT, LOAD, UNLOAD

推荐:只读数据库用户

CREATE USER MCP_READER PASSWORD "YourSecurePassword";
GRANT SELECT ON SCHEMA YOUR_SCHEMA TO MCP_READER;
ALTER USER MCP_READER DISABLE PASSWORD LIFETIME;

发展

pnpm dev      # stdio mode with hot reload
pnpm build    # compile TypeScript
pnpm start    # run production build

项目结构

sap-hana-mcp/
├── src/
│   ├── index.ts              # Entry point, transport selection
│   ├── config.ts             # Environment configuration
│   ├── hana/
│   │   └── client.ts         # HANA connection & query execution
│   ├── sap/
│   │   ├── client.ts         # SAP Service Layer HTTP client
│   │   └── tools.ts          # Write tool implementations
│   ├── security/
│   │   ├── query-validator.ts # SQL injection prevention
│   │   ├── rate-limiter.ts   # Sliding window rate limiter
│   │   └── audit.ts          # Query audit logging
│   ├── auth/
│   │   ├── config.ts         # Broker config YAML loader
│   │   ├── tokens.ts         # Bearer token validation
│   │   └── scopes.ts         # Scope resolution
│   ├── server/
│   │   ├── context.ts        # Caller context model
│   │   ├── registry.ts       # Scope-aware tool registration
│   │   ├── stdio.ts          # Dev transport
│   │   └── http.ts           # Production HTTP transport
│   ├── tools/
│   │   ├── index.ts          # Read tool definitions & handlers
│   │   ├── format.ts         # Result formatting (table, CSV)
│   │   └── output.ts         # File output management
│   └── approval/
│       ├── service.ts        # Approval gate wrapper
│       ├── store.ts          # In-memory approval store
│       └── routes.ts         # Approval REST API
├── broker.config.yaml        # Scopes, profiles, tokens, approval rules
├── .env.example              # Environment variable template
├── package.json
└── tsconfig.json

故障排除

认证失败

  • 验证用户名/密码
  • 检查用户是否存在: SELECT USER_NAME FROM SYS.USERS WHERE USER_NAME = 'MCP_READER'

连接被拒绝

  • 验证HANA是否正在运行: ssh user@host "HDB info"
  • 检查端口: 30015 例如 00, 30115 例如 01
  • 测试连接性: `telnet

`

查询验证失败

  • 只允许SELECT、WITH、EXPLAIN查询
  • 检查被阻止的关键字
  • 不允许多语句查询

HTTP 401/403

  • 确保 Authorization: Bearer 标题已设置
  • 验证令牌哈希是否在 broker.config.yaml
  • 检查令牌的配置文件是否具有所需的范围

写入工具不可用

  • SAP_BASE_URL, SAP_COMPANY_DB, SAP_USERNAME, SAP_PASSWORD
  • 确保调用者的配置文件包括写入范围

HANA系统视图参考

查看目的
SYS.SCHEMAS列出架构
SYS.TABLES列出表格
SYS.VIEWS列表视图
SYS.TABLE_COLUMNS列元数据
SYS.INDEXES索引信息
SYS.CONSTRAINTS主键/外键
M_CS_TABLES列存储表统计数据(记录计数)

许可证

麻省理工学院

目录标签

目录标签

安全控制TypeScriptClaudeSAP连接本地部署HANA读取ServiceLayer写入LLM集成

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

12

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP