BitrixMCP
BitrixMCP is a universal, full-featured MCP server for the Bitrix24 REST API, providing read/write access across all modules through 99+ typed tools and a catch-all b24_call method.
Universal / Escape Hatch
b24_call— Call any Bitrix24 REST method with JSON POST bodyb24_batch— Run up to 50 REST calls in a single chained requestb24_test_connection— Verify webhook authb24_list_methods— Discover REST methods and scopes
CRM
Full CRUD for leads, deals, contacts, companies, quotes, and SPA items
Manage timeline comments, activities, categories, stages, product rows, currencies, requisites, deal contacts, and custom fields
Tasks
CRUD tasks, manage comments, checklists, elapsed time, and task results
Retrieve kanban stages for both regular projects and Scrum sprints
Scrum
List sprints, get sprint stages, obtain board snapshots, and move tasks on Scrum boards
Calendar
List, create, update, delete events and sections; auto-resolve owner; auto-set
is_meetingfor events with attendees
Disk / Files
Browse storages/folders; get file metadata; upload/download files (base64); create subfolders; delete files
Users & Org Structure
Get current user; free-text search; list departments (client-side filtering applied)
Workgroups / Projects
CRUD workgroups; list group members
Messaging & Notifications
List recent chats, read messages, send IM, create group chats, add users, send personal notifications, post to Live Feed, get IM profiles
Universal Lists
List available lists; CRUD list elements
Catalog & Products
List catalogs and sections; CRUD products; list classic CRM catalog products
Sale / Orders
List orders with filtering; fetch order details
Document Generation
List templates; generate documents from CRM records
Business Processes
List workflow templates; launch business processes
Telephony
Retrieve call statistics
Infrastructure & Robustness
Multiple transports (stdio, Streamable HTTP) compatible with various MCP clients
Override webhook per call; optional read-only mode
Receives portal events via pull channel, outgoing webhook, or poller; supports history archive and Telegram forwarding
Handles API quirks: corrects empty-string error codes, applies client-side filtering for departments, auto-resolves owner IDs, and automates
is_meeting
Allows forwarding Bitrix24 portal events to Telegram chats, enabling notifications and updates to be delivered via Telegram.
Click on "Install 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., "@BitrixMCPshow me all deals with stage 'Negotiation'"
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.
bitrix-mcp
English · Русский
Universal, full-featured, portable MCP server for the Bitrix24 REST API. Read and write. Not tied to any one application — it's a generic Bitrix24 gateway that any MCP client or agent can mount (Claude Code, Claude Desktop, Cursor, Windsurf, Cline, or your own Python/Node agent).
Language: Python + the official MCP SDK (
mcp.server.mcpserver, 2.x)Transports:
stdio(default, most portable/reliable) and Streamable HTTP (stateless JSON — no fragile long-lived SSE bridge)Coverage: universal
b24_call/b24_batchreach 100% of the REST API; a catalogue built from the official docs (1930 methods) tells the agent which method it needs and what parameters it takes; 99 typed tools cover the high-traffic domains with the tricky bits handled.Portal events: three ways to receive them — pull channel (works behind NAT and VPN), outgoing-webhook receiver, poller — plus a history archive and Telegram forwarding: docs/EVENTS.md
Why this exists / what it fixes
Rebuilt from field notes on a previous wrapper. The bugs that motivated it are fixed by design, not patched around:
Old behavior | Fix here |
| Params sent as JSON POST body, so nested |
Access errors swallowed into a fake "0 results" ( | Errors are never swallowed — a Bitrix |
|
|
Scrum kanban read from the wrong place | Correct flow baked in: active-sprint filter + |
Fragile | Prefer stdio (no bridge) or stateless Streamable HTTP. |
|
|
Bitrix sometimes reports a failure as | Checked by key presence, not truthiness — |
|
|
Moving a task on a Scrum sprint board has no single API call, and every obvious candidate fails while reporting success: |
|
Related MCP server: fast-bitrix24-mcp
Install
If nothing is installed on the machine, take the portable archive
(dist/bitrix-mcp-portable.zip, built by python scripts/build_portable.py).
It carries its own Python and every library — no uv, no pip, no PyPI access.
Unzip it and run the bundled launcher.
From source:
uv sync # create venv + install
# or, as a tool on PATH:
uv tool install . # exposes the `bitrix-mcp` commandConfigure
Set the default webhook (see .env.example):
export BITRIX_WEBHOOK_URL="https://your-portal.bitrix24.ru/rest/1/xxxxxxxx/"
# optional:
export BITRIX_READ_ONLY=1 # block all writesThe webhook comes from Bitrix: Profile → Webhooks → inbound webhook, format
https://<portal>/rest/<user_id>/<token>/. The token is a credential — keep it
out of source control (.env is gitignored).
Auth precedence per call: personal_webhook → webhook_url →
X-B24-Webhook HTTP header → BITRIX_WEBHOOK_URL. Pass personal_webhook to
act (and write) as a specific user.
Run
bitrix-mcp # stdio (default)
bitrix-mcp --http # Streamable HTTP on 127.0.0.1:8000/mcp
bitrix-mcp --http --host 0.0.0.0 --port 5015 # shared network serviceConnect a client
Claude Code (stdio, recommended):
claude mcp add -s user bitrix24 -- uv run --directory C:/Scripts/BitrixMCP bitrix-mcpRepo-shared .mcp.json (stdio):
{
"mcpServers": {
"bitrix24": {
"command": "uv",
"args": ["run", "--directory", "C:/Scripts/BitrixMCP", "bitrix-mcp"],
"env": { "BITRIX_WEBHOOK_URL": "https://your-portal.bitrix24.ru/rest/1/xxxx/" }
}
}
}Claude Code (HTTP):
bitrix-mcp --http --port 5015 # then, on the client:
claude mcp add -s user --transport http bitrix24 http://HOST:5015/mcpClaude Desktop (stdio) — %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"bitrix24": {
"command": "uv",
"args": ["run", "--directory", "C:/Scripts/BitrixMCP", "bitrix-mcp"],
"env": { "BITRIX_WEBHOOK_URL": "https://your-portal.bitrix24.ru/rest/1/xxxx/" }
}
}
}(For a remote HTTP instance, Desktop still needs the mcp-remote bridge; stdio
above avoids it entirely.)
Tool catalog (99)
Universal — b24_call, b24_batch, b24_test_connection, b24_list_methods
CRM — b24_crm_list, b24_crm_get, b24_crm_fields, b24_crm_add, b24_crm_update, b24_crm_delete, b24_crm_timeline_comment_add, b24_crm_timeline_comment_list, b24_crm_category_list (pipelines), b24_crm_status_list (stages/dictionaries), b24_crm_activity_list, b24_crm_activity_add, b24_crm_activity_delete, b24_crm_productrows_get, b24_crm_productrows_set, b24_crm_currency_list, b24_crm_requisite_list, b24_crm_deal_contacts_get, b24_crm_deal_contacts_set (classic entities and SPA via entity_type_id)
Tasks — b24_tasks_list, b24_task_get, b24_task_add, b24_task_update, b24_task_complete, b24_task_delete, b24_task_comments_list, b24_task_comment_add, b24_task_stages_get, b24_task_checklist_list, b24_task_checklist_add, b24_task_elapsed_add, b24_task_result_list
Scrum — b24_scrum_sprint_list, b24_scrum_kanban_stages, b24_scrum_board, b24_scrum_task_move
Calendar — b24_calendar_event_list, b24_calendar_section_list, b24_calendar_event_add, b24_calendar_event_update, b24_calendar_event_delete
Disk — b24_disk_storage_list, b24_disk_folder_items, b24_disk_file_get, b24_disk_file_content (server-side download → base64), b24_disk_folder_add, b24_disk_file_upload, b24_disk_file_delete
Users/structure — b24_user_get, b24_user_search, b24_user_current, b24_department_get
Groups (workgroups) — b24_group_list, b24_group_users, b24_group_create, b24_group_update, b24_group_delete
Messaging — b24_im_recent, b24_im_dialog_messages, b24_im_message_add, b24_im_notify_personal, b24_im_user_get, b24_im_chat_create, b24_im_chat_user_add, b24_feed_post_add
Lists (universal lists) — b24_lists_get, b24_lists_element_list, b24_lists_element_add, b24_lists_element_update, b24_lists_element_delete
Catalog / products — b24_catalog_list, b24_catalog_section_list, b24_catalog_product_list, b24_catalog_product_get, b24_catalog_product_add, b24_catalog_product_update, b24_crm_product_list
Sale (orders) — b24_sale_order_list, b24_sale_order_get
Documents — b24_documentgenerator_templates, b24_documentgenerator_add
Bizproc — b24_bizproc_template_list, b24_bizproc_start
Telephony — b24_telephony_statistics
Anything still not typed here is reachable through b24_call (e.g. mail,
open-lines, sale basket writes, admin/app-placement methods).
Retrospective-app integration
This server has no knowledge of any downstream app. An agent connects to both
this server and your app's MCP, reads Bitrix here, and relays into the app's
contract. Field names from b24_tasks_list / b24_calendar_event_list map
directly onto PushSprintTask / PushCalendarEvent, so the mapping is trivial —
but that translation lives in the agent, not here.
Documentation
docs/USAGE.md — how to drive the tools: auth, filters, pagination, batch, errors, recipes.
ARCHITECTURE.md — components, call flow, deployment; diagrams in docs/diagrams/.
ROADMAP.md — status, history, and out-of-scope boundaries.
Development
uv sync # install runtime + dev deps
uv run pytest -q # offline unit tests (no portal needed)
uv run python scripts/smoke.py "<webhook>" # live read-only access map (run from a network with portal access)Verification scripts
Each one exits non-zero when a check fails, so they can be chained in CI. Those marked offline need no portal; the rest need a reachable webhook.
Script | What it proves | Needs |
| The server boots on both transports and registers every tool | offline |
| The sanitizer strips webhooks/tokens from output and from httpx logs | offline |
| No secret is present in tracked files or anywhere in git history | offline |
| poll → ack → history → stats against a seeded store | offline |
| Requirement R-1: catalogue + scope diagnosis reach the whole API | portal |
|
| portal |
| Push & Pull channel subscribes and receives | portal |
| Outgoing-webhook receiver end to end, including TLS | portal |
| Filter DSL routes the right events | offline |
| The bot and chat really accept a message | Telegram |
| Live read-only access map across every domain | portal |
| Regenerates | docs checkout |
Probes (diagnostics, no pass/fail verdict): pull_probe.py, probe_listener.py,
tg_conn_probe.py.
Diagrams are regenerated with java -jar plantuml.jar -tpng docs/diagrams/*.puml.
Notes on limits
fetch_all=trueis capped byBITRIX_MAX_PAGES(default 40 pages ≈ 2000 records) and reportstruncated: truewhen it hits the cap — it never silently stops short.The read-only guard classifies writes by method verb; typed write tools are always classified correctly.
b24_call/b24_batchuse the heuristic.
Licence
MIT — see LICENSE.
Security
Found a vulnerability? Please report it privately, not in a public issue — see SECURITY.md. The webhook URL this server uses is a bearer credential for the whole portal.
Support author
BTC: bc1q3frrup5neh7nhfg944etu2agd4j9u0vg3jyee6
ETH(Arbitrum): 0x43B349d8Cea83215D707EBa3bc35e9917f746b0a
TRX: THSzvy49KNeqRjXsGkurh2A5G4avV4RgN4
XRP: rLWZjS3DMupC4ZdXCX3BVYn4dEtC3iNhgy
SOL: 3xwfybxJ6Tz5t6pjBBkL5yYQCZo6wfbv932UNA4ThdP8
ADA: addr1q926ys75jp5wn2pv32a3t8r8pdhr7w02v0t9j4a8pmg0ruww5rlkctu4lnz2hfcwa5qfn3zhsd0s23r22uqwzx9gu6cq5c4e76
TON: UQC4qlAOD9Nly4K_66GJ_yCsSM3x2sB0vZ2GrBQbc--gZUui
DOGE: DTjNYmbtymzcjUiV4MsZY8MP4dM7MJ6qLC
XMR: 44qRqM6YtnxXUhkgCFqDDrKMPjWriu69FLBoop8Kwp7e1VQsBUJoVQ8JYQjfMV5C6uidTUgSSyoJ65mq8aYG2esZ1rrqfwt
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceProvides a REST API and MCP server to interact with Bitrix24 CRM, enabling CRUD operations on entities like deals, leads, contacts, and tasks via natural language.913
- Flicense-qualityCmaintenanceMCP server for interacting with Bitrix24 REST API, enabling CRUD operations on deals, contacts, companies, users, leads, and tasks, plus analytics and risk assessment.2
- Flicense-qualityDmaintenanceMCP server for Bitrix24 CRM integration, enabling AI agents to manage contacts, deals, tasks, and more via natural language.9
- Flicense-qualityDmaintenanceProduction-grade MCP server for Bitrix24 Cloud with 45 tools, safe by default. Connects Claude Desktop to your Bitrix24 tenant for AI-driven CRM, tasks, messaging, and calendar operations.
Related MCP Connectors
Streamable HTTP MCP server for Google Calendar and Sheets with OAuth login.
Remote MCP server for full read/write access to a Zotero library
A basic MCP server to operate on the Postman API.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/john7ross/BitrixMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server