Skip to main content
Glama
README.md
# MCP Maker - MCP Server Generator for Any Data Source

[![PyPI version](https://img.shields.io/pypi/v/mcp-maker.svg)](https://pypi.org/project/mcp-maker/)
[![Tests](https://github.com/MrAliHasan/mcp-maker/actions/workflows/tests.yml/badge.svg)](https://github.com/MrAliHasan/mcp-maker/actions/workflows/tests.yml)
[![codecov](https://codecov.io/gh/MrAliHasan/mcp-maker/branch/main/graph/badge.svg)](https://codecov.io/gh/MrAliHasan/mcp-maker)
[![Python 3.10+](https://img.shields.io/pypi/pyversions/mcp-maker.svg)](https://pypi.org/project/mcp-maker/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/MrAliHasan/mcp-maker/blob/main/LICENSE)
[![Downloads](https://img.shields.io/pypi/dm/mcp-maker.svg)](https://pypi.org/project/mcp-maker/)

[![MCPWorld Rating](https://img.shields.io/badge/MCPWorld-A%20%C2%B7%20HIGH%20QUALITY-2ea44f?style=for-the-badge&logo=checkmarx&logoColor=white)](https://www.mcpworld.com/zh/detail/e387fc9987c2a7da5b970c77ec14de99)

**Connect Claude, Cursor, ChatGPT, Grok & DeepSeek to your data in under 60 seconds.**

One command. No code. No MCP knowledge required. Generate an [MCP](https://modelcontextprotocol.io/) server for any MCP client โ€” or chat with your database right in the terminal using OpenAI, Grok, DeepSeek, or 500+ models via OpenRouter.

```bash
pip install mcp-maker
mcp-maker init postgres://user:pass@host/mydb
mcp-maker config --install    # wires it into Claude Desktop
```

Restart Claude - it can now query your database.

**Works with:**

| Databases  | Spreadsheets & SaaS | Files & APIs                |
| ---------- | ------------------- | --------------------------- |
| PostgreSQL | Airtable            | CSV / TSV / JSON / JSONL    |
| MySQL      | Notion              | Excel                       |
| SQLite     | Google Sheets       | REST APIs (OpenAPI/Swagger) |
| MongoDB    | HubSpot             |                             |
| Redis      | Supabase            |                             |

**379 tests ยท MIT licensed ยท Zero runtime dependency on MCP-Maker**

> ### ๐Ÿ† Rated **A โ€“ High Quality** by [MCPWorld](https://www.mcpworld.com/zh/detail/e387fc9987c2a7da5b970c77ec14de99)
>
> *"This MCP Server has been rigorously validated and offers comprehensive functionality and a high-quality user experience."*
>
> โœ” Availability verified   โœ” Practical tools   โœ” User-friendly installation   โœ” Detailed service docs

---

## Why not just ask Claude or Cursor to write an MCP server?

You can โ€” for one table and four tools. MCP-Maker exists for everything after that:

- **20+ correct tools per table** โ€” pagination, sorting, column selection, date-range filters, full-text search, operator filters, aggregations, distinct values, batch inserts, foreign-key joins, CSV/JSON export. Hand-prompted servers rarely get pagination and SQL quoting right, let alone all of it.
- **Schema-aware, not prompt-aware** โ€” it *inspects* your actual database: primary keys, foreign keys, views, column comments, select-field options. Nothing is hallucinated.
- **Safe by default** โ€” read-only unless you pass `--ops insert,update,delete`; per-table RBAC; identifier escaping everywhere; batch limits.
- **Auto-configures Claude Desktop** โ€” `mcp-maker config --install` and you're done.
- **A standalone file you own** โ€” the generated server has zero runtime dependency on MCP-Maker. Uninstall it; your server keeps working.
- **379 tests** stand behind the generated code โ€” every connector's output is rendered and verified in CI.

> **What is MCP?** The [Model Context Protocol](https://modelcontextprotocol.io/) is the open standard for connecting AI to external tools and data. MCP-Maker auto-generates a complete MCP server from your data source โ€” you don't write a single line of code.

---

## Quick Start

### Generate an MCP Server (for Claude, Cursor, ChatGPT)

```bash
pip install mcp-maker

# Generate from your database
mcp-maker init sqlite:///mydata.db

# Connect to Claude Desktop
mcp-maker config --install

# Restart Claude โ€” your AI can now query your data
```

### Chat directly in your terminal

No Claude needed โ€” talk to your **SQLite** database right from the terminal:

```bash
pip install "mcp-maker[chat]"

# Chat with any SQLite database (no init required)
mcp-maker chat sqlite:///mydata.db
```

> **๐Ÿ’ก `init` vs `chat`:** `init` generates a server file for AI clients (Claude, Cursor) and supports **all 13 connectors**. `chat` lets you query directly from the terminal โ€” currently supports **SQLite only** (PostgreSQL and MySQL coming soon).

```
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ ๐Ÿ’ฌ MCP-Maker Chat                โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ v0.2.7 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
๐Ÿ“Š Connected: 3 tables (users, orders, products)
๐Ÿ”ง 12 tools available (read-only)
๐Ÿง  Provider: OpenAI (gpt-4o-mini)

You > How many orders were placed this month?
๐Ÿ”ง count_orders(date_from='2026-03-01')
There were 47 orders placed this month.

You > Who is our top customer?
๐Ÿ”ง list_orders(order_by='total', order_dir='desc', limit=1)
Your top customer is Sarah Chen with $12,450 in orders.
```

**LLM Providers:** `chat` supports **OpenAI**, **Grok (xAI)**, **DeepSeek**, and **OpenRouter** (500+ models including Claude, Gemini, Llama):

```bash
# OpenAI (default)
mcp-maker chat sqlite:///data.db --api-key sk-xxx

# Grok โ€” auto-detected from the xai- key prefix
mcp-maker chat sqlite:///data.db --api-key xai-xxx --model grok-3-mini

# DeepSeek โ€” use --provider (DeepSeek keys share OpenAI's sk- prefix)
mcp-maker chat sqlite:///data.db --provider deepseek --api-key sk-xxx

# OpenRouter โ€” auto-detected from the sk-or- key prefix
mcp-maker chat sqlite:///data.db --api-key sk-or-xxx --model anthropic/claude-sonnet-4
mcp-maker chat sqlite:///data.db --api-key sk-or-xxx --model google/gemini-2.5-flash
```

Environment variables also work: `OPENAI_API_KEY`, `XAI_API_KEY`, `DEEPSEEK_API_KEY`, `OPENROUTER_API_KEY` (the variable a key comes from selects the provider).

---

## How It Works

```
Your Data Source          MCP-Maker              Output
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ SQLite       โ”‚    โ”‚                  โ”‚    โ”‚ ๐Ÿ“„ mcp_server.py        โ”‚
โ”‚ PostgreSQL   โ”‚    โ”‚                  โ”‚    โ”‚   โ†ณ Editable, yours     โ”‚
โ”‚ MySQL        โ”‚โ”€โ”€โ”€โ–ถโ”‚  mcp-maker init  โ”‚โ”€โ”€โ”€โ–ถโ”‚                         โ”‚
โ”‚ Airtable     โ”‚    โ”‚                  โ”‚    โ”‚ โš™๏ธ  _autogen_tools.py    โ”‚
โ”‚ Google Sheetsโ”‚    โ”‚  (auto-inspect)  โ”‚    โ”‚   โ†ณ list_users()        โ”‚
โ”‚ Notion       โ”‚    โ”‚  (auto-generate) โ”‚    โ”‚   โ†ณ search_orders()     โ”‚
โ”‚ CSV/JSON     โ”‚    โ”‚                  โ”‚    โ”‚   โ†ณ join_tasks_users()   โ”‚
โ”‚ +6 more      โ”‚    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                            Standalone Python file โœ…
                                            Works forever, even after
                                            uninstalling MCP-Maker
```

MCP-Maker generates a **standalone Python file**. No runtime dependency on MCP-Maker โ€” uninstall it after generation and your server keeps running.

---

## Supported Connectors (13)

| Connector                            | URI Format                                       | Auth         | Install                               |
| ------------------------------------ | ------------------------------------------------ | ------------ | ------------------------------------- |
| **SQLite**                     | `sqlite:///my.db`                              | โ€”           | Built-in                              |
| **Files** (CSV/TSV/JSON/JSONL) | `./data/` or `./users.csv`                   | โ€”           | Built-in                              |
| **PostgreSQL**                 | `postgres://user:pass@host/db`                 | DB creds     | `pip install "mcp-maker[postgres]"` |
| **MySQL**                      | `mysql://user:pass@host/db`                    | DB creds     | `pip install "mcp-maker[mysql]"`    |
| **Airtable**                   | `airtable://appXXXX`                           | API key      | `pip install "mcp-maker[airtable]"` |
| **Google Sheets**              | `gsheet://SPREADSHEET_ID`                      | Service acct | `pip install "mcp-maker[gsheets]"`  |
| **Notion**                     | `notion://DATABASE_ID`                         | Integration  | `pip install "mcp-maker[notion]"`   |
| **Excel**                      | `excel:///path.xlsx`                           | โ€”           | `pip install "mcp-maker[excel]"`    |
| **MongoDB**                    | `mongodb://โ€ฆ` or `mongodb+srv://โ€ฆ` (Atlas) | DB creds     | `pip install "mcp-maker[mongodb]"`  |
| **Supabase**                   | `supabase://PROJECT_REF`                       | API key      | `pip install "mcp-maker[supabase]"` |
| **REST API**                   | `openapi:///spec.yaml`                         | API token    | `pip install "mcp-maker[openapi]"`  |
| **Redis**                      | `redis://host:6379/0`                          | Password     | `pip install "mcp-maker[redis]"`    |
| **HubSpot**                    | `hubspot://pat=TOKEN`                          | PAT          | `pip install "mcp-maker[hubspot]"`  |

```bash
# Install all connectors at once
pip install "mcp-maker[all]"
```

---

## Generated Tools

For each table/collection, MCP-Maker generates:

| Tool                      | Description                                                                      |
| ------------------------- | -------------------------------------------------------------------------------- |
| `list_{table}`          | Paginated listing with filters, sorting, field selection, date ranges            |
| `get_{table}`           | Lookup by primary key                                                            |
| `search_{table}`        | Full-text search across string columns                                           |
| `count_{table}`         | Count with optional filters                                                      |
| `insert_{table}`        | Insert a single record*(with`--ops insert`)*                                   |
| `update_{table}`        | Update by ID*(with`--ops update`)*                                             |
| `delete_{table}`        | Delete by ID*(with`--ops delete`)*                                             |
| `batch_insert_{table}`  | Bulk insert up to 1,000 records in a transaction                                 |
| `batch_delete_{table}`  | Bulk delete by IDs                                                               |
| `aggregate_{table}`     | GROUP BY aggregations (count, sum, avg, min, max)                                |
| `distinct_{table}`      | Distinct values of any column                                                    |
| `filter_{table}`        | Operator-based filtering (eq, gt, lt, contains, โ€ฆ) for file/Excel/Mongo sources |
| `join_{from}_with_{to}` | Cross-table queries via auto-discovered foreign keys                             |
| `call_api`              | Generic escape-hatch call for any endpoint (OpenAPI sources)                     |
| `export_{table}_csv`    | Export to CSV                                                                    |
| `export_{table}_json`   | Export to JSON                                                                   |

Additional tools based on flags: `--semantic` (vector search), `--webhooks` (event hooks), `--audit` (structured logging).

---

## CLI Reference

```bash
# Core
mcp-maker init <source>                       # Generate MCP server
mcp-maker chat <source>                       # Chat with your database (NEW)
mcp-maker serve                               # Run the generated server
mcp-maker inspect <source>                    # Dry run โ€” preview what would be generated

# Configuration
mcp-maker config --install                    # Auto-configure Claude Desktop
mcp-maker env set KEY VALUE                   # Store API keys in .env
mcp-maker env list                            # List stored keys (masked)
mcp-maker list-connectors                     # Show available connectors

# Deployment
mcp-maker deploy --platform railway           # Generate Railway deployment files
mcp-maker deploy --platform render            # Render deployment
mcp-maker deploy --platform fly               # Fly.io deployment

# Generation Options
mcp-maker init <source> --ops read,insert     # Control what the LLM can do
mcp-maker init <source> --tables users,orders # Only expose specific tables
mcp-maker init <source> --async               # Async tools (aiosqlite/asyncpg)
mcp-maker init <source> --auth api-key        # Require MCP_API_KEY for access
mcp-maker init <source> --semantic            # Enable ChromaDB vector search
mcp-maker init <source> --webhooks            # Real-time event notifications
mcp-maker init <source> --audit               # Structured JSON audit logging
mcp-maker init <source> --cache 60            # Cache reads for N seconds
mcp-maker init <source> --no-ssl              # Disable SSL (local dev only)
mcp-maker init <source> --consolidate-threshold 10  # Consolidate large schemas

# Chat Options
mcp-maker chat <source> --api-key sk-xxx      # OpenAI key
mcp-maker chat <source> --api-key sk-or-xxx   # OpenRouter key (auto-detected)
mcp-maker chat <source> --model gpt-4o        # Choose model
mcp-maker chat <source> --provider openrouter # Explicit provider
mcp-maker chat <source> --tables users        # Limit to specific tables
```

---

## Architecture & Security

### Non-Destructive Generation

MCP-Maker generates two files:

- **`mcp_server.py`** โ€” Your editable entry point. Add custom tools, business logic, middleware. Never overwritten on re-generation.
- **`_autogen_mcp_server.py`** โ€” Auto-generated tools. Regenerated safely when you run `init` again.

### Security Features

| Feature                            | Description                                                                                    |
| ---------------------------------- | ---------------------------------------------------------------------------------------------- |
| **Credential Isolation**     | Connection strings and API keys loaded from`.env` โ€” never embedded in generated code        |
| **Granular Permissions**     | `--ops read` (default) prevents writes. Explicitly enable `insert`, `update`, `delete` |
| **API Key Auth**             | `--auth api-key` gates every tool call behind `MCP_API_KEY` validation                     |
| **SSL/TLS by Default**       | PostgreSQL and MySQL connections enforce encrypted transport                                   |
| **SQL Injection Prevention** | Column whitelist validation on all dynamic queries                                             |
| **Batch Limits**             | Bulk operations capped at 1,000 records to prevent resource exhaustion                         |
| **Rate Limiting**            | Built-in token bucket throttling for cloud APIs (Airtable, Notion, Sheets)                     |

### Schema Versioning

MCP-Maker generates a `.mcp-maker.lock` file tracking your schema fingerprint. On re-generation, it detects changes (added/removed tables and columns) and displays a color-coded migration diff before updating tools.

### Large Schema Handling

For schemas with 20+ tables, the `--consolidate-threshold` flag switches from per-table tools to consolidated generic tools (e.g., `query_database`), preventing LLM context window overflow.

---

## MCP Client Compatibility

The generated server works with any MCP-compatible client:

| Client                       | Setup                                         |
| ---------------------------- | --------------------------------------------- |
| **Claude Desktop**     | `mcp-maker config --install` (automatic)    |
| **Cursor**             | Add to Cursor Settings โ†’ MCP Servers         |
| **Windsurf**           | Add to`~/.codeium/windsurf/mcp_config.json` |
| **VS Code + Continue** | Add to Continue's MCP config                  |
| **ChatGPT Desktop**    | OpenAI MCP support (rolling out)              |
| **Any MCP client**     | Run`mcp-maker serve` and point to it        |

---

## Installation

```bash
# Core (SQLite + Files + CLI)
pip install mcp-maker

# With chat support (OpenAI / Grok / DeepSeek / OpenRouter)
pip install "mcp-maker[chat]"

# With specific connectors
pip install "mcp-maker[postgres]"
pip install "mcp-maker[airtable]"
pip install "mcp-maker[gsheets]"
pip install "mcp-maker[notion]"

# With async support
pip install "mcp-maker[async-sqlite]"
pip install "mcp-maker[async-postgres]"
pip install "mcp-maker[async-mysql]"

# Everything
pip install "mcp-maker[all]"
```

**Requirements:** Python 3.10+

---

## ๐Ÿ“– Documentation

| Guide                                                          | Description                                      |
| -------------------------------------------------------------- | ------------------------------------------------ |
| **[Getting Started](docs/getting-started.md)**            | Installation, first server, Claude Desktop setup |
| **[CLI &amp; Architecture Reference](docs/reference.md)** | All commands, env vars, security details         |

### Connector Guides

Each guide includes step-by-step setup, examples, and troubleshooting:

| Connector          | Guide                                             |
| ------------------ | ------------------------------------------------- |
| SQLite             | [docs/sqlite.md](docs/sqlite.md)                   |
| Files (CSV/JSON)   | [docs/files.md](docs/files.md)                     |
| PostgreSQL         | [docs/postgresql.md](docs/postgresql.md)           |
| MySQL              | [docs/mysql.md](docs/mysql.md)                     |
| Airtable           | [docs/airtable.md](docs/airtable.md)               |
| Google Sheets      | [docs/google-sheets.md](docs/google-sheets.md)     |
| Notion             | [docs/notion.md](docs/notion.md)                   |
| Excel              | [docs/excel.md](docs/excel.md)                     |
| MongoDB            | [docs/mongodb.md](docs/mongodb.md)                 |
| Supabase           | [docs/supabase.md](docs/supabase.md)               |
| REST API (OpenAPI) | [docs/openapi.md](docs/openapi.md)                 |
| Redis              | [docs/redis.md](docs/redis.md)                     |
| HubSpot            | [docs/hubspot.md](docs/hubspot.md)                 |
| Semantic Search    | [docs/semantic-search.md](docs/semantic-search.md) |

---

## Contributing

MCP-Maker is designed for community contributions โ€” each connector is a self-contained PR.

See **[CONTRIBUTING.md](CONTRIBUTING.md)** for a step-by-step guide.

```bash
git clone https://github.com/MrAliHasan/mcp-maker.git
cd mcp-maker
make install    # Set up dev environment
make check      # Run lint + tests (379 tests)
```

## Security

Found a vulnerability? Please report it privately via **[SECURITY.md](SECURITY.md)**.

## License

[MIT License](LICENSE) ยท [Code of Conduct](CODE_OF_CONDUCT.md)