celp-mcp
v1.0.52
Published
MCP Server providing database schema and indexes
Maintainers
Readme
Celp-MCP – Database & Analytics Server for the Model-Context-Protocol
TL;DR for LLMs
Connect via MCP stdio transport, callinitialize, then use one of the four tools described below.
Tools are idempotent and expect structured JSON arguments – never place credentials inside thepromptfield.
1 • What this server does
celp-mcp exposes natural-language analytics over SQL, MongoDB and Databricks warehouses to any MCP-compatible client.
Internally it hosts a light agent that
- maps NL questions → multi-step SQL / Mongo / Spark plans,
- executes those plans locally against the database (no data leaves the machine), and
- streams back markdown reports with tables, charts and findings.
The server follows the Model-Context-Protocol (MCP) 2025-03-26 spec and ships with the standard stdio transport.
No network sockets are opened unless you start the optional remote streaming helper.
2 • Exposed MCP tools
| Name | Purpose | Speed vs Reasoning | Required params |
|------|---------|--------------------|-----------------|
| query-database | High-fidelity multi-step analysis | ⭐ Accuracy | prompt (string), optional databaseConfig, databaseConnectionId, celpApiKey |
| query-database-turbo | One-shot, single-query path | ⚡ Speed | same as above |
| get-schema | Return schema map the agent would use | – | same as above (all optional) |
| get-index-map | Return index / key map for optimisation | – | same as above (all optional) |
2.1 Tool argument schemas (abridged)
3 • Plug-and-play usage
For most users no manual JSON-RPC calls are necessary. Any modern MCP client (Claude Desktop, Cursor, @modelcontextprotocol/sdk, etc.) will:
- Spawn the server as a subprocess via the command provided in your config (see Section 5).
- Negotiate the MCP handshake automatically.
- Surface the four tools (
query-database,query-database-turbo,get-schema,get-index-map) to the language model.
All you have to supply are
- the command & args (usually
npx -y celp-mcp), and - the environment variables for your database +
CELP_API_KEY.
If you are building a custom MCP client and need low-level details (e.g. raw initialize / call_tool payloads), see the annotated code in src/index.ts or the official protocol docs at https://modelcontextprotocol.io.
4 • Essential environment variables
At minimum the process needs:
| Database | Required vars |
|----------|---------------|
| Postgres/MySQL | DATABASE_TYPE · DATABASE_HOST · DATABASE_USER · DATABASE_PASSWORD · DATABASE_NAME |
| MongoDB | Either the five above or a single MONGO_URL |
| Databricks | DATABASE_TYPE=databricks · DATABRICKS_HOST · DATABRICKS_TOKEN · DATABRICKS_HTTP_PATH · DATABRICKS_CATALOG |
And for every setup:
CELP_API_KEY– authorises the orchestration backend.
That's all an MCP client must supply.
See docs/ADVANCED.md if you want SSL flags, replica-set tuning, debug logging, etc.
5 • Claude / Cursor integration recipes
Place the JSON block below in:
- Claude Desktop →
~/Library/Application Support/Claude/claude_desktop_config.json - Cursor (VS Code) → your Settings JSON or
.vscode/mcp.json
5.1 PostgreSQL
{
"mcpServers": {
"celp-postgres": {
"command": "npx",
"args": ["-y", "celp-mcp"],
"env": {
"DATABASE_TYPE": "postgres",
"DATABASE_HOST": "127.0.0.1",
"DATABASE_PORT": "5432",
"DATABASE_USER": "readonly",
"DATABASE_PASSWORD": "supersecret",
"DATABASE_NAME": "analytics",
"PG_DISABLE_SSL": "true",
"CELP_API_KEY": "sk-..."
}
}
}
}5.2 MySQL
{
"mcpServers": {
"celp-mysql": {
"command": "npx",
"args": ["-y", "celp-mcp"],
"env": {
"DATABASE_TYPE": "mysql",
"DATABASE_HOST": "db.internal",
"DATABASE_PORT": "3306",
"DATABASE_USER": "readonly",
"DATABASE_PASSWORD": "pw",
"DATABASE_NAME": "ecommerce",
"CELP_API_KEY": "sk-..."
}
}
}
}5.3 MongoDB (connection-string form)
{
"mcpServers": {
"celp-mongo": {
"command": "npx",
"args": ["-y", "celp-mcp"],
"env": {
"DATABASE_TYPE": "mongodb",
"MONGO_URL": "mongodb://analytics_user:[email protected]:27017/marketing?authSource=admin&ssl=true",
"CELP_API_KEY": "sk-..."
}
}
}
}5.4 Databricks SQL Warehouse
{
"mcpServers": {
"celp-dbx": {
"command": "npx",
"args": ["-y", "celp-mcp"],
"env": {
"DATABASE_TYPE": "databricks",
"DATABRICKS_HOST": "adb-1234567890.2.azuredatabricks.net",
"DATABRICKS_TOKEN": "dapiXXXXXXXXXXXXXXXX",
"DATABRICKS_HTTP_PATH": "/sql/1.0/warehouses/0123456789abcdef",
"DATABRICKS_CATALOG": "main",
"CELP_API_KEY": "sk-..."
}
}
}
}After saving, restart Claude / Cursor. The server will be launched on demand and the four tools will be advertised to the language model automatically.
6 • Advanced usage & orchestration API
query-database* tools ultimately send work to an LLM-driven orchestration service at
https://celp-celp-mcp.onrender.com.
To override (e.g., when self-hosting) set STREAMING_API_URL.
The path src/index.ts::orchestrate shows the full client–socket workflow, including
schema pre-upload and incremental chunk handling. Feel free to reuse it for custom front-ends.
7 • Security & privacy
- All SQL / Mongo / Spark queries run locally.
- The orchestration service only receives generated SQL, never raw data.
- Credentials are kept in the process env, never serialized over MCP or sockets.
For production deployments we recommend:
- Provision a read-only DB user.
- Restrict network access to the DB port.
- Rotate
CELP_API_KEYregularly. - Audit agent prompts to avoid prompt-injection.
8 • Development
git clone https://github.com/CelpAI/celp-mcp.git
cd celp-mcp
pnpm install
pnpm build && pnpm start # runs built JS
pnpm dev # ts-node + watchThe main entry point is src/index.ts.
Tool definitions live in src/initTools.ts.
9 • License
Released under the MIT License – see LICENSE for full text.
