Frappe MCP Server
Interact with Frappe/ERPNext sites — document CRUD, search, and whitelisted method calls
Que pouvez-vous faire avec Frappe MCP Server ?
- 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 runcommand, no Python install needed
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
frappe-mcp-serverclaude mcp add frappe-mcp-server -e 'FRAPPE_URL=<FRAPPE_URL>' -e 'FRAPPE_API_KEY=<your frappe_api_key>' -e 'FRAPPE_API_SECRET=<your frappe_api_secret>' -e 'FRAPPE_VERIFY_SSL=true' -e 'FRAPPE_TIMEOUT=30' -- uvx frappe-mcp-server==1.2.0
{
"mcpServers": {
"frappe-mcp-server": {
"command": "uvx",
"args": [
"frappe-mcp-server==1.2.0"
],
"env": {
"FRAPPE_URL": "<FRAPPE_URL>",
"FRAPPE_API_KEY": "<your frappe_api_key>",
"FRAPPE_API_SECRET": "<your frappe_api_secret>",
"FRAPPE_VERIFY_SSL": "true",
"FRAPPE_TIMEOUT": "30"
}
}
}
}
Variables d'environnement
FRAPPE_URLobligatoire Base URL of your Frappe/ERPNext site, e.g. https://your-site.erpnext.comFRAPPE_API_KEYobligatoire secret Frappe API key for token-based authenticationFRAPPE_API_SECRETobligatoire secret Frappe API secret paired with the API keyFRAPPE_VERIFY_SSLSet to 'false' to skip TLS certificate verification. Defaults to 'true'.FRAPPE_TIMEOUTPer-request timeout in seconds. Defaults to 30.
docker.io/muthanii/frappe-mcp:1.2.0claude mcp add frappe-mcp-server -e 'FRAPPE_URL=<FRAPPE_URL>' -e 'FRAPPE_API_KEY=<your frappe_api_key>' -e 'FRAPPE_API_SECRET=<your frappe_api_secret>' -e 'FRAPPE_VERIFY_SSL=true' -e 'FRAPPE_TIMEOUT=30' -- docker run -i --rm docker.io/muthanii/frappe-mcp:1.2.0
{
"mcpServers": {
"frappe-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/muthanii/frappe-mcp:1.2.0"
],
"env": {
"FRAPPE_URL": "<FRAPPE_URL>",
"FRAPPE_API_KEY": "<your frappe_api_key>",
"FRAPPE_API_SECRET": "<your frappe_api_secret>",
"FRAPPE_VERIFY_SSL": "true",
"FRAPPE_TIMEOUT": "30"
}
}
}
}
Variables d'environnement
FRAPPE_URLobligatoire Base URL of your Frappe/ERPNext site, e.g. https://your-site.erpnext.comFRAPPE_API_KEYobligatoire secret Frappe API key for token-based authenticationFRAPPE_API_SECRETobligatoire secret Frappe API secret paired with the API keyFRAPPE_VERIFY_SSLSet to 'false' to skip TLS certificate verification. Defaults to 'true'.FRAPPE_TIMEOUTPer-request timeout in seconds. Defaults to 30.
ghcr.io/muthanii/frappe-mcp:1.2.0claude mcp add frappe-mcp-server -e 'FRAPPE_URL=<FRAPPE_URL>' -e 'FRAPPE_API_KEY=<your frappe_api_key>' -e 'FRAPPE_API_SECRET=<your frappe_api_secret>' -e 'FRAPPE_VERIFY_SSL=true' -e 'FRAPPE_TIMEOUT=30' -- docker run -i --rm ghcr.io/muthanii/frappe-mcp:1.2.0
{
"mcpServers": {
"frappe-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/muthanii/frappe-mcp:1.2.0"
],
"env": {
"FRAPPE_URL": "<FRAPPE_URL>",
"FRAPPE_API_KEY": "<your frappe_api_key>",
"FRAPPE_API_SECRET": "<your frappe_api_secret>",
"FRAPPE_VERIFY_SSL": "true",
"FRAPPE_TIMEOUT": "30"
}
}
}
}
Variables d'environnement
FRAPPE_URLobligatoire Base URL of your Frappe/ERPNext site, e.g. https://your-site.erpnext.comFRAPPE_API_KEYobligatoire secret Frappe API key for token-based authenticationFRAPPE_API_SECRETobligatoire secret Frappe API secret paired with the API keyFRAPPE_VERIFY_SSLSet to 'false' to skip TLS certificate verification. Defaults to 'true'.FRAPPE_TIMEOUTPer-request timeout in seconds. Defaults to 30.
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Sommaire
Frappe MCP Server
mcp-name: io.github.muthanii/frappe_mcp
A Model Context Protocol (MCP) server for Frappe Framework. 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 |
| Docker Hub | muthanii/frappe-mcp | hub.docker.com/r/muthanii/frappe-mcp |
| GitHub Container Registry | ghcr.io/muthanii/frappe-mcp | ghcr package |
| MCP Registry | io.github.muthanii/frappe_mcp | registry API |
| Glama | — | glama.ai/mcp/servers/muthanii/frappe_mcp |
| Source | — | 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 runcommand, no Python install needed
Quick start
With uvx (no install):
FRAPPE_URL=https://your-site.com \
FRAPPE_API_KEY=your-api-key \
FRAPPE_API_SECRET=your-api-secret \
uvx frappe-mcp-server
With pip:
pip install frappe-mcp-server
frappe-mcp-server
With Docker (Docker Hub):
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):
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 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:
{
"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:
{
"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
pip install -e .
frappe-mcp
License
MIT — see LICENSE.
Questions fréquentes
Qu'est-ce que Frappe MCP Server ?
Interact with Frappe/ERPNext sites — document CRUD, search, and whitelisted method calls
Comment installer Frappe MCP Server ?
Il s'exécute sur votre machine. Dans Claude Code : claude mcp add frappe-mcp-server -e 'FRAPPE_URL=<FRAPPE_URL>' -e 'FRAPPE_API_KEY=<your frappe_api_key>' -e 'FRAPPE_API_SECRET=<your frappe_api_secret>' -e 'FRAPPE_VERIFY_SSL=true' -e 'FRAPPE_TIMEOUT=30' -- uvx frappe-mcp-server==1.2.0. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour Frappe MCP Server ?
Oui. Il attend FRAPPE_URL, FRAPPE_API_KEY, FRAPPE_API_SECRET, à renseigner dans sa configuration.
Frappe MCP Server est-il open source ?
Oui. Son code est sur GitHub sous licence MIT.
Qui maintient Frappe MCP Server ?
Il est publié par muthanii. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.