Skip to main content

MCP server for Bitrix24 task planning - enables AI assistants to help break down tasks into subtasks

Project description

Bitrix24 MCP

A Model Context Protocol server for Bitrix24 task planning.

PyPI version Python 3.11+ License: MIT

Bitrix24 MCP equips AI assistants with tools to search users and workgroups, search/list tasks, fetch task details (optionally with comments), create/update tasks and subtasks, list epics and create/update Scrum tasks (epic/story points/backlog or sprint), and manage Kanban/My Planner columns (get stages, move/reorder tasks).


Install using pip:

pip install bitrix24-lkp-mcp

Set your webhook URL and configure your MCP client:

{
  "mcpServers": {
    "bitrix24": {
      "command": "uvx",
      "args": ["bitrix24-lkp-mcp"],
      "env": {
        "BITRIX_WEBHOOK_URL": "https://your-domain.bitrix24.com/rest/1/token/"
      }
    }
  }
}

Features

Bitrix24 MCP provides tools for AI-assisted task planning:

  • Search tasks by title with partial matching.
  • Get full task details including description for AI analysis.
  • Create subtasks under parent tasks automatically.
  • Built-in rate limiting (respects Bitrix24's 2 req/sec limit).
  • Secure authentication via Bitrix24 inbound webhooks.

Bitrix24 MCP requires Python 3.11+.

Configuration

1. Create Bitrix24 Webhook

  1. Go to your Bitrix24 portal
  2. Navigate to Developer resourcesOtherInbound webhook
  3. Click Add inbound webhook
  4. Set permissions: tasks (Read and write tasks)
  5. Copy the webhook URL

2. Set Environment Variable

export BITRIX_WEBHOOK_URL="https://your-domain.bitrix24.com/rest/1/your-token/"

3. Configure MCP Client

Cursor - Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "bitrix24": {
      "command": "uvx",
      "args": ["bitrix24-lkp-mcp"],
      "env": {
        "BITRIX_WEBHOOK_URL": "https://your-domain.bitrix24.com/rest/1/token/"
      }
    }
  }
}

Claude Desktop - Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "bitrix24": {
      "command": "uvx",
      "args": ["bitrix24-lkp-mcp"],
      "env": {
        "BITRIX_WEBHOOK_URL": "https://your-domain.bitrix24.com/rest/1/token/"
      }
    }
  }
}

Claude Code - Add to ~/.claude.json:

{
  "mcpServers": {
    "bitrix24": {
      "command": "uvx",
      "args": ["bitrix24-lkp-mcp"],
      "env": {
        "BITRIX_WEBHOOK_URL": "https://your-domain.bitrix24.com/rest/1/token/"
      }
    }
  }
}

Codex CLI - Add to ~/.codex/config.toml:

[mcp_servers.bitrix24]
command = "uvx"
args = ["bitrix24-lkp-mcp"]
env = { "BITRIX_WEBHOOK_URL" = "https://your-domain.bitrix24.com/rest/1/token/" }

Available Tools

task_search

Search for tasks by title. Use this to find a task when user provides task name. Returns matching tasks with id, title, responsibleId, groupId, parentId, status, and url.

Parameter Type Required Description
query string Yes Task title to search for
limit int No Maximum results (default: 10)

task_get

Get detailed information about a task by ID. Returns title, description, assignee, and group. Also includes attachmentFileIds (from Bitrix24 UF_TASK_WEBDAV_FILES; empty list if none). Also includes stageId (Kanban stage ID, if the task is in a project with stages; otherwise null).

Parameter Type Required Description
id int Yes Task ID
includeComments bool No Include task comments (legacy API via task.commentitem.getlist)

task_comment_add

Add a comment to a task (via task.commentitem.add).

Parameter Type Required Description
id int Yes Task ID
message string Yes Comment text

task_create

Create a new task or subtask. Use parentId to create a subtask under an existing task.

Parameter Type Required Description
title string Yes Task title
responsibleId int Yes Assignee user ID
description string No Task description
groupId int No Workgroup/Scrum ID
parentId int No Parent task ID (creates subtask)
deadline string No Deadline (ISO 8601)
priority string No low, medium, high

task_update

Update an existing task (via tasks.task.update). At least one updatable field must be provided.

Supports:

  • Main: title, description, priority, status (accepts common synonyms like "in progress", "done")
  • People: assignee (responsibleId), participants (accomplices), observers (auditors)
  • Dates: deadline, planned start/end
  • Project: group/project, parent task
  • Kanban stage: stageId (if task is in a project with stages)
Parameter Type Required Description
id int Yes Task ID
title string No Task title
description string No Task description
priority string No low, medium, high
status string No pending, in_progress, completed, deferred (also accepts: "in progress", "done")
responsibleId int No Assignee user ID
accomplices list[int] No Participant user IDs
auditors list[int] No Observer user IDs
deadline string No Deadline (ISO 8601)
startDatePlan string No Planned start date (ISO 8601)
endDatePlan string No Planned end date (ISO 8601)
groupId int No Workgroup/Project ID
parentId int No Parent task ID (use 0 to clear)
stageId int No Kanban stage ID (use 0 to clear)

scrum_epic_list

List Scrum epics for a Scrum group (via tasks.api.scrum.epic.list). Use this to find epicId by epic name.

Parameter Type Required Description
groupId int Yes Scrum group/workgroup ID
query string No Filter by epic name (case-insensitive substring match)
limit int No Max results (default: 50)

scrum_task_get

Get Scrum-specific fields for a task (via tasks.api.scrum.task.get), including epicId, storyPoints, and entityId.

Parameter Type Required Description
id int Yes Task ID

scrum_task_update

Update Scrum fields for an existing task (via tasks.api.scrum.task.update). Supports setting an epic by epicId or by epicName (resolved within the task's groupId).

Parameter Type Required Description
id int Yes Task ID
epicId int No Epic ID (mutually exclusive with epicName)
epicName string No Epic name (mutually exclusive with epicId)
storyPoints string No Story points (string)
entityId int No Backlog/sprint ID
sort int No Sorting

scrum_task_create

Create a task in a Scrum group and attach Scrum fields. Internally: creates the base task via tasks.task.add, then configures Scrum via tasks.api.scrum.task.update.

Parameter Type Required Description
title string Yes Task title
responsibleId int Yes Assignee user ID
groupId int Yes Scrum group/workgroup ID
description string No Task description
deadline string No Deadline (ISO 8601)
priority string No low, medium, high
epicId int No Epic ID (mutually exclusive with epicName)
epicName string No Epic name (mutually exclusive with epicId)
storyPoints string No Story points (string)
entityId int No Backlog/sprint ID
sort int No Sorting

task_stages_get

Get Scrum board columns (stages) for the current sprint of a group/project.

For Scrum groups (entityId > 0), this tool fetches the current sprint via tasks.api.scrum.sprint.list, then fetches stages via tasks.api.scrum.kanban.getStages.

Returns stages with id, title, sort, color, systemType, and sprintId.

Parameter Type Required Description
entityId int Yes Scrum group ID; use 0 for current user's "My Planner" stages (fallback)

task_stages_move_task

Move a task between kanban/Scrum columns (via task.stages.movetask). Optionally set the task position within the target column using before or after.

Parameter Type Required Description
id int Yes Task ID
stageId int Yes Target stage ID
before int No Place task before this task ID (mutually exclusive with after)
after int No Place task after this task ID (mutually exclusive with before)

user_search

Search for users by name. Use this to find a user's ID when you need to assign tasks.

Parameter Type Required Description
query string Yes User name to search for

task_list_by_user

List tasks assigned to a specific user. Returns tasks with id, title, responsibleId, groupId, parentId, status, and url.

Parameter Type Required Description
responsibleId int Yes User ID
status string No Filter: pending, in_progress, completed, deferred
limit int No Maximum results (default: 50)

group_search

Search for workgroups/scrums by name. Use this when the user provides a group name (not an ID).

Parameter Type Required Description
query string Yes Group name to search for
limit int No Maximum results (default: 10)

Example Usage

User: "Plan for task Auto Send welcome email"

AI: [Searches for task, reads description, proposes subtasks]
    
    Based on the task description, here's my proposed plan:
    1. Set up email service configuration
    2. Create welcome email template  
    3. Implement user signup event listener
    4. Implement email sending logic
    
    Ready to create these subtasks?

User: "Yes, create them"

AI: [Creates subtasks with parentId pointing to original task]
    
    Created 4 subtasks under task #456.

Contribute

See CONTRIBUTING.md for development setup and guidelines.

Dependencies

Bitrix24 MCP relies on these libraries:

  • fastmcp - MCP server framework.
  • httpx - Async HTTP client.
  • pydantic - Data validation.

License

MIT License - see LICENSE for details.


Bitrix24 MCP is MIT licensed code.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bitrix24_lkp_mcp-0.2.0.tar.gz (36.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bitrix24_lkp_mcp-0.2.0-py3-none-any.whl (23.2 kB view details)

Uploaded Python 3

File details

Details for the file bitrix24_lkp_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: bitrix24_lkp_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 36.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for bitrix24_lkp_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 588b2a22333aa9bbc38d9996ac47a7087d9c0b3c07ad81bacb2443e7b2eb987d
MD5 04cf0ad22b3c23fadf2a8b6482004fc8
BLAKE2b-256 276c783c266c4c65b5a9dfed31bcc9f1451d5a13602b27dd436d2399e2b2c1cc

See more details on using hashes here.

File details

Details for the file bitrix24_lkp_mcp-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for bitrix24_lkp_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 833a10c7e70181fd83fb059a23a88d0644318c63be7664ce8ba54d8dbc346870
MD5 d9e85df1453e984dd9a13fcfbc9c9162
BLAKE2b-256 edba62df43212ec81efccfbf44a7d1d9138c262b7e5832860d455f2bffbf7bfd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page