VISTA Data MCP Server
Read-only MCP server for querying ClickHouse (product telemetry) and Elasticsearch (download analytics), built for Percona VISTA.
README
VISTA Data MCP Server
Read-only MCP server for querying ClickHouse (product telemetry) and Elasticsearch (download analytics). Built for Percona VISTA.
Install
curl -fsSL https://raw.githubusercontent.com/Percona-Lab/vista-data-mcp/main/install-vista-data-mcp | bash
The installer will:
- Install
uvif needed - Ask you to choose Remote (default) or Local mode
- Configure Claude Desktop and Claude Code automatically
- Install the VISTA plugin
Remote mode — connects to the shared Percona server over VPN. No credentials, no clone, no local install. Most users choose this.
Local mode — for users with their own ClickHouse or Elasticsearch credentials who want to run off-VPN (development, custom data sources).
Re-run the same command to update or change mode.
Tools
ClickHouse (telemetry)
| Tool | Description |
|---|---|
query_clickhouse |
Run any read-only SQL (SELECT, SHOW, DESCRIBE, EXPLAIN) |
ch_list_databases |
Show all accessible databases |
ch_list_tables |
Show tables in a database |
ch_describe_table |
Show column names, types, and comments |
ch_sample_data |
Get sample rows from a table |
Elasticsearch (downloads)
| Tool | Description |
|---|---|
search_elasticsearch |
Run an Elasticsearch query (JSON DSL) |
es_list_indices |
Show all indices with doc counts and sizes |
es_get_mapping |
Show field mapping (schema) for an index |
es_sample_data |
Get sample documents from an index |
All results are returned as Markdown tables. Only read-only queries are allowed.
Manual Install (alternative)
If you prefer not to use the installer:
Claude Code (CLI)
claude mcp add vista-data \
-e CLICKHOUSE_HOST=your-ch-host \
-e CLICKHOUSE_PORT=8443 \
-e CLICKHOUSE_USER=default \
-e CLICKHOUSE_PASSWORD=your-ch-password \
-e CLICKHOUSE_DATABASE=default \
-e CLICKHOUSE_SECURE=true \
-e ES_HOST=your-es-host \
-e ES_PORT=9200 \
-e ES_USER=your-es-user \
-e ES_PASSWORD=your-es-password \
-e ES_SECURE=true \
-- uvx --from git+https://github.com/Percona-Lab/vista-data-mcp vista-data-mcp
Development
git clone https://github.com/Percona-Lab/vista-data-mcp.git
cd vista-data-mcp
cp .env.example .env
# Edit .env with your credentials
uv run mcp_server.py
Safety
- Read-only: ClickHouse allows only
SELECT,SHOW,DESCRIBE,EXPLAIN. Elasticsearch uses search API only (no indexing). - Mutation blocking:
INSERT,UPDATE,DELETE,DROP,ALTER,CREATE,TRUNCATEare rejected - Row/hit limits: Results capped at 500 (configurable via
CLICKHOUSE_MAX_ROWS/ES_MAX_HITS) - Query timeout: 30 seconds default (configurable via
CLICKHOUSE_QUERY_TIMEOUT/ES_QUERY_TIMEOUT) - Identifier sanitization: Database and table names validated against injection
Environment Variables
ClickHouse
| Variable | Required | Default | Description |
|---|---|---|---|
CLICKHOUSE_HOST |
Yes* | — | ClickHouse server hostname |
CLICKHOUSE_PORT |
No | 8443 |
HTTP(S) port |
CLICKHOUSE_USER |
No | default |
Username |
CLICKHOUSE_PASSWORD |
No | "" |
Password |
CLICKHOUSE_DATABASE |
No | default |
Default database |
CLICKHOUSE_SECURE |
No | true |
Use HTTPS |
CLICKHOUSE_QUERY_TIMEOUT |
No | 30 |
Timeout in seconds |
CLICKHOUSE_MAX_ROWS |
No | 500 |
Max rows per query |
Elasticsearch
| Variable | Required | Default | Description |
|---|---|---|---|
ES_HOST |
Yes* | — | Elasticsearch hostname |
ES_PORT |
No | 9200 |
Port |
ES_USER |
No | "" |
Username (for basic auth) |
ES_PASSWORD |
No | "" |
Password |
ES_SECURE |
No | true |
Use HTTPS |
ES_VERIFY_CERTS |
No | true |
Verify SSL certificates |
ES_QUERY_TIMEOUT |
No | 30 |
Timeout in seconds |
ES_MAX_HITS |
No | 500 |
Max hits per search |
*Only required if you want to use that data source. Tools for unconfigured sources return a helpful message.
Part of the Alpine Toolkit
License
Apache 2.0
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.