Skip to content
MCP ThesaurusMCP Thesaurus

Frappe MCP Server

CommunityGood78/100Claim

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.

SourceWebsiteDocs

What can you do with Frappe MCP Server?

Frappe MCP Server

PyPI Python Docker Hub Docker pulls GHCR MCP Registry License

frappe_mcp 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 run command, 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.


frappe_mcp MCP server