Frappe MCP Server
Interact with Frappe/ERPNext sites — document CRUD, search, and whitelisted method calls
Open source Open in the app JSON README (API)
About
Interact with Frappe/ERPNext sites — document CRUD, search, and whitelisted method calls
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- muthanii
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 1.2.0
- Last push
- 2026-07-29T12:53:43Z
- Repository state
- ativo
- Language
- Python
- License
- MIT
- Added
- 2026-08-29 04:00:52
- Updated
- 2026-08-29 04:00:52
- Origin id
io.github.muthanii/frappe_mcp
README
# Frappe MCP Server
[](https://pypi.org/project/frappe-mcp-server/)
[](https://pypi.org/project/frappe-mcp-server/)
[](https://hub.docker.com/r/muthanii/frappe-mcp)
[](https://hub.docker.com/r/muthanii/frappe-mcp)
[](https://github.com/muthanii/frappe_mcp/pkgs/container/frappe-mcp)
[](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.muthanii/frappe_mcp)
[](LICENSE)
[](https://glama.ai/mcp/servers/muthanii/frappe_mcp)
```
mcp-name: io.github.muthanii/frappe_mcp
```
A **Model Context Protocol (MCP) server** for [Frappe Framework](https://frappeframework.com).
Connect Claude Desktop, VS Code Copilot, and other MCP clients to any Frappe/ERPNext site
via its REST API.
## Where to get it
| Distribution | Reference | Page |
|---|---|---|
| **PyPI** | `frappe-mcp-server` | [pypi.org/project/frappe-mcp-server](https://pypi.org/project/frappe-mcp-server/) |
| **Docker Hub** | `muthanii/frappe-mcp` | [hub.docker.com/r/muthanii/frappe-mcp](https://hub.docker.com/r/muthanii/frappe-mcp) |
| **GitHub Container Registry** | `ghcr.io/muthanii/frappe-mcp` | [ghcr package](https://github.com/muthanii/frappe_mcp/pkgs/container/frappe-mcp) |
| **MCP Registry** | `io.github.muthanii/frappe_mcp` | [registry API](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.muthanii/frappe_mcp) |
| **Glama** | — | [glama.ai/mcp/servers/muthanii/frappe_mcp](https://glama.ai/mcp/servers/muthanii/frappe_mcp) |
| **Source** | — | [github.com/muthanii/frappe_mcp](https://github.com/muthanii/frappe_mcp) |
## Features
- **Document CRUD** — get, create, update, delete Frappe doctypes
- **Search** — full-text and filtered document search
- **Remote method calls** — invoke any server-side Python method
- **Authentication** — API key + secret (token-based auth)
- **Docker-first** — single `docker run` command, no Python install needed
## Quick start
**With `uvx` (no install):**
```bash
FRAPPE_URL=https://your-site.com \
FRAPPE_API_KEY=your-api-key \
FRAPPE_API_SECRET=your-api-secret \
uvx frappe-mcp-server
```
**With `pip`:**
```bash
pip install frappe-mcp-server
frappe-mcp-server
```
**With Docker (Docker Hub):**
```bash
docker run -i --rm \
-e FRAPPE_URL=https://your-site.com \
-e FRAPPE_API_KEY=your-api-key \
-e FRAPPE_API_SECRET=your-api-secret \
muthanii/frappe-mcp
```
**With Docker (GHCR):**
```bash
docker run -i --rm \
-e FRAPPE_URL=https://your-site.com \
-e FRAPPE_API_KEY=your-api-key \
-e FRAPPE_API_SECRET=your-api-secret \
ghcr.io/muthanii/frappe-mcp
```
## Available tools
Every tool ships MCP [tool annotations](https://modelcontextprotocol.io/specification/server/tools) and a declared `outputSchema`, so a client can tell read tools from destructive ones before calling them.
| Tool | Description | Access | Destructive | Idempotent |
|------|-------------|--------|-------------|------------|
| `frappe_ping` | Check connectivity and credentials | read-only | no | yes |
| `frappe_get_doc` | Retrieve a single document by doctype + name | read-only | no | yes |
| `frappe_search_docs` | Search/list documents with filters | read-only | no | yes |
| `frappe_create_doc` | Create a new document | write | no | no |
| `frappe_update_doc` | Update an existing document | write | yes | yes |
| `frappe_delete_doc` | Delete a document — irreversible | write | yes | no |
| `frappe_run_method` | Call a whitelisted server-side method | write | yes | no |
`frappe_run_method` is marked destructive because its effect is determined entirely by the method you name.
## Configuration
| Environment variable | Required | Description |
|----------------------|----------|-------------|
| `FRAPPE_URL` | Yes | Base URL of your Frappe site (e.g. `https://erp.example.com`) |
| `FRAPPE_API_KEY` | Yes | Frappe API key |
| `FRAPPE_API_SECRET` | Yes | Frappe API secret |
| `FRAPPE_VERIFY_SSL` | No | Set to `false` to skip TLS verification (default: `true`) |
| `FRAPPE_TIMEOUT` | No | Request timeout in seconds (default: `30`) |
## MCP client config
Add this to your `claude_desktop_config.json` or Copilot config.
**Via `uvx`:**
```json
{
"mcpServers": {
"frappe": {
"command": "uvx",
"args": ["frappe-mcp-server"],
"env": {
"FRAPPE_URL": "https://your-site.com",
"FRAPPE_API_KEY": "your-api-key",
"FRAPPE_API_SECRET": "your-api-secret"
}
}
}
}
```
**Via Docker:**
```json
{
"mcpServers": {
"frappe": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "FRAPPE_URL",
"-e", "FRAPPE_API_KEY",
"-e", "FRAPPE_API_SECRET",
"muthanii/frappe-mcp"
],
"env": {
"FRAPPE_URL": "https://your-site.com",
"FRAPPE_API_KEY": "your-api-key",
"FRAPPE_API_SECRET": "your-api-secret"
}
}
}
}
```
## Local development
```bash
pip install -e .
frappe-mcp
```
## License
MIT — see [LICENSE](LICENSE).
---
[](https://glama.ai/mcp/servers/muthanii/frappe_mcp)