Register an MCP server once; use its tools from Ask Greg, the REST API and Settings — read-only by default. ATX AnalyticsTable is a Model Context Protocol (MCP) client. An administrator registers MCP servers once: Google BigQuery and PostgreSQL through Google's MCP Toolbox for Databases, Jira and Confluence through Atlassian's Rovo MCP server or the self-hosted mcp-atlassian, and any other MCP server as needed. Their tools then become available to Ask Greg, for data analysis, when the data policy allows it; to the public REST API (/api/v1/mcp/…), for scripts and integrations; and to Settings → MCP servers, to test a server and inspect its tools.
Protocol revisions: 2025-11-25, 2025-06-18 (requested), 2025-03-26 and 2024-11-05. A server that only speaks the legacy HTTP+SSE transport can be reached through the mcp-remote bridge as a stdio server.
Requests a server sends to the client are answered: ping gets a reply, and sampling, roots and elicitation get "method not found". The client never hands control to a server.
Any MCP server can be added today without a dedicated template, from the Custom templates. GET /api/v1/mcp/templates returns the ready-made definitions, each with its parameters: name, where it goes (env, secret, header), whether it is required, default, example and meaning. Every parameter of every template is listed on the documentation page MCP parameters and settings.
The Environment box holds one KEY=value per line; each line becomes an environment variable of the MCP Toolbox process, and KEY= with nothing after it means not set. It is stored as plain text, so a password goes under Secret names (vault) and a key file is referenced by its path — never pasted. Saving a private key into the Environment box is refused, and Test checks the parameters before it starts anything.
BIGQUERY_PROJECT left empty or the JSON pasted into GOOGLE_APPLICATION_CREDENTIALS are the two mistakes that stop the server from starting. Both are reported by Test in plain words.
Every rule below is enforced in code at call time, whoever is calling. The Settings screen only mirrors it.
Health is shown in GET /api/mcp/status, GET /api/v1/health, and on /metrics as analytics_mcp_calls_total{server,outcome}, analytics_mcp_call_duration_seconds, analytics_mcp_circuit_open and analytics_mcp_calls_in_flight. Reset (admin) closes a circuit and reconnects after you fix a configuration.
Off by default. Ask Greg uses MCP only when both of these hold:
AI_ALLOW_MCP=0 turns it off for a fleet. No value turns it on. When it is on:
Example questions
More on the assistant in the Ask Greg chapter of the handbook.
The public v1 endpoints are read and call only; configuration uses the application's own /api/mcp/… routes, which are not part of the versioned v1 contract.
secrets semantics on PUT: a key with a value replaces the stored one, a key with "" removes it, and a key that is absent keeps what is stored. That way an edit form can save without retyping a password it never shows. expectedUpdatedAt gives optimistic concurrency between two administrators.
This site needs JavaScript for the full experience. Every page above is reachable without it.