6.6 KiB
Frappe MCP — Connection Guide
Server: https://mcp-frappe.metatronhost.com/sse
Server Token: MetaFrappe@2026
You also need your own Frappe/ERPNext credentials to pass along with each connection:
| Header | Value |
|---|---|
Authorization |
Bearer MetaFrappe@2026 |
X-Frappe-URL |
Your ERPNext URL e.g. https://erp.yourcompany.com |
X-Frappe-API-Key |
Your Frappe API Key |
X-Frappe-API-Secret |
Your Frappe API Secret |
X-Frappe-Site-Name |
(optional) Only for multi-site Docker setups |
How to get your Frappe API Key & Secret:
Login to ERPNext → top-right avatar → My Profile → API Access → Generate Keys
1. Claude Desktop
Edit your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"frappe": {
"url": "https://mcp-frappe.metatronhost.com/sse",
"headers": {
"Authorization": "Bearer MetaFrappe@2026",
"X-Frappe-URL": "https://erp.yourcompany.com",
"X-Frappe-API-Key": "your_api_key",
"X-Frappe-API-Secret": "your_api_secret"
}
}
}
}
Restart Claude Desktop after saving. You should see frappe appear in the tools panel (hammer icon).
2. Claude Code (CLI)
Option A — Project-level (only this project)
Create .mcp.json in your project root:
{
"mcpServers": {
"frappe": {
"url": "https://mcp-frappe.metatronhost.com/sse",
"headers": {
"Authorization": "Bearer MetaFrappe@2026",
"X-Frappe-URL": "https://erp.yourcompany.com",
"X-Frappe-API-Key": "your_api_key",
"X-Frappe-API-Secret": "your_api_secret"
}
}
}
}
Option B — Global (available in all projects)
claude mcp add frappe \
--transport sse \
--url "https://mcp-frappe.metatronhost.com/sse" \
--header "Authorization: Bearer MetaFrappe@2026" \
--header "X-Frappe-URL: https://erp.yourcompany.com" \
--header "X-Frappe-API-Key: your_api_key" \
--header "X-Frappe-API-Secret: your_api_secret"
Verify it's connected:
claude mcp list
3. Cursor
Open Cursor Settings → MCP → Add new MCP server
Or edit ~/.cursor/mcp.json (create if it doesn't exist):
{
"mcpServers": {
"frappe": {
"url": "https://mcp-frappe.metatronhost.com/sse",
"headers": {
"Authorization": "Bearer MetaFrappe@2026",
"X-Frappe-URL": "https://erp.yourcompany.com",
"X-Frappe-API-Key": "your_api_key",
"X-Frappe-API-Secret": "your_api_secret"
}
}
}
}
Restart Cursor. The Frappe tools will appear in Cursor's AI chat context.
4. VS Code (GitHub Copilot — MCP extension)
Install the MCP extension from VS Code marketplace first.
Then edit VS Code settings.json (Ctrl+Shift+P → Open User Settings JSON):
{
"mcp.servers": {
"frappe": {
"url": "https://mcp-frappe.metatronhost.com/sse",
"headers": {
"Authorization": "Bearer MetaFrappe@2026",
"X-Frappe-URL": "https://erp.yourcompany.com",
"X-Frappe-API-Key": "your_api_key",
"X-Frappe-API-Secret": "your_api_secret"
}
}
}
}
Or via workspace .vscode/settings.json (per-project):
{
"mcp.servers": {
"frappe": {
"url": "https://mcp-frappe.metatronhost.com/sse",
"headers": {
"Authorization": "Bearer MetaFrappe@2026",
"X-Frappe-URL": "https://erp.yourcompany.com",
"X-Frappe-API-Key": "your_api_key",
"X-Frappe-API-Secret": "your_api_secret"
}
}
}
}
5. Windsurf (Codeium)
Edit ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"frappe": {
"serverUrl": "https://mcp-frappe.metatronhost.com/sse",
"headers": {
"Authorization": "Bearer MetaFrappe@2026",
"X-Frappe-URL": "https://erp.yourcompany.com",
"X-Frappe-API-Key": "your_api_key",
"X-Frappe-API-Secret": "your_api_secret"
}
}
}
}
6. Continue.dev
Edit ~/.continue/config.json:
{
"mcpServers": [
{
"name": "frappe",
"transport": {
"type": "sse",
"url": "https://mcp-frappe.metatronhost.com/sse",
"requestOptions": {
"headers": {
"Authorization": "Bearer MetaFrappe@2026",
"X-Frappe-URL": "https://erp.yourcompany.com",
"X-Frappe-API-Key": "your_api_key",
"X-Frappe-API-Secret": "your_api_secret"
}
}
}
}
]
}
7. Any Custom App (OpenAI / Anthropic SDK)
Use any MCP client library and connect via SSE:
import httpx
headers = {
"Authorization": "Bearer MetaFrappe@2026",
"X-Frappe-URL": "https://erp.yourcompany.com",
"X-Frappe-API-Key": "your_api_key",
"X-Frappe-API-Secret": "your_api_secret",
}
# SSE endpoint
response = httpx.get(
"https://mcp-frappe.metatronhost.com/sse",
headers=headers,
timeout=None
)
Verifying the Connection
You can test the server is reachable from a terminal:
curl -N \
-H "Authorization: Bearer MetaFrappe@2026" \
-H "X-Frappe-URL: https://erp.yourcompany.com" \
-H "X-Frappe-API-Key: your_api_key" \
-H "X-Frappe-API-Secret: your_api_secret" \
https://mcp-frappe.metatronhost.com/sse
Expected: an SSE stream starting with event: endpoint data.
A 401 means wrong bearer token.
A 400 means missing Frappe credential headers.
A 200 stream means you're connected.
Available Tools (150+)
Once connected, the AI has access to tools across these categories:
| Category | Examples |
|---|---|
| Documents | create, read, update, delete, submit, cancel |
| DocTypes | list, inspect schema, create custom DocTypes |
| Search & Inspect | search, timeline, linked docs, count |
| Workflows | list transitions, execute approval, get state |
| Analytics | aggregate, dashboard data, PDF render, KPI |
| Bulk Operations | batch create/update/delete/submit |
| ERPNext Business | Sales, Purchase, Stock, HR, Support shortcuts |
| Users & Roles | create users, assign roles, set permissions |
| Admin | cache, system settings, scheduled jobs |
| Governance | dry-run, risk score, audit log, rollback |
Security Notes
- The bearer token
MetaFrappe@2026controls access to the MCP server itself. - Your Frappe API Key/Secret controls what you can do inside ERPNext — scoped to your user's permissions.
- All traffic is encrypted via HTTPS.
- Never share your Frappe API Secret publicly.