mcp-bitrix24
v0.0.5
Published
MCP server for Bitrix24 Tasks and Groups
Maintainers
Readme
mcp-bitrix24
MCP server for Bitrix24 Tasks, Workgroups, and Users. Implements MCP/JSON-RPC over STDIO.
Features
- Tasks: create, update, close, reopen, list
- Workgroups: create, list
- Users: list, current user, available fields
- Task fields: available fields + validation for
create_task.fields
Requirements
- Node.js >= 18
- Bitrix24 webhook URL
Install / Build
npm install
npm run buildRun via npm:
npx mcp-bitrix24Configuration
Set the Bitrix24 webhook URL via environment variable:
BITRIX24_WEBHOOK_URL=https://<your-domain>/rest/<user_id>/<webhook>/Example Codex MCP config:
[mcp_servers.bitrix24]
command = "npx"
args = ["-y", "mcp-bitrix24"]
[mcp_servers.bitrix24.env]
BITRIX24_WEBHOOK_URL = "https://<your-domain>/rest/<user_id>/<webhook>/"Tools
Tasks
create_task- Input:
title(string, required),description?(string),responsible_id?(number),group_id?(number),fields?(object) - Output:
{ task_id: number } - Note: if
fieldsis provided, keys are validated againstget_task_fields.
- Input:
update_task- Input:
task_id(number, required) + at least one of:title?,description?,responsible_id?,group_id? - Output:
{ task_id: number }
- Input:
close_task- Input:
task_id(number, required) - Output:
{ task_id: number }
- Input:
reopen_task- Input:
task_id(number, required) - Output:
{ task_id: number }
- Input:
list_tasks- Input:
responsible_id?(number),group_id?(number),start?(number),limit?(number) - Output:
{ tasks: [{ id, title, status }] }
- Input:
get_task_fields- Input:
{} - Output:
{ fields: { [field: string]: object } }
- Input:
list_task_history- Input:
task_id(number, required),filter?(object),order?(object) - Output:
{ list: [ { id, createdDate, field, value, user } ] }
- Input:
Workgroups
create_group- Input:
name(string, required),description?(string) - Output:
{ group_id: number }
- Input:
list_groups- Input:
limit?(number) - Output:
{ groups: [{ id, name }] }
- Input:
Users
list_users- Input:
filter?(object)sort?(string)order?("ASC" | "DESC")admin_mode?(boolean)start?(number)limit?(number)
- Output:
{ users: [{ id, name, last_name, email?, active }] } - Note:
filtersupports Bitrix24user.getfilters (including prefixes like>=,%,@, etc.).startcontrols paging (Bitrix returns 50 records per page);limitis a local slice after the API response.
- Input:
get_user_fields- Input:
{} - Output:
{ fields: { [field: string]: string } }
- Input:
get_current_user- Input:
{} - Output:
{ user: { id, name, last_name, email?, active } }
- Input:
Architecture
Clean architecture layers:
mcp/— protocol, transport, serveradapters/— MCP tools mapping to domaindomain/— entities, services, portsinfrastructure/— Bitrix24 REST client
Development Notes
- Input validation uses
zod. - Transport: STDIO only.
- Build:
tsc(npm run build).
Contributing
See CONTRIBUTING.md for guidelines.
