pypi frappe-mcp-serverstdioMITupdated 1mo ago
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.
What can you do with Frappe MCP Server?
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.
Install
Add Frappe MCP Server to your client. Pick the one you use.
claude mcp add frappe-mcp-server -- uvx frappe-mcp-servercodex mcp add frappe-mcp-server -- uvx frappe-mcp-serveramp mcp add frappe-mcp-server -- uvx frappe-mcp-server{
"mcpServers": {
"frappe-mcp-server": {
"command": "uvx",
"args": [
"frappe-mcp-server"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"frappe-mcp-server": {
"command": "uvx",
"args": [
"frappe-mcp-server"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"frappe-mcp-server","command":"uvx","args":["frappe-mcp-server"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"frappe-mcp-server": {
"command": "uvx",
"args": [
"frappe-mcp-server"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"frappe-mcp-server": {
"command": "uvx",
"args": [
"frappe-mcp-server"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"frappe-mcp-server": {
"command": "uvx",
"args": [
"frappe-mcp-server"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"frappe-mcp-server": {
"type": "local",
"command": "uvx",
"args": [
"frappe-mcp-server"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"frappe-mcp-server": {
"command": {
"path": "uvx",
"args": [
"frappe-mcp-server"
]
}
}
}
}Add to your Zed `settings.json`.
uvx frappe-mcp-serverRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
7 tools
Frappe MCP Server exposes 7 tools to a connected agent.
- frappe_ping
- Check connectivity and credentials
- frappe_get_doc
- Retrieve a single document by doctype + name
- frappe_search_docs
- Search/list documents with filters
- frappe_create_doc
- Create a new document
- frappe_update_doc
- Update an existing document
- frappe_delete_doc
- Delete a document — irreversible
- frappe_run_method
- Call a whitelisted server-side method
Score
78 / 100
Good
- Documentation25/25
- Maintenance22/25
- Trust13/20
- Capability6/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 34 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 7 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 1.2.0Latest | Jul 29, 2026 |
| 1.1.2 | Jul 29, 2026 |
| 1.1.1 | Jul 29, 2026 |