MCP server for Bitrix24 Tasks and Groups
npm install mcp-bitrix24MCP server for Bitrix24 Tasks, Workgroups, and Users. Implements MCP/JSON-RPC over STDIO.
- Tasks: create, update, close, reopen, list
- Workgroups: create, list
- Users: list, current user, available fields
- Task fields: available fields + validation for create_task.fields
- Node.js >= 18
- Bitrix24 webhook URL
``bash`
npm install
npm run build
Run via npm:
`bash`
npx mcp-bitrix24
Set the Bitrix24 webhook URL via environment variable:
``
BITRIX24_WEBHOOK_URL=https://
Example Codex MCP config:
`toml
[mcp_servers.bitrix24]
command = "npx"
args = ["-y", "mcp-bitrix24"]
[mcp_servers.bitrix24.env]
BITRIX24_WEBHOOK_URL = "https://
`
- create_tasktitle
- Input: (string, required), description? (string), responsible_id? (number), group_id? (number), fields? (object){ task_id: number }
- Output: fields
- Note: if is provided, keys are validated against get_task_fields.
- update_tasktask_id
- Input: (number, required) + at least one of: title?, description?, responsible_id?, group_id?{ task_id: number }
- Output:
- close_tasktask_id
- Input: (number, required){ task_id: number }
- Output:
- reopen_tasktask_id
- Input: (number, required){ task_id: number }
- Output:
- list_tasksresponsible_id?
- Input: (number), group_id? (number), start? (number), limit? (number){ tasks: [{ id, title, status }] }
- Output:
- get_task_fields{}
- Input: { fields: { [field: string]: object } }
- Output:
- list_task_historytask_id
- Input: (number, required), filter? (object), order? (object){ list: [ { id, createdDate, field, value, user } ] }
- Output:
- create_groupname
- Input: (string, required), description? (string){ group_id: number }
- Output:
- list_groupslimit?
- Input: (number){ groups: [{ id, name }] }
- Output:
- list_usersfilter?
- Input:
- (object)sort?
- (string)order?
- ("ASC" | "DESC")admin_mode?
- (boolean)start?
- (number)limit?
- (number){ users: [{ id, name, last_name, email?, active }] }
- Output: filter
- Note: supports Bitrix24 user.get filters (including prefixes like >=, %, @, etc.).start
controls paging (Bitrix returns 50 records per page); limit is a local slice after the API response.
- get_user_fields{}
- Input: { fields: { [field: string]: string } }
- Output:
- get_current_user{}
- Input: { user: { id, name, last_name, email?, active } }
- Output:
Clean architecture layers:
- mcp/ — protocol, transport, serveradapters/
- — MCP tools mapping to domaindomain/
- — entities, services, portsinfrastructure/
- — Bitrix24 REST client
- Input validation uses zod.tsc
- Transport: STDIO only.
- Build: (npm run build).
See CONTRIBUTING.md` for guidelines.