MCP server/database

Frappe API MCP Server

Interact with Frappe and ERPNext sites through their REST API endpoints.

★ 2danielsebastianc/frappe-api-mcp ↗by danielsebastiancupdated
Manual setup required. The maintainer's config contains paths only you know - edit the placeholders below before adding it to Claude Code.
1

Prepare the server locally

Run this once before adding it to Claude Code.

git clone https://github.com/danielsebastianc/frappe-api-mcp.git
cd frappe-api-mcp
npm install
2

Register it in Claude Code

claude mcp add -e "FRAPPE_BASE_URL=${FRAPPE_BASE_URL}" -e "FRAPPE_AUTH_TOKEN=${FRAPPE_AUTH_TOKEN}" frappe-api -- node /path/to/your/folder/mcp/frappe-api-server.mjs

Replace any placeholder paths in the command with the real path on your machine.

Required:FRAPPE_BASE_URLFRAPPE_AUTH_TOKEN
3

Make your agent remember this setup

frappe-api's config, env vars, and the gotchas you hit — recalled in every future Claude Code, Cursor, and Codex session.

npx conare@latest

Free · one command · indexes the sessions already on disk. Set up in the browser instead →

What it does

  • Supports standard HTTP methods: GET, POST, PUT, PATCH, DELETE
  • Exposes a unified frappe_api tool for all REST interactions
  • Handles authentication via Authorization headers
  • Enables natural language interaction with site data

Tools 1

frappe_apiCalls Frappe REST endpoints under /api to perform CRUD operations.

Environment Variables

FRAPPE_BASE_URLrequiredThe base URL of your Frappe/ERPNext site
FRAPPE_AUTH_TOKENrequiredThe authorization token for API access

Try it

Fetch the list of customers from the ERPNext site using the frappe_api tool.
Create a new task in the project module using a POST request to the frappe_api.
Update the status of the sales order with ID SO-001 to 'Completed'.
Delete the document with ID 123 from the custom doctype.
Original README from danielsebastianc/frappe-api-mcp

frappe-api-mcp

Model Context Protocol (MCP) server that exposes a single frappe_api tool to call Frappe REST endpoints under /api.

What it provides

  • Tool name: frappe_api
  • Methods: GET, POST, PUT, PATCH, DELETE
  • Input: path (required), method, query, body, headers
  • Auth: uses FRAPPE_AUTH_TOKEN as the Authorization header unless overridden

Requirements

  • Node.js 18+
  • A reachable Frappe/ERPNext site

Local setup

git clone https://github.com/danielsebastianc/frappe-api-mcp.git
cd frappe-api-mcp
npm install
cp .env.example .env

Set these environment variables before running:

  • FRAPPE_BASE_URL (example: http://localhost:8000)
  • FRAPPE_AUTH_TOKEN (example: token api_key:api_secret)

Run

npm start

Test

npm test

OpenCode MCP config example

Do not put real secrets in committed config files. Prefer environment injection.

{
  "mcp": {
    "frappe_api": {
      "type": "local",
      "command": ["node", "/path/to/your/folder/mcp/frappe-api-server.mjs"],
      "environment": {
        "FRAPPE_BASE_URL": "http://localhost:8000",
        "FRAPPE_AUTH_TOKEN": "token api_key:api_secret"
      }
    }
  }
}

Frequently Asked Questions

What are the key features of Frappe API?

Supports standard HTTP methods: GET, POST, PUT, PATCH, DELETE. Exposes a unified frappe_api tool for all REST interactions. Handles authentication via Authorization headers. Enables natural language interaction with site data.

What can I use Frappe API for?

Automating data entry into ERPNext modules via Claude. Querying business metrics and reports directly from an ERPNext instance. Managing document lifecycles through conversational commands. Integrating custom Frappe doctypes into AI-driven workflows.

How do I install Frappe API?

Install Frappe API by running: git clone https://github.com/danielsebastianc/frappe-api-mcp.git && cd frappe-api-mcp && npm install

What MCP clients work with Frappe API?

Frappe API works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Conare · memory for coding agents

Turn this server into reusable context

Keep Frappe API docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Set up free$npx conare@latest