Frappe CRM MCP Server
Connect your AI tools to Frappe CRM using the Model Context Protocol.
Once connected, your AI assistants can interact with your CRM data:
- "Show me all open deals"
- "Create a lead for John at Acme Corp"
- "What's happening with the Tesla deal?"
- "Add a note to the Stripe deal about our call today"
Prerequisites
- A Frappe CRM instance (cloud or self-hosted)
- API credentials (see Generate API Keys)
- Python 3.11+ and uv (for local installation)
Installation
Claude Code
claude mcp add frappe-crm \
-e FRAPPE_URL=https://your-site.frappe.cloud \
-e FRAPPE_API_KEY=your_api_key \
-e FRAPPE_API_SECRET=your_api_secret \
-- uvx frappe-crm-mcp
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"frappe-crm": {
"command": "uvx",
"args": ["frappe-crm-mcp"],
"env": {
"FRAPPE_URL": "https://your-site.frappe.cloud",
"FRAPPE_API_KEY": "your_api_key",
"FRAPPE_API_SECRET": "your_api_secret"
}
}
}
}
Cursor
Add to .cursor/mcp.json in your project:
{
"mcpServers": {
"frappe-crm": {
"command": "uvx",
"args": ["frappe-crm-mcp"],
"env": {
"FRAPPE_URL": "https://your-site.frappe.cloud",
"FRAPPE_API_KEY": "your_api_key",
"FRAPPE_API_SECRET": "your_api_secret"
}
}
}
}
Windsurf
Add to your Windsurf MCP config:
{
"mcpServers": {
"frappe-crm": {
"command": "uvx",
"args": ["frappe-crm-mcp"],
"env": {
"FRAPPE_URL": "https://your-site.frappe.cloud",
"FRAPPE_API_KEY": "your_api_key",
"FRAPPE_API_SECRET": "your_api_secret"
}
}
}
}
Generate API Keys
- Log into your Frappe CRM instance
- Go to User → your user → API Access
- Click Generate Keys
- Copy the API Key and API Secret (secret is only shown once)
Available Tools
| Tool | Description |
|---|---|
deals_list |
List deals with optional filters |
deals_get |
Get a single deal by ID |
deals_create |
Create a new deal |
deals_update |
Update deal fields |
deals_get_contacts |
Get contacts linked to a deal |
deals_add_contact |
Link a contact to a deal |
deals_remove_contact |
Unlink a contact from a deal |
deals_set_primary_contact |
Set a deal's primary contact |
leads_list |
List leads with optional filters |
leads_get |
Get a single lead by ID |
leads_create |
Create a new lead |
leads_update |
Update lead fields |
leads_convert |
Convert a lead to a deal |
contacts_search |
Search contacts by name or email |
contacts_get |
Get a single contact by ID |
contacts_create |
Create a new contact |
contacts_update |
Update contact fields |
contacts_get_deals |
Get deals linked to a contact |
organizations_list |
List organizations |
organizations_get |
Get a single organization by ID |
organizations_create |
Create a new organization |
organizations_update |
Update organization fields |
notes_list |
List notes on a deal or lead |
notes_add |
Add a note to a deal or lead |
tasks_list |
List tasks with optional filters |
tasks_get |
Get a single task by ID |
tasks_add |
Create a new task |
tasks_update |
Update task fields |
activities_get |
Get activity timeline for a deal or lead |
deal_statuses_list |
List all deal pipeline statuses |
deal_statuses_create |
Create a new deal status |
deal_statuses_update |
Update a deal status |
lead_statuses_list |
List all lead pipeline statuses |
lead_statuses_create |
Create a new lead status |
lead_statuses_update |
Update a lead status |
get_field_options |
Get allowed values for any constrained field (Link/Select types) |
Development
git clone https://github.com/joehaddad2000/frappe-crm-mcp.git
cd frappe-crm-mcp
uv sync
# Run with environment variables
FRAPPE_URL=... FRAPPE_API_KEY=... FRAPPE_API_SECRET=... uv run frappe-crm-mcp
License
MIT
Metadata
Release files for frappe-crm-mcp 0.0.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| frappe_crm_mcp-0.0.6.tar.gz | 92.3 kB | Without provenance | Details for frappe_crm_mcp-0.0.6.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| frappe_crm_mcp-0.0.6-py3-none-any.whl | Python 3 | none | any | Details for frappe_crm_mcp-0.0.6-py3-none-any.whl |
Total release size: 110.8 kB
Release files / frappe_crm_mcp-0.0.6.tar.gz
| Download URL | frappe_crm_mcp-0.0.6.tar.gz |
|---|---|
| Size | 92.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7177f12e94a74e1b638efd638c8c8c10dfc97c6b2febce752d6ec88c4709fd7c
|
|
BLAKE2b-256 checksum How to use checksums |
4f9e0ef2b98693493d18f5c6a694334433f35f4f820cf3f6d9772cfff23ca691
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.2
|
Release files / frappe_crm_mcp-0.0.6-py3-none-any.whl
| Download URL | frappe_crm_mcp-0.0.6-py3-none-any.whl |
|---|---|
| Size | 18.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6a917622b9c6a2dda89fe5227137ae7d35c3fa62af9e6f7589747aec8ad06609
|
|
BLAKE2b-256 checksum How to use checksums |
19b55f25ca75b722ed440d361d9b9a6e34b415dd433425004a3ab2c82257b14a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.2
|
Security for frappe-crm-mcp 0.0.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.