Metadata-Version: 2.4
Name: mcp-maker
Version: 0.2.0
Summary: Auto-generate MCP servers from any data source. Zero code required.
Project-URL: Homepage, https://github.com/MrAliHasan/mcp-maker
Project-URL: Documentation, https://github.com/MrAliHasan/mcp-maker#readme
Project-URL: Repository, https://github.com/MrAliHasan/mcp-maker
Project-URL: Issues, https://github.com/MrAliHasan/mcp-maker/issues
Author-email: Ali Hassan <mrali.hassan997@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: ai,claude,generator,llm,mcp,model-context-protocol,server
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Code Generators
Requires-Python: >=3.10
Requires-Dist: jinja2>=3.1.0
Requires-Dist: mcp>=1.0.0
Requires-Dist: rich>=13.0.0
Requires-Dist: typer>=0.9.0
Provides-Extra: airtable
Requires-Dist: pyairtable>=2.0.0; extra == 'airtable'
Provides-Extra: all
Requires-Dist: psycopg2-binary>=2.9.0; extra == 'all'
Requires-Dist: pyairtable>=2.0.0; extra == 'all'
Requires-Dist: pymysql>=1.1.0; extra == 'all'
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Provides-Extra: mysql
Requires-Dist: pymysql>=1.1.0; extra == 'mysql'
Provides-Extra: postgres
Requires-Dist: psycopg2-binary>=2.9.0; extra == 'postgres'
Description-Content-Type: text/markdown

# MCP-Maker

[![PyPI version](https://img.shields.io/pypi/v/mcp-maker.svg)](https://pypi.org/project/mcp-maker/)
[![Python](https://img.shields.io/pypi/pyversions/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)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/MrAliHasan/mcp-maker/blob/main/LICENSE)

### ⚒️ Auto-generate MCP servers from any data source. Zero code required.

> Point MCP-Maker at a database, API, or file directory and get a fully functional [MCP](https://modelcontextprotocol.io/) server in seconds — ready for Claude, ChatGPT, Cursor, and any MCP-compatible AI.

---

## 🚀 Quick Start

```bash
pip install mcp-maker

# From a SQLite database
mcp-maker init sqlite:///my_database.db
mcp-maker serve

# From CSV/JSON files
mcp-maker init ./data/
mcp-maker serve

# That's it! Your AI can now query your data.
```

## Why MCP-Maker?

| | FastMCP | MCP-Maker |
|---|---------|----------|
| **Approach** | You write Python tools | It generates everything |
| **Setup time** | Minutes–hours | Seconds |
| **Code required** | Yes | No |
| **Best for** | Custom logic | Data access |

MCP-Maker uses FastMCP under the hood — it's not competing, it's building on top.

---

## 📋 Commands

| Command | Description |
|---------|-------------|
| `mcp-maker init <source>` | Generate an MCP server from a data source |
| `mcp-maker inspect <source>` | Preview what would be generated (dry run) |
| `mcp-maker serve` | Run the generated MCP server |
| `mcp-maker list-connectors` | Show available connectors |

## 🔌 Connectors

### Built-in

| Connector | URI Format | Status |
|-----------|-----------|--------|
| **SQLite** | `sqlite:///path/to/db.sqlite` | ✅ Ready |
| **Files** (CSV, JSON, txt) | `./path/to/directory/` | ✅ Ready |
| **PostgreSQL** | `postgres://user:pass@host/db` | 🔜 Coming |
| **MySQL** | `mysql://user:pass@host/db` | 🔜 Coming |
| **Airtable** | `airtable://appXXXX` | 🔜 Coming |

### Want to add a connector?

Every connector is a single Python file — PRs welcome! See [CONTRIBUTING.md](CONTRIBUTING.md).

---

## 🛠️ What Gets Generated

For each table in your data source, MCP-Maker generates:

| Tool | Description |
|------|-------------|
| `list_{table}(limit, offset)` | Paginated listing |
| `get_{table}_by_{pk}(id)` | Get by primary key |
| `search_{table}(query)` | Full-text search |
| `count_{table}()` | Row count |
| `schema_{table}()` | Column names and types |

For text files, it generates `read_{name}()` resources.

---

## 💡 Example: SQLite Database

```bash
$ mcp-maker init sqlite:///chinook.db

⚒️  MCP-Maker v0.1.0

✅ Connected to sqlite source

┌──────────────────────────────────┐
│ 📊 Discovered Tables (11)       │
├──────────┬──────────┬────────────┤
│ Table    │ Columns  │ Rows       │
├──────────┼──────────┼────────────┤
│ albums   │ id, ...  │ 347        │
│ artists  │ id, ...  │ 275        │
│ tracks   │ id, ...  │ 3503       │
└──────────┴──────────┴────────────┘

🎉 Generated: mcp_server.py

$ mcp-maker serve
🚀 MCP-Maker Server running...
```

Now in Claude Desktop, add the server and ask: *"What are the top 5 artists with the most albums?"*

---

## 🔗 Use with Claude Desktop

Add the generated server to your Claude Desktop config (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "my-data": {
      "command": "python",
      "args": ["/absolute/path/to/mcp_server.py"]
    }
  }
}
```

Restart Claude Desktop and your data is accessible via natural language!

---

## 🤝 Contributing

MCP-Maker is designed for community contributions — each new **connector** is a self-contained PR.

See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed instructions and a step-by-step connector creation guide.

## 📦 Installation

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

# With PostgreSQL support
pip install mcp-maker[postgres]

# With all connectors
pip install mcp-maker[all]

# Development
pip install mcp-maker[dev]
```

## 📄 License

This project is licensed under the [MIT License](LICENSE).
