MCP servers for a data analyst agent
The MCP server bundle to build an AI that queries your databases and explains the results.
3 servers · ~23 tools · Last updated June 17, 2026
TL;DR: A data agent has to see the schema before it writes a query, then run SQL safely. This bundle pairs schema-aware servers across transactional, analytical and warehouse engines so the agent answers data questions in plain English.
Bottom line: start with Postgres MCP Pro and add the rest as your needs grow. All 3 install together via the merged config below (~23 tools total).
Tool budget: this stack exposes about 23 tools. That's within Cursor's practical ~40-tool ceiling, so all servers can stay enabled together. Check your own config →
What's in the stack
Safe SQL execution with read-only mode and query analysis for Postgres.
Source ↗One-click config
All 3 servers merged into a single block — pick your client and paste.
{
"mcpServers": {
"postgres-mcp-pro": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DATABASE_URI",
"crystaldba/postgres-mcp",
"--access-mode=restricted"
],
"env": {
"DATABASE_URI": "postgresql://<user>:<password>@<host>:5432/<dbname>"
}
},
"clickhouse-mcp-server": {
"command": "uvx",
"args": [
"mcp-clickhouse"
],
"env": {
"CLICKHOUSE_HOST": "<clickhouse-host>",
"CLICKHOUSE_PORT": "8443",
"CLICKHOUSE_USER": "<clickhouse-user>",
"CLICKHOUSE_SECURE": "true",
"CLICKHOUSE_PASSWORD": "<clickhouse-password>"
}
},
"mcp-toolbox-for-databases-bigquery": {
"command": "/absolute/path/to/toolbox",
"args": [
"--prebuilt",
"bigquery",
"--stdio"
],
"env": {
"BIGQUERY_PROJECT": "<your-gcp-project-id>"
}
}
}
}Paste into ~/Library/Application Support/Claude/claude_desktop_config.json and fully restart Claude Desktop. Replace any placeholder keys/tokens with your own.
Capabilities this stack covers
FAQ
How do I keep a data agent from breaking production?
Use read-only mode and a least-privilege role, and point it at a replica. Postgres MCP Pro supports safe-SQL parsing for exactly this.
Do I need all three databases?
No — keep the server(s) matching the database you actually run; the stack just shows the common options.