QMSCloud Reporting Server
FreeNot checkedEnables querying pre-built Metabase cards for QMSCloud reporting, allowing retrieval of ticket summaries and other reports via natural language through Anything
About
Enables querying pre-built Metabase cards for QMSCloud reporting, allowing retrieval of ticket summaries and other reports via natural language through AnythingLLM.
README
Queries pre-built Metabase cards for QMSCloud and exposes them to AnythingLLM:
AnythingLLM (host) -> Ollama / Qwen -> this MCP server -> Metabase card JSON
Sibling of ../mcpreport (which talks to the QMS700i servlet). The difference:
this server has no login flow — Metabase authenticates with a static
x-api-key header, and each report is a saved Metabase card queried via
POST /api/card/<id>/query/json.
Tools
get_report(report, start_date?, end_date?)— fetch and return card rows.workspace_slugis injected by AnythingLLM (do not pass it manually).list_reports()— list available report keys.
Currently available reports: ticket_summary (card 40). Appointment, rating,
etc. will be added to the CARDS catalog in metabase-core.js.
How it works
- AnythingLLM injects
workspace_slugon every call. The slug encodes the tenant as<companyCode>or<companyCode>___<branchCode>— split on the first triple underscore___(codes themselves are hyphen-slugs, e.g.branch-001). - The server resolves the tenant dynamically from Metabase (no hardcoded
map), caching the lookups for 5 minutes:
- Company: POST card 41, slugify each
CompanyCode, match the company part →CompanyId. No match →invalid company code. - Branch (only if present): POST card 42, slugify each
BranchCode, match the branch part andCompanyId(branch codes repeat across companies) →BranchId. No match →invalid branch code. - So
demo→ DEMO company, whole-company view;demo___kl001→ DEMO + KL001 branch;qc___branch-001→ QC + Branch 1. New companies/branches work with no code change.
- Company: POST card 41, slugify each
- The model supplies
start_date/end_datefrom the user's intent. - The server POSTs the Metabase
parametersarray (start_date, end_date, company_id, and branch_id when present) to the ticket card and returns rows.
1. Install
Requires Node.js 18+ (built-in fetch).
cd /Users/koo/Desktop/Claude/Projects/QMS/metabase-mcpreport
npm install
2. Quick local test (no AnythingLLM)
The API key is not hardcoded — export it first:
export METABASE_API_KEY='mb_...your key...'
node test-ticket-summary.js # demo, month-to-date
node test-ticket-summary.js demo 2026-06-11 2026-06-30
3. Register in AnythingLLM
Add to anythingllm_mcp_servers.json (absolute paths):
{
"mcpServers": {
"qmscloud-report": {
"command": "node",
"args": ["/Users/koo/Desktop/Claude/Projects/QMS/metabase-mcpreport/server.js"],
"env": {
"METABASE_BASE_URL": "http://54.251.164.99:7777",
"METABASE_API_KEY": "mb_...PASTE_KEY..."
}
}
}
}
Windows note (same gotcha as ../mcpreport): if C:\Program Files\nodejs\node.exe
fails with ENOENT, use the 8.3 short path C:\\PROGRA~1\\nodejs\\node.exe.
4. Set the workspace system prompt
Paste the contents of system_prompt.txt into the AnythingLLM workspace system
prompt. It tells the model when/how to call get_report. Tools only fire in
@agent mode.
METABASE_API_KEY is required and is not hardcoded (kept out of source
control). Set it in the env block above. METABASE_BASE_URL defaults to
http://54.251.164.99:7777 if omitted.
Configuration reference
- Tenant resolution is dynamic (cards 41/42) — no slug map to maintain. Env
overrides:
METABASE_COMPANY_CARD_ID(41),METABASE_BRANCH_CARD_ID(42),METABASE_LOOKUP_TTL_MS(300000). Test withnode test-lookup-cards.js. CARDS(metabase-core.js) — report key → Metabase card id + params.
Notes
- Tools fire only in AnythingLLM
@agentmode. - Treat the Metabase API key as a secret; keep this config out of git.
Install QMSCloud Reporting Server in Claude Desktop, Claude Code & Cursor
unyly install qmscloud-reporting-mcp-serverInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add qmscloud-reporting-mcp-server -- npx -y github:koosoftware/metabase-mcpreportFAQ
Is QMSCloud Reporting Server MCP free?
Yes, QMSCloud Reporting Server MCP is free — one-click install via Unyly at no cost.
Does QMSCloud Reporting Server need an API key?
No, QMSCloud Reporting Server runs without API keys or environment variables.
Is QMSCloud Reporting Server hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install QMSCloud Reporting Server in Claude Desktop, Claude Code or Cursor?
Open QMSCloud Reporting Server on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare QMSCloud Reporting Server with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
