Shop Analytics MCP Server
Shop Analytics MCP Server
読み取り専用の MCP サーバー(stdio 経由)です。AI エージェントがオンラインストアの SQLite データベース(customers、products、orders、order_items)に関する分析的な質問に答えられるようにしますが、データベースを変更することは一切できません。
設計の全体的な根拠(決定ログ、スキーマ、セキュリティモデル、テスト戦略)については、SPEC.md を参照してください。
要件
Node.js >= 24.10.0(下記の読み取り専用保証に使用する
node:sqliteのsetAuthorizerに必要)。node --versionで確認してください。実行時の依存関係は、
npm ciがインストールするもの以外にはありません。
Related MCP server: db-mcp
インストール → 設定 → 実行 → 接続
npm ci
npm run build
SHOP_DB_PATH=./shop.db npm startshop.dbはこのリポジトリに同梱されており、すぐに使用できます。スキーマから決定的に再生成する必要がある場合は、npm run seedを実行してください(下記の データベース を参照)。SHOP_DB_PATHはオプションです。デフォルトは、カレントワーキングディレクトリ内のshop.dbです。ソース内のどこにも絶対パスはハードコードされていません。サーバーは stdio のみ で MCP を話します。HTTP サーバーは存在せず、他に起動するものはありません。
AI エージェントを接続する
2つのクライアントの設定例が config/ にあります。
config/claude-code.mcp.json— これをプロジェクトの.mcp.jsonにコピーするか、そのshop-analyticsエントリを使ってclaude mcp add-jsonを実行します。最初にargs/envに絶対パスを設定してください。config/codex.mcp.toml—[mcp_servers.shop-analytics]テーブルを~/.codex/config.toml(またはプロジェクトスコープの.codex/config.toml)にコピーするか、ファイルの冒頭コメントにあるcodex mcp addコマンドを使用してください。
特定のエージェントを使わずにサーバーを手動で試すには、ツールに依存しない MCP Inspector を使用してください:
SHOP_DB_PATH=$(pwd)/shop.db npx @modelcontextprotocol/inspector node dist/src/index.jsツール
このサーバーは、専門化された読み取り専用ツールを正確に8つ公開します。どのツールも任意の SQL を受け取ったり実行したりすることはありません。成功したレスポンスは常に { "data": [...], "meta": {...} } であり、エラーは常に、シンプルで安全な人間が読めるメッセージ(SQL、ファイルパス、スタックトレースを含まない)になり、isError: true が付けられます。
Tool | 回答 | 主なパラメータ |
| "すべてのテーブルとその内容を表示して。" | (なし) |
| "ドイツからは何人の顧客がいますか?" |
|
| "どの国に最も多くの顧客がいますか?" |
|
| "最もお金を使ったのは誰ですか?" |
|
| "売れ筋トップ5商品は何ですか?" |
|
| "売上トップ3のカテゴリは何ですか?" |
|
| "2025年の売上はどのくらいでしたか?" |
|
| "最も多くの注文をした顧客は誰ですか?" |
|
from/to は YYYY-MM-DD 形式で、UTC の半開区間 [from, to) を定義します。from は to より厳密に前でなければなりません。すべての財務・件数メトリクスは、ステータスが cancelled の注文を除外します。ツールごとの完全な契約(正確なレスポンス形状、タイブレーク規則)は、SPEC.md §4 にあります。
安全性
3つの独立した多層防御レイヤーにより、"Delete all cancelled orders" のような敵対的なプロンプトであっても、データベースが変更されないことが保証されます。
SQLite の接続は
readOnly: trueで開かれます。開いた直後に
PRAGMA query_only = ONが設定されます。SQLite の
authorizerが、すべての書き込み/DDL アクション(INSERT、UPDATE、DELETE、DROP、ALTER、CREATE、ATTACH、DETACH、トランザクション、...)を明示的に拒否します。
その上、どのツールも生の SQL、テーブル名、カラム名を入力として受け取りません。すべてのクエリは固定されたプリペアドステートメントで、すべての入力は zod で検証されてバインドパラメータとして渡され、文字列埋め込みは行われません。
データベース
shop.db は、database/schema.sql から決定論的なシードスクリプトによって生成されます。これを再実行すると、毎回バイト単位で同じデータが生成されます(固定の PRNG シード、実時間に依存しない):
npm run seed # builds, then (re)writes ./shop.db from schema.sql + the seed scriptこのシードスクリプトはまた、生成時に、データセットに曖昧なリーダーボード(例:一意なトップ国、一意なトップ支出者)がないことと、2025年の売上がゼロでないことを検証します — SPEC.md §3 を参照してください。
開発
npm run build # tsc + copy database/schema.sql into dist/
npm run test:unit # business logic, in isolation, against fixture databases
npm run test:integration # spawns the built server over stdio via the MCP SDK client
npm test # bothこのプロジェクトは TDD で構築されました。各モジュールに対して、まず失敗するテストを書き、その後ツールごとに実装を行いました。統合テストスイートは、8つの受け入れシナリオすべてをエンドツーエンドで、SQL インジェクション形式の入力、無効なパラメータの組み合わせをカバーし、毎回の実行後にデータベースファイルの SHA-256 ハッシュが変更されていないことを検証します。
プロジェクト構造
database/ schema.sql + the deterministic seed generator
src/
db.ts read-only SQLite connection (see Safety above)
errors.ts error taxonomy, safe error formatting
validation.ts zod schemas shared across tools (dates, limits, periods)
period.ts half-open period SQL clause builder
tools/ one module per tool: pure query function + types
server.ts registers all 8 tools on the MCP server
index.ts stdio entrypoint
test/
unit/ one file per module/tool, fixture-based
integration/ spawns dist/src/index.js over stdio via the MCP SDK client
config/ example client configuration (Claude Code, Codex CLI)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
- FlicenseAqualityCmaintenanceEnables secure analytics on an SQLite database of an online store via six specialized tools covering schema, customer metrics, product sales, category revenue, period revenue, and order leaders.6
- AlicenseAqualityBmaintenanceEnables AI agents to safely interact with a SQLite shop database through schema discovery, read-only SQL queries, and pre-built analytics reports like top customers, top products, and revenue summaries.692MIT
- AlicenseAqualityBmaintenanceA read-only MCP server that lets AI agents run safe, specialized analytics over an internet shop's SQLite database, covering customers, products, orders, and revenue. It exposes no generic SQL or write tools, so agents can answer questions without modifying data.8MIT
Related MCP Connectors
Explore, query, and inspect SQLite databases with ease. List tables, preview results, and view det…
Read-only bank access for your AI agent. Connects Claude, ChatGPT, Cursor, Gemini, Codex.
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/bogdaamn/database-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server