{
  "markdown": "# Frappe MCP Server\n\n[![PyPI](https://img.shields.io/pypi/v/frappe-mcp-server.svg?logo=pypi&logoColor=white)](https://pypi.org/project/frappe-mcp-server/)\n[![Python](https://img.shields.io/badge/python-3.10%2B-blue.svg?logo=python&logoColor=white)](https://pypi.org/project/frappe-mcp-server/)\n[![Docker Hub](https://img.shields.io/docker/v/muthanii/frappe-mcp?sort=semver&logo=docker&logoColor=white&label=docker%20hub)](https://hub.docker.com/r/muthanii/frappe-mcp)\n[![Docker pulls](https://img.shields.io/docker/pulls/muthanii/frappe-mcp.svg?logo=docker&logoColor=white)](https://hub.docker.com/r/muthanii/frappe-mcp)\n[![GHCR](https://img.shields.io/badge/ghcr.io-frappe--mcp-181717?logo=github&logoColor=white)](https://github.com/muthanii/frappe_mcp/pkgs/container/frappe-mcp)\n[![MCP Registry](https://img.shields.io/badge/MCP%20registry-io.github.muthanii%2Ffrappe__mcp-6E56CF)](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.muthanii/frappe_mcp)\n[![License](https://img.shields.io/github/license/muthanii/frappe_mcp.svg)](LICENSE)\n\n[![frappe_mcp MCP server](https://glama.ai/mcp/servers/muthanii/frappe_mcp/badges/score.svg)](https://glama.ai/mcp/servers/muthanii/frappe_mcp)\n\n```\nmcp-name: io.github.muthanii/frappe_mcp\n```\n\nA **Model Context Protocol (MCP) server** for [Frappe Framework](https://frappeframework.com).\nConnect Claude Desktop, VS Code Copilot, and other MCP clients to any Frappe/ERPNext site\nvia its REST API.\n\n## Where to get it\n\n| Distribution | Reference | Page |\n|---|---|---|\n| **PyPI** | `frappe-mcp-server` | [pypi.org/project/frappe-mcp-server](https://pypi.org/project/frappe-mcp-server/) |\n| **Docker Hub** | `muthanii/frappe-mcp` | [hub.docker.com/r/muthanii/frappe-mcp](https://hub.docker.com/r/muthanii/frappe-mcp) |\n| **GitHub Container Registry** | `ghcr.io/muthanii/frappe-mcp` | [ghcr package](https://github.com/muthanii/frappe_mcp/pkgs/container/frappe-mcp) |\n| **MCP Registry** | `io.github.muthanii/frappe_mcp` | [registry API](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.muthanii/frappe_mcp) |\n| **Glama** | — | [glama.ai/mcp/servers/muthanii/frappe_mcp](https://glama.ai/mcp/servers/muthanii/frappe_mcp) |\n| **Source** | — | [github.com/muthanii/frappe_mcp](https://github.com/muthanii/frappe_mcp) |\n\n## Features\n\n- **Document CRUD** — get, create, update, delete Frappe doctypes\n- **Search** — full-text and filtered document search\n- **Remote method calls** — invoke any server-side Python method\n- **Authentication** — API key + secret (token-based auth)\n- **Docker-first** — single `docker run` command, no Python install needed\n\n## Quick start\n\n**With `uvx` (no install):**\n\n```bash\nFRAPPE_URL=https://your-site.com \\\nFRAPPE_API_KEY=your-api-key \\\nFRAPPE_API_SECRET=your-api-secret \\\n  uvx frappe-mcp-server\n```\n\n**With `pip`:**\n\n```bash\npip install frappe-mcp-server\nfrappe-mcp-server\n```\n\n**With Docker (Docker Hub):**\n\n```bash\ndocker run -i --rm \\\n  -e FRAPPE_URL=https://your-site.com \\\n  -e FRAPPE_API_KEY=your-api-key \\\n  -e FRAPPE_API_SECRET=your-api-secret \\\n  muthanii/frappe-mcp\n```\n\n**With Docker (GHCR):**\n\n```bash\ndocker run -i --rm \\\n  -e FRAPPE_URL=https://your-site.com \\\n  -e FRAPPE_API_KEY=your-api-key \\\n  -e FRAPPE_API_SECRET=your-api-secret \\\n  ghcr.io/muthanii/frappe-mcp\n```\n\n## Available tools\n\nEvery 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.\n\n| Tool | Description | Access | Destructive | Idempotent |\n|------|-------------|--------|-------------|------------|\n| `frappe_ping` | Check connectivity and credentials | read-only | no | yes |\n| `frappe_get_doc` | Retrieve a single document by doctype + name | read-only | no | yes |\n| `frappe_search_docs` | Search/list documents with filters | read-only | no | yes |\n| `frappe_create_doc` | Create a new document | write | no | no |\n| `frappe_update_doc` | Update an existing document | write | yes | yes |\n| `frappe_delete_doc` | Delete a document — irreversible | write | yes | no |\n| `frappe_run_method` | Call a whitelisted server-side method | write | yes | no |\n\n`frappe_run_method` is marked destructive because its effect is determined entirely by the method you name.\n\n## Configuration\n\n| Environment variable | Required | Description |\n|----------------------|----------|-------------|\n| `FRAPPE_URL` | Yes | Base URL of your Frappe site (e.g. `https://erp.example.com`) |\n| `FRAPPE_API_KEY` | Yes | Frappe API key |\n| `FRAPPE_API_SECRET` | Yes | Frappe API secret |\n| `FRAPPE_VERIFY_SSL` | No | Set to `false` to skip TLS verification (default: `true`) |\n| `FRAPPE_TIMEOUT` | No | Request timeout in seconds (default: `30`) |\n\n## MCP client config\n\nAdd this to your `claude_desktop_config.json` or Copilot config.\n\n**Via `uvx`:**\n\n```json\n{\n  \"mcpServers\": {\n    \"frappe\": {\n      \"command\": \"uvx\",\n      \"args\": [\"frappe-mcp-server\"],\n      \"env\": {\n        \"FRAPPE_URL\": \"https://your-site.com\",\n        \"FRAPPE_API_KEY\": \"your-api-key\",\n        \"FRAPPE_API_SECRET\": \"your-api-secret\"\n      }\n    }\n  }\n}\n```\n\n**Via Docker:**\n\n```json\n{\n  \"mcpServers\": {\n    \"frappe\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\", \"-i\", \"--rm\",\n        \"-e\", \"FRAPPE_URL\",\n        \"-e\", \"FRAPPE_API_KEY\",\n        \"-e\", \"FRAPPE_API_SECRET\",\n        \"muthanii/frappe-mcp\"\n      ],\n      \"env\": {\n        \"FRAPPE_URL\": \"https://your-site.com\",\n        \"FRAPPE_API_KEY\": \"your-api-key\",\n        \"FRAPPE_API_SECRET\": \"your-api-secret\"\n      }\n    }\n  }\n}\n```\n\n## Local development\n\n```bash\npip install -e .\nfrappe-mcp\n```\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\n---\n\n[![frappe_mcp MCP server](https://glama.ai/mcp/servers/muthanii/frappe_mcp/badges/card.svg)](https://glama.ai/mcp/servers/muthanii/frappe_mcp)\n",
  "bytes": 5852,
  "sha": "1592eb09354a8f23863955588e70c67b23ee9cd6b41a9a67ba19517fd3f110a8",
  "repo_slug": "muthanii/frappe_mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_muthanii_frappe_mcp_ffaf95df/readme"
}