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 を実行できます。業務ドメインのメタデータを統合してエージェントの解釈を揃えつつ、データベースを正本として維持します。

主な機能

  1. 01スキーマ、テーブル、カラムの構造参照
  2. 02ガード付きのパラメータ化 SQL 実行とページング
  3. 03制約、インデックス、ビュー、DDL の確認
  4. 04DML は既定でブロックし種類ごとに許可
  5. 05任意の業務セマンティクス JSON オーバーレイ

活用シーン

  1. 01AI クライアントによる HANA テーブル構造の探索
  2. 02制限付きの読み取り専用 SQL 分析
  3. 03エージェントへのコード値とテーブル意味の共通説明の提供

MCP 対応

本プロジェクトは MCP サーバーであり、hana_execute_query や hana_describe_table など 34 のツールと、hana:/// 系のリソース URI を MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

SAP HANA MCP Server

npm version npm downloads Node.js License MCP

SAP HANA MCP Server は、SAP HANA および SAP HANA Cloud 向けに Model Context Protocol を実装しています。AI クライアントはスキーマを検出し、ガードレールを適用して SQL を実行できます。また、必要に応じて ビジネス/ドメインメタデータ を統合し、データベースを信頼できる唯一の情報源として維持したまま、エージェントがコードやテーブルを一貫して解釈できるようにします。


📚 ドキュメント

ドキュメント目的
この 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-serverPATH 上で hana-mcp-server を使う必要がある場合
クローン + 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 とコーディングエージェント
AI エージェントを利用するビジネスアプリ(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 とコードエージェント

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

Cursor/HTTP 経由のローカル IDE: start:http を実行するシェル(またはプロセスマネージャー)で HANA_* を設定し、url が http://127.0.0.1:3100/mcp の HTTP MCP エントリを追加します(Cursor のバージョンに応じて "type": "fetch" または "type": "http")。docs/local-http-mcp.md と ./scripts/start-http-mcp.sh を参照してください。

トピック詳細
エンドポイント/mcp への POST JSON-RPC(デフォルトのベース URL は 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 は、環境変数またはシークレットマネージャーで管理し、git には含めないでください。
  • サプライチェーン: CI や共有デスクトップでは、変更可能なグローバルインストールではなく、公開パッケージから npx -y を使用することを推奨します。
  • HTTP: localhost 以外で使用する場合は JWT 検証を有効にし、TLS 終端とネットワークポリシーを適用するために、サービスをリバースプロキシの背後に配置してください。

その他の注意事項:ENVIRONMENT.md §9。


🎯 機能

34 個のツールを 6 つの領域にわたって提供しており、すべて 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/CHECK 制約、インデックス、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行数、サンプル行、個別値数/NULL の統計、クエリ実行計画、オブジェクトの依存関係グラフ、パーティション情報、コストの高い上位のステートメント
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_LOGGINGtruestderr の出力を減らすため、stdio では false にすることがよくあります

*コード上のデフォルト値です。例ではファイルロギングを true に設定していることがよくあります。

制限(クエリ、リスト、リソース)
パラメーターデフォルト用途
HANA_QUERY_LIMITS_ENABLEDfalse自動的な行数/列数/セル数の上限を有効にするには、true に設定します。false の場合でも、ユーザーが指定した maxRows、offset、includeTotal は引き続き使用できます。
HANA_QUERY_TIMEOUT_MS0ステートメントのタイムアウト(ミリ秒)。0 は無効を意味します。呼び出しごとの timeout_ms で上書きできます。
HANA_MAX_RESULT_ROWS50hana_execute_query のページあたりの最大行数(制限が有効な場合に適用)
HANA_MAX_RESULT_COLS50返される行あたりの最大列数(制限が有効な場合に適用)
HANA_MAX_CELL_CHARS200セル内の長いテキストを切り詰めます(制限が有効な場合に適用)
HANA_QUERY_DEFAULT_OFFSET0デフォルトの offset(制限が有効な場合に適用)
HANA_LIST_DEFAULT_LIMIT200リストツール:デフォルトおよび最大ページサイズ
HANA_RESOURCE_LIST_MAX_ITEMS500hana:/// ペイロードに含める名前の上限
HANA_QUERY_SNAPSHOT_TTL_MS300000クエリのページネーションにおけるスナップショット ID の有効期間
HANA_CONNECTION_POOL_SIZE3HANA 接続プールのサイズ(1~20)
DML の権限

INSERT、UPDATE、DELETE はデフォルトでブロックされています。許可するには、それぞれ true に設定します。

パラメーターデフォルト用途
HANA_ALLOW_INSERTfalsehana_execute_query で INSERT を許可します
HANA_ALLOW_UPDATEfalsehana_execute_query で UPDATE を許可します
HANA_ALLOW_DELETEfalsehana_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_DATABASE_NAME は接続先のテナント(例:HQP)のままにして、HANA が想定する 3 部構成の名前(例:HSP.SAPABAP1.TABLE)を使用してください

デバッグ: 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 つ選んでください。

  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 エラーになる場合は、以前の sudo npm によって 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.

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。