MCP serverMCP servertypeExposes tools to a coding agent over MCP.See every one →What this type is →independently maintainedindependently maintainedoriginPublished by one person or a small company outside SAP. Says nothing about quality; the readings say that.See every one →

hana-mcp-server

Schema discovery and guard-railed SQL against SAP HANA and HANA Cloud, with an optional layer of business metadata so an agent reads a coded column the way the business does.

A database exposed to an agent has two failure modes: it runs something it should not, and it misreads what it gets back. This addresses both — SQL executes behind guardrails with documented hard bounds on paging and output, and a separate semantics file can merge business and domain metadata into what the agent sees, so codes and table names carry their meaning instead of being guessed at. Its own framing is careful about the boundary: the metadata layer informs the agent without replacing the database as the system of record. Published on npm, with an environment reference that documents every variable, its default and its bound.

Facts

Latestv0.3.4ReleasedLast pushLicenceMIT

Where it sits

Lives in
Provides
Agent access to your systemsBTPAgent access to your systemscapabilityGiving an AI agent access to the business data, configuration or operations of systems you run through an MCP server. [Serving your application over MCP](capability:mcp-servers) exposes your own service contract; system access reaches the systems behind it, and one implementation may do both. Development assistance belongs to [agent access to your code](capability:agent-code-access).

Who is behind it

AjeethKumar RAjeethKumar RPersonMaintains this
In the atlas: maintains 2, contributes to 3
@HatriGt
maintainer

Before choosing this

Conditions

PracticalFunctional boundary

This is the database, not an application in front of it, so what an agent can read is whatever the connection user can read — the guardrails bound the shape of a query, not the sensitivity of what it returns. Grant the connection the rights you would grant a person.

PolicySAP API Policy 4.2026a§ 1.1, 1.2, 2.2.2from Agent access to your systemsAn MCP server uses SAP APIs to supply tools, resources or data to an agent.
  • § 1.1 Published APIs. Published APIs are made available for the documented purposes identified by SAP, including integration, extensions and data exchange.
  • § 1.2 Non-Published APIs. Customer and third-party applications must not access non-published APIs except where documentation permits it or SAP otherwise authorizes it.
  • § 2.2.2 AI call sequences and data extraction. Outside SAP-endorsed architectures, data services or expressly identified pathways, the policy prohibits specified agentic API use and systematic or large-scale extraction.

MCP does not replace the API's documented-use boundary. Check that every endpoint is published for the intended use and whether the policy's AI-call or extraction provisions apply to the design.

SAP API Policy 4.2026a →

What it declares

Every artifact

Type
MCP server
Origin
Independently maintained
Runtime
Node.js

Connections2

Install

npm add hana-mcp-server

Derived from the package name. No recipe recorded; the README has the configuration.

README

quoted from HatriGt/hana-mcp-server under MIT, read
HatriGt/hana-mcp-server/README.mdOn GitHub

SAP HANA MCP Server

npm version npm downloads Node.js License MCP

SAP HANA MCP Server implements the Model Context Protocol for SAP HANA and SAP HANA Cloud. AI clients discover schema, run SQL with guardrails, and optionally merge business/domain metadata so agents interpret codes and tables consistently—without replacing your database as the system of record.


📚 Documentation

DocumentPurpose
This READMEPrerequisites, install, how to wire each client, capability summary, configuration cheat sheet, troubleshooting
CHANGELOG.mdRelease history — features and fixes by version (latest 0.3.1)
docs/README.mdIndex of /docs
docs/ENVIRONMENT.mdAuthoritative env reference: every variable, defaults, hard bounds, HTTP auth, security notes
docs/configuration-samples.mdCopy-paste: connection profiles (single-container, MDC), semantics JSON, paging pointers
docs/local-http-mcp.mdLocal HTTP MCP: npm run start:http, Cursor mcp.json, curl smoke checks

✅ Prerequisites

  • Node.js 18+
  • A SAP HANA or SAP HANA Cloud database reachable on the SQL port from the machine running the server
  • An MCP client (Claude Desktop, Claude Code, VS Code, Cursor, Cline, Windsurf, or custom HTTP client)
  • Credentials supplied via env (see Security)

📦 Installation

MethodUse when
npx + -y hana-mcp-server in MCP configDefault — no global install
npm install -g hana-mcp-serverYou need hana-mcp-server on PATH
Clone + node hana-mcp-server.jsDeveloping or pinning a local build

HTTP entrypoint (from a clone): npm run start:http — default bind 127.0.0.1:3100, path /mcp. See Hosted & HTTP.


🎯 Use cases

AudienceTransportNext step
Chat / lite usersstdioClaude Desktop
Developers (Claude Code, VS Code, Cline, Cursor, Windsurf)stdioIDEs & code agents
Business apps with AI agents (you host MCP over HTTP)HTTPHosted & HTTP

🖥️ Claude Desktop

  1. Config file path:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\claude\claude_desktop_config.json
    • Linux: ~/.config/claude/claude_desktop_config.json
  2. Register the server; put connection settings in env (see Configuration; full profile JSON in configuration-samples.md). The example below includes HANA_INSTANCE_NUMBER / HANA_DATABASE_NAME for MDC—remove them if you use a single-container database.

{
  "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"
      }
    }
  }
}

If the CLI is on PATH, you may use "command": "hana-mcp-server" and omit args.

  1. Restart Claude Desktop.

Optional: HANA MCP UI — npx hana-mcp-ui for editing envs and deploying to Claude Desktop.


💻 IDEs & code agents

stdio only; same env keys as above. Canonical example — Claude Code (~/.claude.json or project .mcp.json). The env block below includes HANA_DATABASE_NAME for MDC tenant HANA; omit it for most single-container setups.

{
  "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"
      }
    }
  }
}

Use the same command, args, and env in VS Code, Cline, Cursor, and Windsurf. After any change to env, restart the MCP server connection in the IDE.


🌐 Hosted & HTTP

Run the HTTP transport from a checkout of this repository (after npm install). The published npx hana-mcp-server path is stdio only.

npm run start:http

Cursor / local IDE over HTTP: set HANA_* in the shell (or process manager) that runs start:http, then add an HTTP MCP entry with url http://127.0.0.1:3100/mcp ("type": "fetch" or "type": "http", depending on Cursor version). See docs/local-http-mcp.md and ./scripts/start-http-mcp.sh.

TopicDetail
EndpointPOST JSON-RPC to /mcp (default base http://127.0.0.1:3100)
TuningMCP_HTTP_HOST, MCP_HTTP_PORT
HealthGET /health → 200
CORSMCP_HTTP_ALLOWED_ORIGINS — ENVIRONMENT.md §7
Optional Bearer JWT (OAuth2 / OIDC)
VariableRole
MCP_HTTP_AUTH_ENABLEDtrue → require Authorization: Bearer <token> on POST /mcp
MCP_HTTP_JWT_ISSUERIssuer / JWKS (omit on SAP BTP with bound XSUAA)
MCP_HTTP_JWT_AUDIENCEOptional expected aud
MCP_HTTP_JWT_SCOPES_REQUIREDOptional scope list

SAP BTP: bind XSUAA, MCP_HTTP_AUTH_ENABLED=true, assign role collections. Details: ENVIRONMENT.md §7.


🔒 Security

  • Secrets: HANA_PASSWORD, JWT material, and URLs with embedded credentials belong in env or a secret manager — not in git.
  • Supply chain: Prefer npx -y from the published package in CI and shared desktops instead of a mutable global install.
  • HTTP: Enable JWT validation for anything beyond localhost; put the service behind a reverse proxy for TLS termination and network policy.

Further notes: ENVIRONMENT.md §9.


🎯 Capabilities

34 tools across six areas, all verified on HANA Cloud.

AreaToolsWhat you get
Connection & confighana_show_config hana_test_connection hana_show_env_vars hana_get_session_infoVerify connectivity, inspect configuration, see current user / schema / database / version
Schema browsinghana_list_schemas hana_list_tables hana_describe_table hana_explain_table hana_search_tables hana_search_columnsPaginated schema/table lists, column metadata, cross-schema search, optional business-meaning overlay
SQL executionhana_execute_query hana_query_next_pageParameterized SQL with optional row/column/cell caps, paging (maxRows/offset/includeTotal), and snapshot continuation
Structural analysishana_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/check constraints, indexes, views with SQL definition, synonyms, effective privileges, CREATE statement DDL
Code objectshana_list_procedures hana_describe_procedure hana_list_functions hana_describe_function hana_list_calculation_views hana_list_sequencesStored procedures, scalar/table functions, SAP BW/S4 calculation views (_SYS_BIC), sequences
Data & performancehana_get_table_stats hana_get_sample_data hana_get_column_stats hana_explain_plan hana_get_dependencies hana_get_partition_info hana_get_expensive_queriesRow counts, sample rows, distinct/null stats, query execution plan, object dependency graph, partition info, top expensive statements
DML guard—INSERT / UPDATE / DELETE / TRUNCATE blocked by default; opt-in individually via HANA_ALLOW_INSERT / HANA_ALLOW_UPDATE / HANA_ALLOW_DELETE
Resourceshana:///schemas hana:///schemas/{s}/tables/{t}MCP resource URIs for schema and table enumeration; truncated flag on large payloads
Domain knowledgevia hana_explain_tableOptional JSON semantics overlay (table descriptions, column meanings, code-value maps) — configuration-samples.md

🛠️ Configuration

Variables apply to stdio (env in the client config) and HTTP (process environment). Restart after changes.

Source of truth for names, defaults, and clamp ranges: docs/ENVIRONMENT.md.
Copy-paste connection JSON (single-container / MDC): docs/configuration-samples.md#connection-profiles-env-json.

Required
ParameterDescriptionExample
HANA_HOSTHostname or IPhana.company.com
HANA_USERDatabase userDBADMIN
HANA_PASSWORDDatabase password(secret)
Connection & TLS
ParameterDefaultNotes
HANA_PORT443MDC SQL ports often 3NN13 (e.g. 31013)
HANA_SCHEMA—Default when a tool omits schema_name
HANA_CONNECTION_TYPEautoauto, single_container, mdc_system, mdc_tenant
HANA_INSTANCE_NUMBER—MDC instance id (e.g. 10)
HANA_DATABASE_NAME—Tenant name for MDC (e.g. HQQ, HQP) — session database only
HANA_SSL / HANA_ENCRYPT / HANA_VALIDATE_CERTtrueTLS and cert validation flags for the driver
Logging
ParameterDefaultNotes
LOG_LEVELinfoerror … debug
ENABLE_FILE_LOGGINGfalse*true enables file logs
ENABLE_CONSOLE_LOGGINGtrueOften false for stdio to reduce stderr noise

*Code default; examples frequently set file logging to true.

Limits (queries, lists, resources)
ParameterDefaultPurpose
HANA_QUERY_LIMITS_ENABLEDfalseSet to true to enable automatic row/column/cell caps. When false, user-provided maxRows, offset, and includeTotal still work.
HANA_QUERY_TIMEOUT_MS0Statement timeout (ms); 0 = disabled. Per-call timeout_ms overrides.
HANA_MAX_RESULT_ROWS50Max rows per hana_execute_query page (active when limits enabled)
HANA_MAX_RESULT_COLS50Max columns per row returned (active when limits enabled)
HANA_MAX_CELL_CHARS200Truncate long cell text (active when limits enabled)
HANA_QUERY_DEFAULT_OFFSET0Default offset (active when limits enabled)
HANA_LIST_DEFAULT_LIMIT200List tools: default and max page size
HANA_RESOURCE_LIST_MAX_ITEMS500Cap embedded names in hana:/// payloads
HANA_QUERY_SNAPSHOT_TTL_MS300000Snapshot id lifetime for query paging
HANA_CONNECTION_POOL_SIZE3HANA connection pool size (1–20)
DML permissions

INSERT, UPDATE, and DELETE are blocked by default. Set each to true to permit:

ParameterDefaultPurpose
HANA_ALLOW_INSERTfalsePermit INSERT via hana_execute_query
HANA_ALLOW_UPDATEfalsePermit UPDATE via hana_execute_query
HANA_ALLOW_DELETEfalsePermit DELETE and TRUNCATE via hana_execute_query
Business / domain JSON (HANA_SEMANTICS_*)
ParameterDefaultPurpose
HANA_SEMANTICS_PATH—File path to dictionary JSON (wins over URL)
HANA_SEMANTICS_URL—HTTPS URL to same format
HANA_SEMANTICS_TTL_MS60000Cache / reload behavior

Samples: configuration-samples.md.


🔧 Troubleshooting

SymptomCheck
spawn npx ENOENT / spawn hana-mcp-server ENOENT in client logsClient cannot find npx / hana-mcp-server on PATH — see Client cannot find npx below
Connection refusedHANA_HOST, HANA_PORT, network path
Auth failed / no clientPassword, user, HANA_DATABASE_NAME on tenants; use connection test tool for driver message
TLS errorsHANA_VALIDATE_CERT, trust store
Wrong or empty objectsMDC: tenant drives visibility; identical schema names can differ by tenant
SQL needs another database prefixhana_execute_query does not rewrite SQL; use the three-part names your HANA expects (e.g. HSP.SAPABAP1.TABLE) while HANA_DATABASE_NAME stays the tenant you connect to (e.g. HQP)

Debug: LOG_LEVEL=debug, ENABLE_CONSOLE_LOGGING=true, restart.

Client cannot find npx (spawn ENOENT)

GUI clients launched from the Dock or Start Menu (Claude Desktop, Cursor, VS Code, …) inherit a minimal PATH and may not see Node tooling installed under /opt/homebrew/bin, ~/.nvm/..., mise, or volta. This affects every npx-based MCP, not just this server. The error appears in MCP client logs as:

Connection failed: spawn npx ENOENT

Pick one fix:

  1. Symlink npx / node into a GUI-visible path (macOS, Homebrew):

    ln -s "$(which npx)"  /usr/local/bin/npx
    ln -s "$(which node)" /usr/local/bin/node
  2. Use absolute paths in the MCP config — most portable, no PATH dependency. Resolve paths with which node and 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": "..." }
        }
      }
    }

    Requires a one-time npm install -g hana-mcp-server.

  3. Inject PATH into the MCP env block — keeps the npx form:

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

Restart the MCP client after the change. If npx then fails with EPERM on ~/.npm/_cacache, the npm cache has root-owned files from a previous sudo npm — fix with sudo chown -R "$(whoami)" ~/.npm or set "NPM_CONFIG_CACHE": "/tmp/hana-mcp-npm-cache" in the same env block.


🖥️ 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.

MIT, read

History

Latest

v0.3.4

Fixes 2

Notes

Patch release. Fixes MCP client -32602 rejections of query tool results.

Fixed
  • hana_execute_query / hana_query_next_page outputSchema now allows maxRows: null (emitted when query limits are off and the caller omits maxRows). Clients previously rejected successful results with data/maxRows must be number.
  • SQL/tool error responses no longer attach a {message, details} structuredContent object. That shape does not match the success-only outputSchema, so clients discarded real HANA errors as missing required property 'kind'. sqlCode / sqlState remain in the text body.
  1. v0.3.3

    Fixes 1

    Notes

    Patch release. Fixes zombie server processes on stdio.

    Fixed
    • STDIO server now shuts down cleanly when the MCP client closes stdin. Previously the readline close handler kept the process alive and lifecycle-manager ran a setInterval keep-alive, so every Cursor/IDE restart or MCP refresh left an orphaned server process holding open HANA connections (leading to connection buildup and UI hangs). The keep-alive interval was removed; the stdin reader keeps the event loop active while connected and triggers a graceful shutdown on close.
  2. v0.3.2

    Fixes 1

    Notes

    Patch release. Fixes query results being reported as counts only in MCP clients.

    Fixed
    • hana_execute_query / hana_query_next_page now render the returned rows as a markdown table inside the content[].text block in addition to structuredContent. Many MCP clients only surface content[].text to the model and ignore structuredContent, which caused clients to report row counts instead of actual results even when explicitly asked to fetch them. structuredContent (rows, paging metadata, snapshotId) is unchanged.
  3. v0.3.1

    Features 2

    Notes

    Patch release. Adds 11 extended discovery tools covering DDL, column profiling, functions, calculation views, session context, cross-schema search, performance monitoring, dependency analysis, partitions, and sequences.

    Added
    • 11 extended discovery tools:

      • hana_get_ddl — DDL (CREATE statement) for any object from SYS.OBJECT_DEFINITION; supports TABLE, VIEW, PROCEDURE, FUNCTION, TRIGGER, SEQUENCE.
      • hana_get_column_stats — column statistics from SYS.COLUMN_STATISTICS (cached) or live COUNT(DISTINCT) / null-count queries (live=true).
      • hana_list_functions / hana_describe_function — scalar and table functions from SYS.FUNCTIONS / SYS.FUNCTION_PARAMETERS; prefix filter and pagination.
      • hana_list_calculation_views — SAP calculation views from _SYS_BIC; useful for BW/S4 analytics landscapes.
      • hana_get_session_info — CURRENT_USER, CURRENT_SCHEMA, database name, SYSTEM_ID, and HANA version from DUMMY and M_DATABASE.
      • hana_search_tables — cross-schema table-name search via SYS.TABLES LIKE pattern; optional schema filter; capped at 2000.
      • hana_get_expensive_queries — top N expensive statements from M_EXPENSIVE_STATEMENTS ordered by duration; requires MONITORING privilege.
      • hana_get_dependencies — object dependency graph from SYS.OBJECT_DEPENDENCIES; direction param (base, dependent, both); capped at 200.
      • hana_get_partition_info — partition metadata (type, level, record count, loaded state) from SYS.TABLE_PARTITIONS; returns partitioned=false for unpartitioned tables.
      • hana_list_sequences — sequences from SYS.SEQUENCES with start, min, max, increment, cycle, cache, and create-time; prefix filter and pagination.
    • Live integration tests — test-all-tools.js extended with coverage for all 11 new tools.


  4. v0.3.0

    Features 8, Changed 3, Fixes 5

    Notes

    Minor release. Adds 12 discovery tools, opt-in DML guard, explicit connection pool configuration, query limits opt-in flag, and fixes for HANA Cloud catalog column names discovered during live testing.

    Added
    • 12 discovery tools — comprehensive schema inspection without writing SQL:

      • hana_list_constraints — primary key, unique, and check constraints for a table.
      • hana_list_foreign_keys — referential constraints with referenced table and delete rule.
      • hana_get_table_stats — row count (live COUNT(*)), table type, column-store flag, disk size.
      • hana_get_sample_data — TOP N rows from any table.
      • hana_search_columns — find columns by pattern across all tables in a schema.
      • hana_list_views / hana_describe_view — list views and fetch their SQL definition and columns.
      • hana_list_synonyms — synonyms with target object schema, name, and type.
      • hana_list_procedures / hana_describe_procedure — list stored procedures and inspect their parameters.
      • hana_explain_plan — EXPLAIN PLAN for any SELECT/WITH query; returns the operator tree.
      • hana_list_privileges — effective privileges for the current user or a named grantee.
    • DML restrictions — INSERT, UPDATE, DELETE, and TRUNCATE are blocked by default. Opt-in per operation via HANA_ALLOW_INSERT, HANA_ALLOW_UPDATE, HANA_ALLOW_DELETE. Error returned before the statement reaches HANA.

    • Connection pool — ConnectionPool class with lazy slot creation, FIFO request queue, markForReset on connection error, and graceful drain on shutdown. Configurable via HANA_CONNECTION_POOL_SIZE (default 3, max 20).

    • HANA_QUERY_LIMITS_ENABLED — query guardrails are now opt-in (default false). Server-side row/column/cell caps apply only when set to true; user-supplied maxRows, offset, and includeTotal always work.

    • HANA_QUERY_TIMEOUT_MS — statement-level timeout for hana_execute_query; 0 = disabled. Per-call timeout_ms argument overrides.

    • Audit logger — optional per-query audit trail (HANA_AUDIT_ENABLED, HANA_AUDIT_LOG_FILE). Each entry is a JSON line with timestamp, query preview, duration, row count, and error details.

    • Live integration tests — test-all-tools.js extended with DML restriction checks (all four operations verified blocked; SELECT still passes), concurrent pool queries (3 parallel), and snapshot/next-page round-trip against real HANA.

    • Unit tests — test-connection-pool.js (9 cases: acquire, release, reuse, queue, reset, drain, stats), test-dml-restrictions.js (validators, config env parsing, query-tools gate), expanded test-config-limits.js (pool size, timeout, limits-enabled flag).

    Fixed
    • hana_list_constraints — replaced non-existent CONSTRAINT_TYPE column with IS_PRIMARY_KEY and IS_UNIQUE_KEY boolean flags (SYS.CONSTRAINTS on HANA Cloud).
    • hana_get_table_stats — RECORD_COUNT absent from SYS.TABLES on HANA Cloud; row count now via a separate COUNT(*) query.
    • hana_explain_plan — OBJECT_NAME/OBJECT_SCHEMA not present in EXPLAIN_PLAN_TABLE on HANA Cloud; corrected to TABLE_NAME/SCHEMA_NAME.
    • hana_search_columns — live test was passing pattern instead of the required column_pattern parameter name.
    • Query runner — maxRows, offset, and includeTotal were silently ignored when HANA_QUERY_LIMITS_ENABLED=false; all three now work independently of the limits flag.
    Changed
    • README — Capabilities table lists all 12 discovery tools and DML guard; Configuration table adds HANA_QUERY_LIMITS_ENABLED, HANA_QUERY_TIMEOUT_MS, HANA_CONNECTION_POOL_SIZE.
    • docs/ENVIRONMENT.md — §3 clarifies maxRows/offset/includeTotal are honoured regardless of HANA_QUERY_LIMITS_ENABLED; §3a–§3c document pool, audit logging, and DML restrictions.
    • .markdownlint.json — suppresses pre-existing project-wide MD013/MD051/MD060 warnings.

  5. v0.2.2

    Features 10, Changed 2

    Notes

    Patch release after 0.2.1: cross-tenant SYS metadata (HANA_METADATA_CATALOG_DATABASE / catalog_database), semantics for hana_explain_table, query paging (hana_query_next_page / snapshots), sensitive value redaction, expanded docs (docs/ENVIRONMENT.md, configuration samples, local HTTP guide), and broader automated test coverage.

    Added
    • hana_explain_table — column metadata from SYS.TABLE_COLUMNS merged with optional business semantics (see HANA_SEMANTICS_* below).
    • hana_query_next_page — continue large SELECT/WITH result sets using snapshotId from hana_execute_query structured output.
    • Cross-tenant / MDC catalog reads — HANA_METADATA_CATALOG_DATABASE env and per-tool optional catalog_database on hana_list_tables, hana_describe_table, hana_explain_table, hana_list_indexes, and hana_describe_index to read SYS.* from another database (e.g. HSP) while connected to a different tenant.
    • Semantics loader — HANA_SEMANTICS_PATH (local JSON) and/or HANA_SEMANTICS_URL (HTTP); table keys as DATABASE.SCHEMA.TABLE where applicable.
    • Sensitive value redaction — utilities to scrub secrets/host patterns from logs and tool-facing text where wired.
    • Documentation — docs/ENVIRONMENT.md (authoritative env reference), docs/configuration-samples.md, docs/local-http-mcp.md, and docs/README.md index; README documentation table expanded.
    • HTTP helper / tests — src/server/http-origin.js and automated coverage for origin allowlists, JWT auth (mock OIDC), semantics URL, metadata catalog, snapshots, query runner, schema/table tools, and related env validation (test-config-all-env.js, etc.).
    • Semantics samples — JSON shape and env wiring in docs/configuration-samples.md; optional local file config/finance-fi-ca-semantics.json is gitignored.
    • Scripts — scripts/start-http-mcp.sh for local HTTP MCP.
    • Live query scenarios — tests/automated/run-live-query-scenarios.js for optional HANA-backed scenario runs.
    Changed
    • hana_execute_query — structured content reports truncation, nextOffset, optional snapshotId for paging; aligns with configurable row limits / guardrails.
    • npm test — expanded chain of automated tests (config, resources URI, formatters, redaction, catalog, snapshots, semantics, query runner, HTTP, MCP inspector, etc.).

  6. v0.2.1

    Features 4

    Notes
    Added
    • Optional HTTP JWT auth — when MCP_HTTP_AUTH_ENABLED=true, validate Authorization: Bearer <JWT> via OIDC JWKS (jose). Configure MCP_HTTP_JWT_ISSUER, optional MCP_HTTP_JWT_AUDIENCE and MCP_HTTP_JWT_SCOPES_REQUIRED. On SAP BTP, issuer can be inferred from bound XSUAA (VCAP_SERVICES) when MCP_HTTP_JWT_ISSUER is omitted.
    • SAP BTP deploy artifacts — mta.yaml, xs-security.json for hosting the HTTP MCP entrypoint.
    • GET /health — lightweight JSON health response for load balancers and probes.
    • README — hosted/HTTP discoverability and configuration pointers for the above.

  7. v0.2.0

    Features 2, Changed 1, Fixes 1

    Notes
    Added
    • Streamable HTTP transport — npm run start:http / src/server/http-index.js: POST /mcp for JSON-RPC, GET on MCP path for server info; configurable MCP_HTTP_HOST, MCP_HTTP_PORT, optional MCP_HTTP_ALLOWED_ORIGINS (browser CORS).
    • MCP protocol alignment (2025-11-25) — resources, tasks, and related handler updates (see merge feature/mcp-2025-http-resources-tasks).
    Fixed
    • MDC — connection / catalog behavior fixes for multi-database-container setups (per merge description).
    Changed
    • Testing & resources — expanded automated tests and resource handling around the new transport and protocol surface.

156downloads per week, npm
Weekly downloads for hana-mcp-server26 complete calendar weeks from 2026-04-20 to 2026-10-18; the latest total is 156.20 Apr – 26 Apr: 13227 Apr – 3 May: 1314 May – 10 May: 36911 May – 17 May: 15418 May – 24 May: 56725 May – 31 May: 1611 Jun – 7 Jun: 1348 Jun – 14 Jun: 15715 Jun – 21 Jun: 13422 Jun – 28 Jun: 12229 Jun – 5 Jul: 1596 Jul – 12 Jul: 19813 Jul – 19 Jul: 85720 Jul – 26 Jul: 47527 Jul – 2 Aug: 4933 Aug – 9 Aug: 37810 Aug – 16 Aug: 37717 Aug – 23 Aug: 39424 Aug – 30 Aug: 30431 Aug – 6 Sept: 3367 Sept – 13 Sept: 17214 Sept – 20 Sept: 38721 Sept – 27 Sept: 93928 Sept – 4 Oct: 1765 Oct – 11 Oct: 19612 Oct – 18 Oct: 156
Agent access to your systems
  1. mcp-integration-suiteMCP server for the general Integration Suite functions
  2. mcp-is-tpmJava MCP server for Integration Suite Trading Partner Management
  3. calmcpMCP server with read tools over the SAP Cloud ALM APIs
  4. CostingGeek/sap-mcpPython MCP server fetching sales orders from SAP's business data graph
  5. mcp-sap-focusedrunMCP tools over SAP Focused Run's Landscape Management Database
  6. cloud-alm-itsm-mcpMCP server querying installations via the SAP Cloud ALM ITSM API
  7. sap_analytics_cloud_mcpMCP server for the SAP Analytics Cloud REST API
  8. mcp-sap-cpiMCP server for Cloud Integration runtime: messages, logs, deployment
  9. AI Core MCP ServerSAP AI Core APIs as MCP tools from one JSON config file
  10. BTP CF MCP ServerCloud Foundry V3 API on SAP BTP as MCP tools
  11. BTP MCP ServerBTP Core Services as MCP tools with in-chat dashboards
  12. btp-sap-odata-to-mcp-serverExposes S/4HANA or ECC OData services as MCP tools
  13. CI MCP ServerSAP Cloud Integration OData APIs as MCP tools
  14. odata-mcp-proxyConfig-driven proxy turning OData and REST endpoints into MCP tools
  15. sap-pi-mcp-serverMCP server for SAP PI and PO monitoring and directory metadata
  16. sap-bdc-mcp-serverMCP server managing Delta shares in SAP Business Data Cloud
  17. @mariodefe/sap-datasphere-mcpMCP server with forty-five tools across a Datasphere tenant
  18. midasol/sap-mcp-serverPython MCP server for SAP Gateway OData operations
  19. odata_mcp_goGo binary bridging any OData v2 or v4 service to MCP
  20. odata_mcpPython bridge generating MCP tools from OData v2 metadata
  21. sap-bdc-mcpMCP tooling for SAP Business Data Cloud discovery and contracts
  22. mcp-sap-datasphere-serverRead-only MCP server for exploring SAP Datasphere
  23. MCP Server for SAP BTP AdministrationSAP-hosted MCP endpoint for BTP account administration
  24. SAP LeanIX MCP ServerHosted MCP endpoint onto an SAP LeanIX instance
  25. SAP-samples/hana-cli-claude-pluginClaude Code plugin registering hana-cli's MCP server
  26. SAP-samples/hana-developer-cli-tool-exampleDeveloper-centric command line for SAP HANA
  27. cpi-mcp-serverGo MCP server over Cloud Integration packages and integration flows

Details

Sources4
sap-ai-mcp-serversdiscovered herechecked
npm registry, hana-mcp-serverversion, releases, installschecked
github.com/git+https://github.com/hatrigt/hana-mcp-server.gittree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.

Compatibility and provenance
runtimesnode
latestv0.3.4
first release
releases and cadence12, ~6d median
discovered viasap-ai-mcp-servers
first seen in the atlas
ecosystem and domainbtp, ai-and-agents
History in the atlas4
  1. The tag came in with the entry on 2026-09-10 and nothing sourced it: the README names HANA and no CAP stack. Removed with the other unsourced tags from that sweep; the entry stays on BTP, its home.
  2. The concern it answers is reaching into an SAP system from outside, split out of MCP servers on this day; the sentence on the edge is unchanged.
  3. Triaged out of data/crawled/mcp-candidates.json, the sap-ai-mcp-servers sweep. Filed on the BTP door: Datasphere, Analytics Cloud, Business Data Cloud, BW/4HANA and HANA Cloud are BTP services, and the atlas has no data-and-analytics door — an open question recorded in docs/NEIGHBOURS.md rather than settled by a placement. Written from the repository's own README.
  4. First seen.
For your agent
Ref
artifact:hatrigt-hana-mcp-server
JSON
/artifacts/hatrigt-hana-mcp-server.json
MCP
Connecting an agent