grane
Grane
AIエージェント向けの、管理された分析と制御された探索。
データベースを接続し、重要なビジネス指標を定義すれば、MCP互換の任意のエージェントに、それらの定義への管理されたアクセスを許可できます。さらに、その他すべてに対する権限付きの探索も可能です。
セルフホスト。決定論的。セマンティックファーストであり、セマンティックオンリーではない。
あなたのAIはSQLを書けます。だからといって、Revenueの意味を知っているわけではありません。 Graneは、どの数値が正式で、どの結論が探索的なものかをAIに伝えます。
Graneの機能
AIエージェントはすでにSQLを書けます。しかし、あなたのデータベースは、自社の承認されたRevenue、MRR、Active Customer、ARPUの定義を知りません。LLMにそれらを独自に作らせると、もっともらしく見えて間違った数字が生まれます。
Graneはデータベースとエージェントの間に位置します:
Claude / ChatGPT / Cursor / internal agents
|
| MCP
v
GRANE metrics, dimensions, relationships,
| deterministic compiler, validation,
| SQL join/grain safety, provenance
v
Your Postgresエージェントは推論します。Graneは真実を強制し、探索にラベルを付けます。 エージェントはセマンティックなリクエスト(「先月の国別売上」)を送信します。Graneは承認された定義を解決し、結合を計画し、SQLをコンパイルして、読み取り専用で実行します。許可された生のウェアハウス列は、SQLを書かずに
raw_dimensions/raw_metricsとしてリクエストできます。ファンアウトの安全性。 Graneはリレーションシップのカーディナリティと指標の粒度を把握しています。
one_to_many結合をまたぐメジャーは決定論的に事前集計されます。暗黙のうちに行を増やすクエリは、探索的なものであっても拒否されます。拒否は信頼の機能です。 定義されていない指標を要求すると、Graneは提案付きの構造化された
undefined_metricレスポンスを返します。ビジネスロジックを独自に作り出すことは決してありません。生の列が許可されるのは、探索が有効で、その列が除外されていない場合のみです。3つの信頼レベル。
governed(承認された定義のみ)、mixed(承認された指標と生のフィールド)、exploratory(生のウェアハウスデータ)。エージェントは探索を承認されたビジネス上の真実として提示してはなりません。LLMを内蔵しない。 Graneは決定論的なインフラストラクチャです。APIキーも、ホスト型データプレーンもなく、あなたの環境から何も出て行きません。
Related MCP server: FastAPI Database MCP Server
ChatGPT、Claude、Gemini、または任意のMCPエージェントを接続する
GraneはあなたのOpenAI、Anthropic、GoogleのAPIキーを必要としません。チャット側ではご自身のエージェントのサブスクリプションまたはAPIキーを使用します。Graneはその中間に位置し、MCP経由で管理された分析クエリに応答します。
Your agent (ChatGPT / Claude / Gemini / Cursor) — your LLM keys
|
| MCP
v
Grane — no LLM keys; metrics + SQL compiler
|
| read-only SQL
v
Your Postgres — DATABASE_URL3つのステップでセットアップ:
データベース — 読み取り専用ユーザーで
grane.ymlをPostgresに向けます。YAMLで指標を定義し、grane validateを実行します。Grane MCP —
grane serve(HTTP)を実行するか、エージェントにgrane serve --stdio(ローカルデスクトップクライアント)を起動させます。エージェント —
grane mcp connect <client>でGraneを登録し(Claude、Cursor、Gemini、VS Code、ChatGPT、Windsurf、Claude Code、または汎用)、チャットで質問します。
エージェント | 一般的なセットアップ | Graneのトランスポート |
Claude Desktop |
| stdio(ローカル)またはHTTPS(リモート) |
ChatGPT |
| HTTPSのみ — Graneを公開デプロイする |
Gemini CLI |
| stdioまたはHTTP |
Cursor / VS Code |
| stdioまたはローカルHTTP |
詳細なウォークスルー: docs/connect-an-agent.md
MCPツールリファレンス: docs/mcp-setup.md
ウェアハウス接続: docs/warehouses.md
クイックスタート(サンプルデータベースを使用)
npm install -g grane-analytics @duckdb/node-api
git clone https://github.com/Nareik33L/grane.git
cd grane
# DuckDB (no Docker): seeded shop data in example/analytics-duckdb
grane -p example/analytics-duckdb validate
grane -p example/analytics-duckdb query revenue -d country --last 30d
# Or Postgres:
docker compose -f example/docker-compose.yml up -d --wait
grane -p example/analytics validate
grane -p example/analytics query revenue --dimension country --last last_month
grane -p example/analytics query revenue --raw-dimension customers.name --last 30d
grane -p example/analytics mcp doctor --offline --skip-mcp
grane -p example/analytics mcp print-config generic
grane -p example/analytics serve
# MCP http://localhost:8080/mcpインストール
npm install -g grane-analytics
# or: npx grane-analytics --helpCLIコマンドは引き続き grane です。Node 20+ が必要です。Postgres以外のウェアハウスドライバーはCLIと一緒にインストールされません。使用するものだけを追加してください(下記の「ウェアハウス」を参照)。これにより、グローバルインストールに無関係なSDKの非推奨警告が含まれないようになります。
ウェアハウス
grane.yml の connection.type を設定します。PostgresとRedshiftはバンドルされた pg ドライバーを使用します。その他のエンジンには追加のパッケージが1つ必要です:
タイプ | 追加インストール |
| (バンドル済み) |
|
|
|
|
|
|
|
|
|
|
|
|
接続例: docs/warehouses.md
クイックスタート(ご自身のデータベース)
grane init # scaffolds grane.yml, metrics.yml, dimensions.yml, relationships.yml
export DATABASE_URL=postgres://readonly_user:...@host:5432/db
grane discover # introspect tables, columns, FKs; infer relationships
# ... define entities, metrics, dimensions, relationships ...
grane validate # the "type checker for analytics"
grane query revenue -d country --last 30d
grane serve # or: grane serve --stdio読み取り専用のデータベースユーザーを使用してください。Graneはまた、すべてのクエリをステートメントタイムアウト付きの READ ONLY トランザクションでラップしますが、最終的なセキュリティ境界はデータベースです。
指標の定義
設定はコードです。YAMLファイルはプルリクエストでレビューされ、Gitでバージョン管理され、あなたまたはコーディングエージェントによって編集されます。
# entities: the business objects metrics are counted at (their grain)
entities:
order:
table: orders
primary_key: id
# metrics.yml
metrics:
revenue:
description: Net revenue from completed orders
owner: finance
entity: order
type: sum # sum | count | count_distinct | avg | min | max | ratio
sql: ${orders.net_amount}
time_dimension: ${orders.completed_at}
unit: GBP
status: approved # experimental | approved | deprecated
synonyms: [sales, net sales]
filters:
orders.status: completed
# dimensions.yml
dimensions:
country:
entity: customer
sql: ${customers.country}
# relationships.yml — cardinality powers the join-safety checks
relationships:
orders_to_customers:
from: orders.customer_id
to: customers.id
type: many_to_onegrane validate は、すべての参照をライブスキーマと照合し、型を検証し、エージェントがクエリを実行する前に安全でないファンアウトを検出します。
MCPサーフェス
意図的に誤用しにくく設計された4つのツール:
ツール | 目的 |
| 指標、ディメンション、エンティティ、同義語、および(有効な場合)探索可能なウェアハウス列を検出します |
| Query Model v1リクエストを実行: 解決 → 検証 → コンパイル → 実行 → 来歴 |
| 実行せずにクエリをドライランする |
| 定義、信頼レベル、結合プラン、および正確なSQLを検査します |
エージェントはSQLではなく分析意図を送信します:
{
"metrics": ["revenue"],
"dimensions": ["country"],
"raw_dimensions": ["orders.discount_code"],
"filters": [{ "field": "customer_type", "operator": "=", "value": "business" }],
"time": { "from": "2026-07-01", "to": "2026-07-31", "grain": "month" },
"order": [{ "field": "revenue", "direction": "desc" }],
"limit": 100
}すべての結果には信頼レベルと来歴が含まれます:
{
"trust": "mixed",
"governed": ["revenue"],
"ungoverned": ["orders.discount_code"],
"warning": "orders.discount_code is not defined in the Grane semantic model",
"provenance": {
"query_id": "q_1faea438cc34",
"trust": "mixed",
"query_model": "v1",
"metrics": { "revenue": { "definition_version": "a82cf1d3" } },
"generated_sql": "SELECT ...",
"executed_at": "2026-08-25T12:00:00Z"
}
}ChatGPT、Claude、Gemini、Cursor、および grane mcp connect については docs/connect-an-agent.md を参照してください。MCPツールリファレンスと設定ファイル形式については docs/mcp-setup.md を参照してください。
信頼の契約
Graneはセマンティックファーストであり、セマンティックオンリーではありません。企業は、エージェントが調査できるようになる前に、ウェアハウス全体をモデル化する必要はないはずです。Revenue、MRR、Customersを定義し、ポリシーで許可されている場合はエージェントに discount_code や device_type の探索をさせます。Graneは依然としてSQLをコンパイルします。エージェントがデフォルトで無制限のSQLを取得することはありません。
| 意味 |
| すべてのフィールドが承認されたGrane定義を経由しています。ビジネス上の真実として提示します。 |
| 承認された指標と許可された生のウェアハウスフィールドの組み合わせ。有力な手がかりであり、承認された結論ではありません。 |
| 生のウェアハウスデータのみ。調査であり、管理された分析ではありません。 |
grane.yml で探索を有効にします:
exploration:
enabled: true
schemas:
- public
exclude:
- users.password_hash
- customers.ssnenabled: false に設定すると、すべての生の列が拒否されます。除外された列は決してクエリ可能になりません。Graneが使用するデータベース資格情報は読み取り専用のままにしてください。
生のフィールドが繰り返し役立つ場合:
grane usage # orders.discount_code used in 47 analyses
grane promote orders.discount_code # writes a governed dimension to dimensions.ymlGraneが trust: governed を返す場合、すべての指標とディメンションがセマンティックモデルで明示的に定義され、すべての結合が既知かつカーディナリティ安全であり、LLMによってビジネスロジックが作り出されておらず、SQLが検査可能であり、正確な定義バージョンが特定されていることを保証します。Graneが要求された意味を安全に解決できない場合は、代わりに拒否します。
Graneではないもの
ダッシュボードも、チャートビルダーも、組み込みチャットボットも、ホスト型データプレーンも、必須のLLM APIキーもありません。プレゼンテーションはエージェントが担い、分析の真実はGraneが担います。そして、どの数値が管理されたもので、どの数値が探索的なものかを常に明示します。
開発
npm install
npm run test:unit # no database needed
docker compose -f example/docker-compose.yml up -d --wait
npm test # unit + integrationV0.1はPostgresをサポートしています。コネクタインターフェースは、需要に応じて他のデータベース(MySQL、ClickHouse、DuckDB、Snowflake、...)にも開放される予定です。
ライセンス
Apache-2.0
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceProvides a read-only PostgreSQL SQL surface for LLM agents via MCP, with defense-in-depth security layers for safe database queries.3MIT
- FlicenseNot gradedqualityFmaintenanceProvides read-only SQL query access to Postgres and DuckDB databases via MCP tools, with extensive security hardening for public endpoints.1
- AlicenseNot gradedqualityCmaintenanceReadonly PostgreSQL MCP server with SQL guardrails for analytical queries and schema introspection.34MIT
- AlicenseNot gradedqualityCmaintenanceProvides a read-only PostgreSQL MCP server with schema introspection. Enforces least-privilege database roles to prevent any writes, even from malicious SQL.MIT
Related MCP Connectors
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
Read-only Yandex Metrika MCP. Query visits, sources, geo, devices and more in plain language.
Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Nareik33L/grane'
If you have feedback or need assistance with the MCP directory API, please join our Discord server