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
```bash
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
```bash
npm start
```
## Test
```bash
npm test
```
## OpenCode MCP config example
Do not put real secrets in committed config files. Prefer environment injection.
```json
{
"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"
}
}
}
}
```
TDQS
Scored across 1 tool
With only one tool, there is no possibility of ambiguity or overlap between tools. The single tool has a clearly defined purpose of calling any Frappe REST API endpoint, leaving no room for confusion or misselection.
Since there is only one tool, naming consistency is inherently perfect. The tool name 'frappe_api' follows a clear and appropriate pattern that matches the server's purpose, with no other tools to compare against or create inconsistency.
A single tool is too few for a server with the broad scope implied by 'frappe-api-mcp', which suggests a comprehensive API interface. While the tool is flexible, the lack of specialized tools for common operations (e.g., CRUD on specific resources) makes the surface feel thin and underdeveloped for the domain.
The tool set is severely incomplete for the apparent domain of Frappe API interactions. With only a generic 'call any endpoint' tool, there are significant gaps in coverage—no dedicated tools for common operations like creating, reading, updating, or deleting specific resources, which will likely cause agent failures due to lack of structured guidance.