Kommo CRM MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Kommo CRM MCP Server find contact by email jane@example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Kommo CRM MCP Server & SDK
Model Context Protocol (MCP) server and TypeScript/JavaScript SDK for Kommo CRM (formerly AmoCRM) API v4.
This package provides a dual-purpose solution:
MCP Server: Connect Kommo CRM to AI agents like Claude Desktop, providing them with tools to manage Leads, Contacts, Companies, Tasks, and more.
SDK: A type-safe, complete TypeScript SDK for interacting with the Kommo API v4 in your own applications.
🚀 Features
Complete CRUD: Full management of Leads, Contacts, Companies, Deals, Tasks, and Notes.
Advanced Features:
Manage Pipelines and Statuses.
Handle Custom Fields intelligently (search by name, metadata awareness).
Catalogs & Products support (including linking products to leads).
AI-Ready: Designed with semantic tools optimized for LLM usage.
Type-Safe: Built with TypeScript and Zod for robust validation.
Dual Build: Supports both ESM (
import) and CommonJS (require).
Related MCP server: AI-Assisted CRM MCP Server
📦 Installation
npm install @syncraengine/kommo-mcp🤖 Usage as MCP Server (Claude Desktop)
To use this with Claude Desktop or any MCP client, add the following configuration to your claude_desktop_config.json (Mac: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\).
Configuration
{
"mcpServers": {
"kommo-crm": {
"command": "npx",
"args": [
"-y",
"@syncraengine/kommo-mcp"
],
"env": {
"KOMMO_SUBDOMAIN": "your-subdomain",
"KOMMO_ACCESS_TOKEN": "your-long-lived-access-token"
}
}
}
}Environment Variables
Variable | Description | Required |
| OAuth 2.0 Access Token (Long-lived recommended for MCP) | ✅ Yes |
| Your Kommo subdomain (e.g., | ✅ Yes (or BASE_URL) |
| Full URL (e.g., | Optional |
📚 Usage as Library (SDK)
You can use the exported functions directly in your TypeScript/Node.js projects.
import {
searchContactByPhone,
createLead,
getKommoConfig,
type KommoConfig
} from '@syncraengine/kommo-mcp';
// 1. Configure
const config: KommoConfig = {
baseUrl: 'https://your-subdomain.kommo.com',
accessToken: process.env.KOMMO_ACCESS_TOKEN!
};
// 2. Use functions
async function main() {
// Search for a contact
const searchResult = await searchContactByPhone({ phone: '+1234567890' }, config);
if (searchResult.success && searchResult.contacts.length > 0) {
const contact = searchResult.contacts[0];
console.log(`Found contact: ${contact.name}`);
// Create a lead for this contact
const leadResult = await createLead({
name: 'New Deal from Website',
price: 500,
_embedded: {
contacts: [{ id: contact.id }]
}
}, config);
console.log('Lead created:', leadResult);
}
}
main();🛠️ Available Tools (MCP)
The server exposes ~40 tools to the AI, covering:
Contacts:
kommo_search_contact_by_phone,kommo_create_contact,kommo_update_contact, etc.Leads:
kommo_list_leads,kommo_create_lead,kommo_update_lead,kommo_update_lead_custom_fields, etc.Companies:
kommo_search_company,kommo_create_company,kommo_update_company.Tasks:
kommo_list_tasks,kommo_create_task,kommo_update_task.Notes:
kommo_list_notes,kommo_create_note.Pipelines:
kommo_list_pipelines,kommo_get_pipeline_statuses.Products:
kommo_list_catalogs,kommo_link_product_to_lead.
👨💻 Development
If you want to contribute or modify the package:
Clone the repository:
git clone https://github.com/syncraengine/kommo-mcp.git cd kommo-mcpInstall dependencies:
npm installBuild:
npm run buildThis generates both ESM (
dist/esm) and CommonJS (dist/cjs) builds.Test locally (MCP): You can use the MCP Inspector to test the server.
npx @modelcontextprotocol/inspector npx tsx src/bin/mcp-server.ts
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ by Eduardo Mendez
Available Tools
39 toolskommo_create_companyC
Create a new company
Inputs: name (required), responsible_user_id.
kommo_create_contactC
Create a new contact
Inputs: name (required), first_name, last_name, responsible_user_id.
kommo_create_dealD
Create a new deal
Inputs: name (required), price, status_id, pipeline_id.
kommo_create_leadC
Create a new lead
Inputs: name, price, status_id, pipeline_id.
kommo_create_noteC
Create a new note for an entity
Inputs: entityType (required), entityId (required), text (required).
kommo_create_taskC
Create a new task
Inputs: text (required), complete_till (required), entity_id (required), entity_type (required).
kommo_get_companyC
Get a company by ID
Inputs: companyId (required).
kommo_get_contactB
Get a contact by ID
Inputs: contactId (required).
kommo_get_dealB
Get a deal by ID
Inputs: dealId (required).
kommo_get_leadC
Get a lead by ID
Inputs: leadId (required).
kommo_get_leads_by_contactB
Get all leads associated with a contact
Inputs: contactId (required).
kommo_get_noteC
Get a specific note
Inputs: noteId (required), entityType (required).
kommo_get_pipeline_statusesA
Get all statuses (stages) for a specific pipeline. IMPORTANT: Use this to find a valid status_id before moving a lead to a different pipeline.
Inputs: pipelineId (required).
kommo_get_select_field_optionsB
Get valid options for a select/dropdown custom field
Inputs: leadId (required), fieldId (required).
kommo_get_taskB
Get a task by ID
Inputs: taskId (required).
kommo_link_lead_to_contactC
Link a lead to a contact
Inputs: leadId (required), contactId (required).
kommo_link_product_to_leadC
Link a product/catalog element to a lead
Inputs: leadId (required), productId (required), quantity.
kommo_list_catalog_elementsC
List elements (products) within a catalog
Inputs: catalog_id (required), page, limit.
kommo_list_catalogsA
List all catalogs (e.g., Products, Services)
Inputs: no named parameters.
kommo_list_companiesC
List all companies
Inputs: page, limit.
kommo_list_contactsC
List contacts with filters
Inputs: page, limit, query, responsible_user_id.
kommo_list_dealsC
List deals with filters
Inputs: page, limit, responsible_user_id.
kommo_list_leadsC
List leads with filters
Inputs: status_id, pipeline_id, responsible_user_id, page, +1 more.
kommo_list_notesC
List notes for a specific entity
Inputs: entityType (required), entityId, page, limit.
kommo_list_pipelinesB
List all pipelines
Inputs: no named parameters.
kommo_list_tasksC
List tasks with filters
Inputs: entity_type, entity_id, is_completed.
kommo_search_companyC
Search for companies by query
Inputs: query (required).
kommo_search_contact_by_emailC
Search for contacts by email
Inputs: email (required).
kommo_search_contact_by_phoneC
Search for contacts by phone number
Inputs: phone (required), name.
kommo_search_dealC
Search for deals by query
Inputs: query (required).
kommo_search_leadC
Search for leads by query
Inputs: query (required), pipeline_id.
kommo_unlink_product_from_leadC
Unlink a product/catalog element from a lead
Inputs: leadId (required), productId (required).
kommo_update_companyC
Update an existing company
Inputs: companyId (required), name, responsible_user_id.
kommo_update_contactC
Update an existing contact
Inputs: contactId (required), name, first_name, last_name.
kommo_update_dealD
Update an existing deal
Inputs: dealId (required), name, price, status_id, +1 more.
kommo_update_leadC
Update an existing lead
Inputs: leadId (required), name, price, status_id, +1 more.
kommo_update_lead_custom_fieldsC
Update lead custom fields by name
Inputs: leadId (required), fields (required).
kommo_update_noteC
Update an existing note
Inputs: noteId (required), entityType (required), text (required).
kommo_update_taskC
Update an existing task
Inputs: taskId (required), text, is_completed.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 39 tools
Most tools target distinct entities and actions. There is minor overlap between 'list' and 'search' tools for the same entity (e.g., kommo_list_leads vs kommo_search_lead), but descriptions clarify their different use cases.
All tools follow the consistent pattern 'kommo_[verb]_[entity]' using snake_case. Minor deviations like 'search_contact_by_email' are predictable and do not harm coherence.
With 39 tools, the set is on the higher end but still scoped appropriately for a comprehensive CRM. Each major entity has several operations, and the count feels justified.
The tool set lacks delete operations for all entities (company, contact, deal, lead, note, task) and is missing create/update operations for pipelines and catalog elements. These are significant gaps for full lifecycle management.
Maintenance
Related MCP Connectors
List leads, contacts, companies and tasks; create and update leads in Kommo.
Remote MCP for Kommo CRM: leads, contacts, tasks, notes, pipelines, chats, Salesbot. OAuth.
Remote MCP for amoCRM and Kommo: leads, contacts, tasks, pipelines, chats, Salesbot. OAuth.
API-first CRM for LLMs - contacts, companies, deals and activities over a native MCP server.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables AI assistants to autonomously interact with Kommo CRM, providing tools for managing pipelines, leads, contacts, and custom fields via the Kommo API v4.271-
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to perform CRM operations like creating contacts, managing deals, and updating leads through natural language using the Model Context Protocol.4-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with amoCRM, providing access to deals, contacts, companies, notes, tasks, and custom fields via natural language.13 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables AI models to interact with Zoho CRM via Model Context Protocol, supporting CRUD operations, COQL queries, search, and deal stage management.-