Integrations
Connect MinusX to external tools via MCP and Slack
MinusX integrates with external tools so you can query your data from wherever you work — whether that's an AI coding assistant or a Slack channel.
MCP (Model Context Protocol)
MinusX exposes an MCP-compatible server, letting AI clients like Claude, ChatGPT, and Cursor query your BI directly.
What you get
Five tools are available to any connected MCP client:
| Tool | Description |
|---|---|
| SearchDBSchema | Search tables, columns, and relationships across your connected databases (keyword or JSONPath) |
| ExecuteQuery | Run a SQL query against a connection (default LIMIT 1000, capped at 10000) |
| ListAllConnections | List all available database connections with their names and types |
| SearchFiles | Search questions and dashboards by name, description, or content; returns ranked match snippets |
| ReadFiles | Load one or more files by ID with their full content (name, path, type, content) |
How it works
- MinusX runs a single MCP endpoint at
/api/mcp - MCP clients authenticate via OAuth 2.1 with PKCE — auto-triggered on first connection, no manual tokens. The client discovers the auth server via the
.well-known/oauth-protected-resourceand.well-known/oauth-authorization-servermetadata, then runs the authorization-code flow (you're prompted to log in to MinusX and approve) - Queries execute against your configured database connections
- All MCP tool calls are logged as conversation files for audit
Setup
You only need to give your client the MinusX MCP URL — connecting directly kicks off the OAuth login automatically; there's nothing to copy or paste manually.
- Go to Settings → Integrations → MCP to find your MCP endpoint URL (and a ready-made config snippet)
- Add it to your client:
- Claude (Desktop/web): add a custom connector pointing at the MCP URL — it auto-authenticates on first use
- Cursor / Windsurf / other config-file clients: paste the snippet into the client's MCP config (e.g.
claude_desktop_config.json) and restart
- On first connection the client opens the MinusX login + consent screen; approve it and you're connected
Slack
Connect MinusX as a Slack bot so your team can ask data questions directly in channels and DMs.
What you get
- @mention the bot in any channel to ask a question
- DM the bot for private queries
- Results are delivered as formatted messages with charts uploaded as images
- The bot uses status reactions: 👀 while processing, ✅ on success, ❌ on error
How it works
- Slack sends events (mentions, DMs) to MinusX via webhook
- MinusX matches the Slack user's email to a MinusX account
- A specialized SlackAgent runs — optimized for read/query workflows
- Results are formatted for Slack (markdown → mrkdwn) and posted back to the thread
Setup
There are two installation modes:
OAuth (recommended):
- Go to Settings → Integrations → Slack
- Click Add to Slack
- Authorize the bot in your workspace
- Done — the bot appears in your workspace immediately
Manual setup:
- Create a Slack app from the manifest (available at Settings → Integrations → Slack)
- Install it to your workspace
- Copy the Bot Token and Signing Secret
- Paste them into the manual setup form in MinusX
Permissions
The Slack bot requests these scopes:
app_mentions:read,chat:write— respond to mentions and post messageschannels:history,groups:history,im:history— read conversation contextfiles:read,files:write— upload chart imagesreactions:write— status indicatorsusers:read,users:read.email— match Slack users to MinusX accounts
Webhooks
MinusX also supports configurable webhooks for delivering alerts and notifications:
- Email — send alert notifications and OTP codes
- Slack webhooks — post alert summaries to Slack channels (separate from the bot integration)
- Phone/SMS — send alert notifications via SMS
Webhooks use template variables (e.g., {{EMAIL_TO}}, {{EMAIL_SUBJECT}}) and are configured via environment variables or the admin settings.