autotask-dwh-mcp-server
Provides read-only access to the Datto Autotask Report Data Warehouse, enabling schema exploration and read-only SQL queries over Autotask PSA views for financial, contract, project, and history reporting.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@autotask-dwh-mcp-serverShow total billed amount per customer for Q1 2025"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
autotask-dwh-mcp-server
A read-only Model Context Protocol server for the Autotask Report Data Warehouse (Microsoft SQL Server, views only). It lets a model explore the warehouse schema and run read-only SQL, without touching the Autotask REST API.
It runs as a STDIO subprocess inside our MCPHub
instance and is launched via npx -y github:SSIG-IT/autotask-dwh-mcp-server, exactly like
SSIG-IT/3cx-mcp-server.
What is the Autotask Data Warehouse?
The Autotask Report Data Warehouse is a nightly-refreshed, read-only copy of Autotask PSA data,
exposed as SQL Server views (all named wh_*). It is strong for financial, contract,
project and history reporting across all customers at once, without loading the live Autotask
API. For live ticket detail and any write, keep using the existing Autotask REST MCP — the two
complement each other.
This server is read-only by construction (see Two-layer read-only).
Related MCP server: VAST DB MCP Server
Prerequisites
Node.js 20 LTS or newer (built and tested on Node 22). See the
enginesfield inpackage.json.Network path to the warehouse from an IP that Datto has allowlisted — see the hard requirement below.
Install & build
npm install
npm run build # tsc -> dist/
node dist/index.js # starts the STDIO servernpm install runs the prepare script, so dist/ is built automatically (this is also how
npx -y github:SSIG-IT/autotask-dwh-mcp-server builds itself on the consumer's machine).
Tools
All tools are annotated readOnlyHint: true, destructiveHint: false, idempotentHint: true,
openWorldHint: false, and expose an outputSchema (structured output).
Tool | Purpose |
| List warehouse views (all |
| Columns + types for one view. Name comes from |
| Execute one read-only |
| Warehouse freshness from |
Resource warehouse://guide
Domain notes for writing correct queries (non-obvious names, the measured ticket-vs-task
rule, the time join key, financial views, UI→DWH terminology). Referenced from the query
tool description. A model should read it before writing queries.
Key fact it carries: there is no wh_ticket view. Tickets and project tasks share
wh_task, distinguished by project_id IS NULL for tickets (verified against live data
2026-08-30).
Environment variables
Credentials come only from the environment — nothing about the target server is hardcoded,
and the password / connection string are never logged. Copy .env.example to a
local .env for testing (that .env is gitignored).
Variable | Required | Default | Meaning |
| yes (for DB access) | — | SQL Server host, e.g. |
| no |
| TCP port |
| yes (for DB access) | — | Database, e.g. |
| yes (for DB access) | — | Read-only login |
| yes (for DB access) | — | Password |
| no |
| Per-query timeout, seconds |
| no |
| Hard ceiling on returned rows (default tuned for aggregates; override per instance) |
| no |
|
|
| no |
| Port for the optional HTTP transport |
Without MSSQL_HOST/MSSQL_DATABASE/MSSQL_USER/MSSQL_PASSWORD the server still starts and
answers list_views / describe_view from the bundled schema; query / last_load return a
clear "unreachable" message naming the missing variables.
Local testing with the MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.jsThe Inspector shows the four tools (with descriptions and output schemas) and the
warehouse://guide resource. On a dev machine the schema tools work from the bundled snapshot;
query / last_load return the friendly unreachable message.
To point it at the real DB from an allowlisted host, use Node's native env-file loader:
node --env-file=.env dist/index.js
# or, with the Inspector:
npx @modelcontextprotocol/inspector node --env-file=.env dist/index.jsHard requirement: IP allowlist
The warehouse only accepts connections from static IP addresses allowlisted at Datto (max three). Every query times out unless the connecting host's IP is on that allowlist, regardless of the code. This was verified: on 2026-08-30 the MCPHub VPS egress IP connected in ~179 ms, so no extra support case is needed for it. From a non-allowlisted machine (e.g. the Windows dev box) every DB connection times out by design — that is expected, not a bug.
Daily reload window
The warehouse is fully reloaded once per day (global customer: ~16:00 ET plus up to four hours).
During the reload, running queries are aborted and connections are dropped. The server retries
once on a dropped connection and otherwise returns
Data Warehouse unreachable or reloading (daily refresh window); retry shortly.
Two-layer read-only
The Datto-provided read-only login.
A statement guard (
src/guard.ts): it strips comments and string/identifier literals first, then requires a single statement whose first keyword isSELECTorWITH, and rejectsINSERT/UPDATE/DELETE/MERGE/DROP/ALTER/CREATE/TRUNCATE/EXEC/EXECUTE/GRANT/REVOKE/INTOandsp_/xp_on word boundaries, plus any statement-separating semicolon.
Deployment
See DEPLOYMENT.md for MCPHub, a generic STDIO client (Claude Desktop and similar), and the Streamable HTTP mode. Real passwords never appear there — the production value comes from the MCPHub config / MyGlue.
License
MIT — see LICENSE.
NOTES — what was verified against which source, and deliberate deviations
Per the build brief, the blueprint was checked against the current MCP spec, SDK and driver before coding. Nothing collided with a measured fact in the handover Addendum (ticket/task rule, 381-view schema, reachability), so no build-stop was required.
Verified live (2026-08-31):
MCP spec version
2026-07-28is current (from https://modelcontextprotocol.io/sitemap.xml). The live Tools spec page (https://modelcontextprotocol.io/specification/2026-07-28/server/tools) confirms toolannotations(readOnlyHint,destructiveHint,idempotentHint,openWorldHint),outputSchema+structuredContent, resources, and thestdio/ Streamable HTTP transports. Backward-compat guidance (also emit the JSON as a text block) is followed: every tool returns both a text block andstructuredContent.SDK API was verified against the installed package, not from memory:
McpServer,registerTool({ inputSchema, outputSchema, annotations }, cb),registerResource,StdioServerTransport,StreamableHTTPServerTransportall resolve from@modelcontextprotocol/sdk/server/*. The legacyserver.tool()/setRequestHandlerare not used. SDK README: https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.mdnode-mssql 12.7.0 (matches the client the Addendum measured with).
encrypt: true,trustServerCertificate: true,connectionTimeout,requestTimeout, andpoolconfirmed. The runtimesql.valueHandlermap was confirmed in the installed source.
Deliberate deviations from "newest", each justified:
SDK: pinned v1
@modelcontextprotocol/sdk@1.30.0, not the new v2 (@modelcontextprotocol/server@2.0.0, released with the 2026-07-28 spec). The blueprint targets exactly the v1McpServer+registerToolAPI; MCPHub and the sibling3cx-mcp-serverpackaging assume v1; v1.x is still maintained and already provides everything required (Zod input and output schemas, annotations,structuredContent, stdio + Streamable HTTP). For a server that must run unattended behind MCPHub, the proven line beats a sub-one-cycle-old major. The wire protocol version is negotiated at runtime, so this does not forfeit any 2026-07-28 tool feature. Revisit once v2 has soaked and MCPHub is confirmed against it.TypeScript
^5.7, not the latest7.0.2(the native-port compiler). Emitted JS is identical; the mature ESM/NodeNext toolchain removes needless risk from the first clean build. Trivial to bump later.Decimal fidelity via
sql.valueHandlermappingdecimal/numeric→String(Addendum correction 5). Caveat: the handler receives the value after tedious has parsed the TDS bytes into a JS number, so a value exceeding double precision (> ~15 significant digits) could already be rounded before stringify. For the money-scale columns in this warehouse this is not a practical concern; there is no lossless decimal-as-string path in the current node-mssql/tedious without dropping to raw TDS.max_rowsenforced as a hard JS cap after fetch (Addendum correction 2), withMSSQL_MAX_ROWSas the ceiling the per-callmax_rowscan only lower.TOPinjection is best-effort only and is skipped forWITH/CTEs.
Also applied from the Addendum: robust SQL guard (correction 1), lazy/crash-safe connect
(correction 3), stdout discipline — logs to stderr only (correction 4), parameterized schema
lookups (correction 6), and the corrected time join (wh_time_item.time_item_id = wh_time_subitem.time_item_id; no task_id on the subitem) in the grounding text (correction 7).
Open until the VPS deploy (needs real DB access; do not run from the dev box):
last_load smoke test, and a decimal probe
SELECT TOP 3 contract_id, total_amount, our_cost, rate FROM wh_posted_overall.
The project_id IS NULL ticket/task rule is already measured and embedded.
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 gradedqualityCmaintenanceProvides read-only access to Microsoft SQL Server databases using Windows Authentication, enabling AI assistants to safely explore schemas and query data with built-in security controls.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to securely query VAST Data databases for schema, metadata, and sample data via read-only SQL and MCP resources.MIT
- AlicenseAqualityDmaintenanceEnables AI agents to execute SQL queries and explore Snowflake databases using natural language, with schema discovery, table inspection, and readonly mode.11741MIT
- AlicenseNot gradedqualityBmaintenanceEnables secure, read-only access to Amazon Redshift data warehouses for AI assistants, allowing schema inspection, query execution, and data understanding.401MIT
Related MCP Connectors
Read-only SaaS business intelligence from GA4, Stripe, and Google Search Console.
Provide real-time data querying and visualization by integrating Tako with your agents. Generate o…
Run SOQL queries to explore and retrieve Salesforce data. Access accounts, contacts, opportunities…
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/SSIG-IT/autotask-dwh-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server