@x0333/bitrix24-mcp-server 2.4.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,15 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
5
2
  import axios from "axios";
3
+ import { FastMCP } from "fastmcp";
6
4
  import { createRequire } from "node:module";
7
- /**
8
- * Bitrix24 MCP Server
9
- *
10
- * This server implements the Model Context Protocol (MCP) to provide
11
- * Bitrix24 integration for AI agents.
12
- */
5
+ import { z } from "zod";
13
6
  const B24_BASE = process.env.B24_BASE;
14
7
  const require = createRequire(import.meta.url);
15
8
  const packageJson = require("../package.json");
@@ -20,7 +13,7 @@ if (!B24_BASE) {
20
13
  }
21
14
  function bitrixPortalUrlFromBase(base) {
22
15
  try {
23
- const u = new URL(String(base).trim());
16
+ const u = new URL(base.trim());
24
17
  if (!u.host)
25
18
  return null;
26
19
  return `${u.protocol}//${u.host}`;
@@ -37,16 +30,15 @@ if (!B24_PORTAL_URL) {
37
30
  const taskViewUrlPrefix = `${B24_PORTAL_URL}/company/personal/user/0/tasks/task/view/`;
38
31
  const taskPortalLinkHowto = `When the user needs a link to a task (or to paste one), use ${taskViewUrlPrefix}<task-id>/ — substitute only <task-id> with the numeric task ID from the API. Example: ${taskViewUrlPrefix}9483/`;
39
32
  const mcpInstructions = `Bitrix24 address: ${B24_PORTAL_URL}. ${taskPortalLinkHowto}`;
40
- const server = new Server({
41
- name: "bitrix24-mcp-server",
42
- version: packageJson.version,
43
- }, {
44
- capabilities: {
45
- tools: {},
46
- },
47
- instructions: mcpInstructions,
48
- });
49
33
  const bitrixBaseUrl = B24_BASE.replace(/\/$/, "");
34
+ const IM_MESSAGES_LIMIT_MAX = 50;
35
+ const stderrLogger = {
36
+ debug: (...args) => console.error(...args),
37
+ error: (...args) => console.error(...args),
38
+ info: (...args) => console.error(...args),
39
+ log: (...args) => console.error(...args),
40
+ warn: (...args) => console.error(...args),
41
+ };
50
42
  function asObject(value) {
51
43
  return value !== null && typeof value === "object" && !Array.isArray(value)
52
44
  ? value
@@ -65,19 +57,11 @@ function positiveNumber(value, fieldName) {
65
57
  }
66
58
  return numberValue;
67
59
  }
68
- function optionalString(value) {
69
- return typeof value === "string" && value.trim() !== "" ? value : null;
70
- }
71
- function stringArrayOrDefault(value, fallback) {
72
- return Array.isArray(value) && value.every((item) => typeof item === "string")
73
- ? value
74
- : fallback;
75
- }
76
- function requestArgs(args) {
77
- return asObject(args) ?? {};
60
+ function jsonText(data) {
61
+ return {
62
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
63
+ };
78
64
  }
79
- // If B24_BASE is legacy .../rest/{user}/{webhook}/ (without /api/), new task fields
80
- // like chatId are returned from .../rest/api/{user}/{webhook}/ only.
81
65
  function bitrixRestApiBaseFromLegacy() {
82
66
  const b = bitrixBaseUrl;
83
67
  if (/\/rest\/api\//.test(b))
@@ -103,7 +87,6 @@ async function callBitrix(method, body, baseUrl = bitrixBaseUrl) {
103
87
  throw new Error(msg);
104
88
  }
105
89
  }
106
- const IM_MESSAGES_LIMIT_MAX = 50;
107
90
  function pickTaskItem(taskGetResult) {
108
91
  const result = asObject(taskGetResult.result);
109
92
  if (!result)
@@ -146,283 +129,198 @@ function throwIfBitrixError(data, context) {
146
129
  const desc = data.error_description != null ? String(data.error_description) : "";
147
130
  throw new Error(`${context}: ${code}${desc ? ` — ${desc}` : ""}`);
148
131
  }
149
- /**
150
- * Define available tools
151
- */
152
- server.setRequestHandler(ListToolsRequestSchema, async () => {
153
- return {
154
- tools: [
155
- {
156
- name: "get_profile",
157
- description: "Fetch current user profile information from Bitrix24",
158
- inputSchema: {
159
- type: "object",
160
- properties: {},
161
- },
162
- },
163
- {
164
- name: "get_task",
165
- description: "Retrieve task details by ID from Bitrix24. " +
166
- taskPortalLinkHowto +
167
- " The tool response JSON includes agent_instructions with the same rule plus a direct link for the requested task id.",
168
- inputSchema: {
169
- type: "object",
170
- properties: {
171
- id: { type: "number", description: "The unique ID of the task" },
172
- select: {
173
- type: "array",
174
- items: { type: "string" },
175
- description: "Fields to return (default: ['*'])"
176
- },
177
- },
178
- required: ["id"],
179
- },
180
- },
181
- {
182
- name: "search_tasks",
183
- description: "Search tasks in Bitrix24: by title substring (%TITLE), by Kanban stage id (filter STAGE_ID), or both.",
184
- inputSchema: {
185
- type: "object",
186
- properties: {
187
- title: { type: "string", description: "Substring of the task title to search for" },
188
- stage_id: {
189
- type: "number",
190
- description: "Kanban stage ID (tasks.task.list filter STAGE_ID)",
191
- },
192
- order: { type: "string", description: "Field to sort by (default: 'ID')" },
193
- dir: { type: "string", enum: ["asc", "desc"], description: "Sort direction (default: 'desc')" },
194
- start: { type: "number", description: "Pagination offset (default: 0)" },
195
- },
196
- },
197
- },
198
- {
199
- name: "search_groups",
200
- description: "Search for workgroups or projects by name in Bitrix24",
201
- inputSchema: {
202
- type: "object",
203
- properties: {
204
- name: { type: "string", description: "Substring of the group name to search for" },
205
- },
206
- required: ["name"],
207
- },
208
- },
209
- {
210
- name: "get_group",
211
- description: "Retrieve detailed information about a workgroup or project by ID",
212
- inputSchema: {
213
- type: "object",
214
- properties: {
215
- id: { type: "number", description: "The unique ID of the group" },
216
- },
217
- required: ["id"],
218
- },
219
- },
220
- {
221
- name: "get_kanban_stages_by_group",
222
- description: "Get task Kanban stages for a workgroup or project (task.stages.get). entityId is the group ID.",
223
- inputSchema: {
224
- type: "object",
225
- properties: {
226
- id: { type: "number", description: "The unique ID of the group (entityId for task kanban)" },
227
- },
228
- required: ["id"],
229
- },
230
- },
231
- {
232
- name: "get_task_comments",
233
- description: "Comments for a task on the new task card (module tasks 25.700.0+): messages come from the task chat via im.dialog.messages.get, newest first when no cursors are passed. " +
234
- "Arrays are trimmed: messages only id, author_id, text, date; users only id, name, work_position, email. " +
235
- "author_id 0 means system/service chat messages (stage changes, time tracking, joins, etc.) — not a user comment; do not expect a matching row in users. " +
236
- "For author_id > 0, match message.author_id to users[].id to resolve author name. " +
237
- "ИИ: author_id 0 = системные сообщения чата (не комментарий человека), в users не сопоставлять; для author_id > 0 сопоставляй с users[].id. В теле ответа см. agent_instructions. " +
238
- "Pagination: limit 1–50 (default 20). first_id = Bitrix FIRST_ID (next page of older messages). last_id = Bitrix LAST_ID (messages newer than id). Do not send both first_id and last_id.",
239
- inputSchema: {
240
- type: "object",
241
- properties: {
242
- task_id: { type: "number", description: "Task ID" },
243
- limit: {
244
- type: "number",
245
- description: `Page size (1–${IM_MESSAGES_LIMIT_MAX}, default 20). Bitrix im.dialog.messages.get LIMIT`,
246
- },
247
- first_id: {
248
- type: "number",
249
- description: "Optional. Bitrix FIRST_ID: load messages older than this id (next page toward history). Typically set to the smallest message id from the previous response.",
250
- },
251
- last_id: {
252
- type: "number",
253
- description: "Optional. Bitrix LAST_ID: load messages newer than this id. Do not combine with first_id.",
254
- },
255
- },
256
- required: ["task_id"],
257
- },
258
- },
259
- ],
260
- };
132
+ const server = new FastMCP({
133
+ instructions: mcpInstructions,
134
+ logger: stderrLogger,
135
+ name: "bitrix24-mcp-server",
136
+ version: packageJson.version,
261
137
  });
262
- /**
263
- * Handle tool calls
264
- */
265
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
266
- const { name } = request.params;
267
- const args = requestArgs(request.params.arguments);
268
- try {
269
- switch (name) {
270
- case "get_profile": {
271
- const data = await callBitrix("profile", {});
272
- return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
273
- }
274
- case "get_task": {
275
- const taskId = positiveNumber(args.id, "get_task: id");
276
- const body = { taskId, select: stringArrayOrDefault(args.select, ["*"]) };
277
- const data = await callBitrix("tasks.task.get", body);
278
- throwIfBitrixError(data, "tasks.task.get");
279
- const payload = {
280
- ...data,
281
- agent_instructions: `${taskPortalLinkHowto} For this task: ${taskViewUrlPrefix}${taskId}/`,
282
- };
283
- return { content: [{ type: "text", text: JSON.stringify(payload, null, 2) }] };
284
- }
285
- case "search_tasks": {
286
- const title = optionalString(args.title);
287
- const stageId = optionalNumber(args.stage_id);
288
- const hasStageInput = args.stage_id !== undefined && args.stage_id !== null;
289
- const hasTitle = title !== null;
290
- const hasStage = hasStageInput && stageId !== null;
291
- if (hasStageInput && stageId === null) {
292
- throw new Error("search_tasks: stage_id must be a number");
293
- }
294
- if (!hasTitle && !hasStage) {
295
- throw new Error("search_tasks requires at least one of: title, stage_id");
296
- }
297
- const filter = {};
298
- if (hasTitle) {
299
- filter["%TITLE"] = title;
300
- }
301
- if (hasStage) {
302
- filter.STAGE_ID = stageId;
303
- }
304
- const orderField = optionalString(args.order) ?? "ID";
305
- const direction = optionalString(args.dir)?.toLowerCase() === "asc" ? "ASC" : "DESC";
306
- const start = optionalNumber(args.start) ?? 0;
307
- const body = {
308
- order: { [orderField]: direction },
309
- filter,
310
- select: ["ID", "TITLE", "STATUS", "RESPONSIBLE_ID", "GROUP_ID", "STAGE_ID"],
311
- start,
312
- };
313
- const data = await callBitrix("tasks.task.list", body);
314
- throwIfBitrixError(data, "tasks.task.list");
315
- return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
316
- }
317
- case "search_groups": {
318
- const name = optionalString(args.name);
319
- if (!name) {
320
- throw new Error("search_groups: name must be a non-empty string");
321
- }
322
- const body = {
323
- FILTER: { "%NAME": name },
324
- };
325
- const data = await callBitrix("sonet_group.get.json", body);
326
- throwIfBitrixError(data, "sonet_group.get.json");
327
- return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
328
- }
329
- case "get_group": {
330
- const body = { FILTER: { ID: positiveNumber(args.id, "get_group: id") } };
331
- const data = await callBitrix("sonet_group.get.json", body);
332
- throwIfBitrixError(data, "sonet_group.get.json");
333
- return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
334
- }
335
- case "get_kanban_stages_by_group": {
336
- const body = { entityId: positiveNumber(args.id, "get_kanban_stages_by_group: id") };
337
- const data = await callBitrix("task.stages.get", body);
338
- throwIfBitrixError(data, "task.stages.get");
339
- return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
340
- }
341
- case "get_task_comments": {
342
- const taskId = positiveNumber(args.task_id, "get_task_comments: task_id");
343
- const hasFirst = args.first_id !== undefined && args.first_id !== null;
344
- const hasLast = args.last_id !== undefined && args.last_id !== null;
345
- if (hasFirst && hasLast) {
346
- throw new Error("get_task_comments: pass only one of first_id or last_id, not both");
347
- }
348
- let limit = args.limit === undefined || args.limit === null ? 20 : Number(args.limit);
349
- if (!Number.isFinite(limit))
350
- limit = 20;
351
- limit = Math.min(IM_MESSAGES_LIMIT_MAX, Math.max(1, Math.floor(limit)));
352
- const taskSelect = ["id", "chatId", "chat.id"];
353
- let taskRaw = await callBitrix("tasks.task.get", {
354
- id: taskId,
355
- select: taskSelect,
356
- });
357
- throwIfBitrixError(taskRaw, "tasks.task.get");
358
- let item = pickTaskItem(taskRaw);
359
- let chatId = resolveTaskChatId(item);
360
- const apiBase = bitrixRestApiBaseFromLegacy();
361
- if (!chatId && apiBase) {
362
- taskRaw = await callBitrix("tasks.task.get", { id: taskId, select: taskSelect }, apiBase);
363
- throwIfBitrixError(taskRaw, "tasks.task.get (rest/api)");
364
- item = pickTaskItem(taskRaw);
365
- chatId = resolveTaskChatId(item);
366
- }
367
- if (!chatId) {
368
- throw new Error("get_task_comments: task has no chatId (new-card comments unavailable, no access, or set B24_BASE to .../rest/api/...)");
369
- }
370
- const imBody = {
371
- DIALOG_ID: `chat${chatId}`,
372
- LIMIT: limit,
373
- };
374
- if (hasFirst)
375
- imBody.FIRST_ID = positiveNumber(args.first_id, "get_task_comments: first_id");
376
- if (hasLast)
377
- imBody.LAST_ID = positiveNumber(args.last_id, "get_task_comments: last_id");
378
- const imRaw = await callBitrix("im.dialog.messages.get", imBody);
379
- throwIfBitrixError(imRaw, "im.dialog.messages.get");
380
- const imResult = asObject(imRaw.result) ?? {};
381
- const slimMessages = slimTaskChatMessages(imResult.messages);
382
- const ids = slimMessages
383
- .map((message) => optionalNumber(message.id))
384
- .filter((id) => id !== null);
385
- const minId = ids.length ? Math.min(...ids) : null;
386
- const maxId = ids.length ? Math.max(...ids) : null;
387
- const payload = {
388
- task_id: taskId,
389
- chat_id: imResult.chat_id ?? chatId,
390
- messages: slimMessages,
391
- users: slimImUsers(imResult.users),
392
- pagination: {
393
- limit,
394
- first_id_sent: hasFirst ? Number(args.first_id) : null,
395
- last_id_sent: hasLast ? Number(args.last_id) : null,
396
- suggested_next_first_id: !hasLast && slimMessages.length > 0 ? minId : null,
397
- suggested_next_last_id: !hasFirst && slimMessages.length > 0 ? maxId : null,
398
- note: "If suggested_next_first_id is set and you need older messages, call again with first_id equal to that value. If suggested_next_last_id is set and you need newer messages, call again with last_id equal to that value. Empty page or short page means no more in that direction (heuristic).",
399
- },
400
- agent_instructions: "author_id 0 — это системные сообщения чата Битрикс24 (смена стадии, учёт времени, приглашения и т.п.), а не пользовательский комментарий; не ищи для них запись в users. " +
401
- "Для author_id > 0 сопоставь author_id с users[].id и бери имя/должность из найденного user. Текст сообщения в messages[].text.",
402
- };
403
- return { content: [{ type: "text", text: JSON.stringify(payload, null, 2) }] };
404
- }
405
- default:
406
- throw new Error(`Unknown tool: ${name}`);
138
+ server.addTool({
139
+ annotations: { readOnlyHint: true, openWorldHint: true },
140
+ description: "Fetch current user profile information from Bitrix24",
141
+ name: "get_profile",
142
+ parameters: z.object({}),
143
+ execute: async () => {
144
+ const data = await callBitrix("profile", {});
145
+ throwIfBitrixError(data, "profile");
146
+ return jsonText(data);
147
+ },
148
+ });
149
+ server.addTool({
150
+ annotations: { readOnlyHint: true, openWorldHint: true },
151
+ description: "Retrieve task details by ID from Bitrix24. " +
152
+ taskPortalLinkHowto +
153
+ " The tool response JSON includes agent_instructions with the same rule plus a direct link for the requested task id.",
154
+ name: "get_task",
155
+ parameters: z.object({
156
+ id: z.number().positive().describe("The unique ID of the task"),
157
+ select: z.array(z.string()).optional().describe("Fields to return (default: ['*'])"),
158
+ }),
159
+ execute: async ({ id, select }) => {
160
+ const taskId = positiveNumber(id, "get_task: id");
161
+ const data = await callBitrix("tasks.task.get", {
162
+ taskId,
163
+ select: select ?? ["*"],
164
+ });
165
+ throwIfBitrixError(data, "tasks.task.get");
166
+ return jsonText({
167
+ ...data,
168
+ agent_instructions: `${taskPortalLinkHowto} For this task: ${taskViewUrlPrefix}${taskId}/`,
169
+ });
170
+ },
171
+ });
172
+ server.addTool({
173
+ annotations: { readOnlyHint: true, openWorldHint: true },
174
+ description: "Search tasks in Bitrix24: by title substring (%TITLE), by Kanban stage id (filter STAGE_ID), or both.",
175
+ name: "search_tasks",
176
+ parameters: z.object({
177
+ title: z.string().trim().min(1).optional().describe("Substring of the task title to search for"),
178
+ stage_id: z.number().optional().describe("Kanban stage ID (tasks.task.list filter STAGE_ID)"),
179
+ order: z.string().trim().min(1).default("ID").describe("Field to sort by (default: 'ID')"),
180
+ dir: z.enum(["asc", "desc"]).default("desc").describe("Sort direction (default: 'desc')"),
181
+ start: z.number().nonnegative().default(0).describe("Pagination offset (default: 0)"),
182
+ }),
183
+ execute: async ({ title, stage_id, order, dir, start }) => {
184
+ if (!title && stage_id === undefined) {
185
+ throw new Error("search_tasks requires at least one of: title, stage_id");
407
186
  }
408
- }
409
- catch (error) {
410
- const message = error instanceof Error ? error.message : String(error);
411
- return {
412
- content: [{ type: "text", text: `Error: ${message}` }],
413
- isError: true,
187
+ const filter = {};
188
+ if (title)
189
+ filter["%TITLE"] = title;
190
+ if (stage_id !== undefined)
191
+ filter.STAGE_ID = stage_id;
192
+ const data = await callBitrix("tasks.task.list", {
193
+ order: { [order]: dir.toUpperCase() },
194
+ filter,
195
+ select: ["ID", "TITLE", "STATUS", "RESPONSIBLE_ID", "GROUP_ID", "STAGE_ID"],
196
+ start,
197
+ });
198
+ throwIfBitrixError(data, "tasks.task.list");
199
+ return jsonText(data);
200
+ },
201
+ });
202
+ server.addTool({
203
+ annotations: { readOnlyHint: true, openWorldHint: true },
204
+ description: "Search for workgroups or projects by name in Bitrix24",
205
+ name: "search_groups",
206
+ parameters: z.object({
207
+ name: z.string().trim().min(1).describe("Substring of the group name to search for"),
208
+ }),
209
+ execute: async ({ name }) => {
210
+ const data = await callBitrix("sonet_group.get.json", {
211
+ FILTER: { "%NAME": name },
212
+ });
213
+ throwIfBitrixError(data, "sonet_group.get.json");
214
+ return jsonText(data);
215
+ },
216
+ });
217
+ server.addTool({
218
+ annotations: { readOnlyHint: true, openWorldHint: true },
219
+ description: "Retrieve detailed information about a workgroup or project by ID",
220
+ name: "get_group",
221
+ parameters: z.object({
222
+ id: z.number().positive().describe("The unique ID of the group"),
223
+ }),
224
+ execute: async ({ id }) => {
225
+ const data = await callBitrix("sonet_group.get.json", {
226
+ FILTER: { ID: positiveNumber(id, "get_group: id") },
227
+ });
228
+ throwIfBitrixError(data, "sonet_group.get.json");
229
+ return jsonText(data);
230
+ },
231
+ });
232
+ server.addTool({
233
+ annotations: { readOnlyHint: true, openWorldHint: true },
234
+ description: "Get task Kanban stages for a workgroup or project (task.stages.get). entityId is the group ID.",
235
+ name: "get_kanban_stages_by_group",
236
+ parameters: z.object({
237
+ id: z.number().positive().describe("The unique ID of the group (entityId for task kanban)"),
238
+ }),
239
+ execute: async ({ id }) => {
240
+ const data = await callBitrix("task.stages.get", {
241
+ entityId: positiveNumber(id, "get_kanban_stages_by_group: id"),
242
+ });
243
+ throwIfBitrixError(data, "task.stages.get");
244
+ return jsonText(data);
245
+ },
246
+ });
247
+ server.addTool({
248
+ annotations: { readOnlyHint: true, openWorldHint: true },
249
+ description: "Comments for a task on the new task card (module tasks 25.700.0+): messages come from the task chat via im.dialog.messages.get, newest first when no cursors are passed. " +
250
+ "Arrays are trimmed: messages only id, author_id, text, date; users only id, name, work_position, email. " +
251
+ "author_id 0 means system/service chat messages (stage changes, time tracking, joins, etc.) — not a user comment; do not expect a matching row in users. " +
252
+ "For author_id > 0, match message.author_id to users[].id to resolve author name. " +
253
+ "ИИ: author_id 0 = системные сообщения чата (не комментарий человека), в users не сопоставлять; для author_id > 0 сопоставляй с users[].id. В теле ответа см. agent_instructions. " +
254
+ "Pagination: limit 1–50 (default 20). first_id = Bitrix FIRST_ID (next page of older messages). last_id = Bitrix LAST_ID (messages newer than id). Do not send both first_id and last_id.",
255
+ name: "get_task_comments",
256
+ parameters: z.object({
257
+ task_id: z.number().positive().describe("Task ID"),
258
+ limit: z.number().int().min(1).max(IM_MESSAGES_LIMIT_MAX).default(20)
259
+ .describe(`Page size (1–${IM_MESSAGES_LIMIT_MAX}, default 20). Bitrix im.dialog.messages.get LIMIT`),
260
+ first_id: z.number().positive().optional()
261
+ .describe("Optional. Bitrix FIRST_ID: load messages older than this id (next page toward history). Typically set to the smallest message id from the previous response."),
262
+ last_id: z.number().positive().optional()
263
+ .describe("Optional. Bitrix LAST_ID: load messages newer than this id. Do not combine with first_id."),
264
+ }),
265
+ execute: async ({ task_id, limit, first_id, last_id }) => {
266
+ if (first_id !== undefined && last_id !== undefined) {
267
+ throw new Error("get_task_comments: pass only one of first_id or last_id, not both");
268
+ }
269
+ const taskId = positiveNumber(task_id, "get_task_comments: task_id");
270
+ const taskSelect = ["id", "chatId", "chat.id"];
271
+ let taskRaw = await callBitrix("tasks.task.get", {
272
+ id: taskId,
273
+ select: taskSelect,
274
+ });
275
+ throwIfBitrixError(taskRaw, "tasks.task.get");
276
+ let item = pickTaskItem(taskRaw);
277
+ let chatId = resolveTaskChatId(item);
278
+ const apiBase = bitrixRestApiBaseFromLegacy();
279
+ if (!chatId && apiBase) {
280
+ taskRaw = await callBitrix("tasks.task.get", { id: taskId, select: taskSelect }, apiBase);
281
+ throwIfBitrixError(taskRaw, "tasks.task.get (rest/api)");
282
+ item = pickTaskItem(taskRaw);
283
+ chatId = resolveTaskChatId(item);
284
+ }
285
+ if (!chatId) {
286
+ throw new Error("get_task_comments: task has no chatId (new-card comments unavailable, no access, or set B24_BASE to .../rest/api/...)");
287
+ }
288
+ const imBody = {
289
+ DIALOG_ID: `chat${chatId}`,
290
+ LIMIT: limit,
414
291
  };
415
- }
292
+ if (first_id !== undefined)
293
+ imBody.FIRST_ID = first_id;
294
+ if (last_id !== undefined)
295
+ imBody.LAST_ID = last_id;
296
+ const imRaw = await callBitrix("im.dialog.messages.get", imBody);
297
+ throwIfBitrixError(imRaw, "im.dialog.messages.get");
298
+ const imResult = asObject(imRaw.result) ?? {};
299
+ const slimMessages = slimTaskChatMessages(imResult.messages);
300
+ const ids = slimMessages
301
+ .map((message) => optionalNumber(message.id))
302
+ .filter((id) => id !== null);
303
+ const minId = ids.length ? Math.min(...ids) : null;
304
+ const maxId = ids.length ? Math.max(...ids) : null;
305
+ return jsonText({
306
+ task_id: taskId,
307
+ chat_id: imResult.chat_id ?? chatId,
308
+ messages: slimMessages,
309
+ users: slimImUsers(imResult.users),
310
+ pagination: {
311
+ limit,
312
+ first_id_sent: first_id ?? null,
313
+ last_id_sent: last_id ?? null,
314
+ suggested_next_first_id: last_id === undefined && slimMessages.length > 0 ? minId : null,
315
+ suggested_next_last_id: first_id === undefined && slimMessages.length > 0 ? maxId : null,
316
+ note: "If suggested_next_first_id is set and you need older messages, call again with first_id equal to that value. If suggested_next_last_id is set and you need newer messages, call again with last_id equal to that value. Empty page or short page means no more in that direction (heuristic).",
317
+ },
318
+ agent_instructions: "author_id 0 — это системные сообщения чата Битрикс24 (смена стадии, учёт времени, приглашения и т.п.), а не пользовательский комментарий; не ищи для них запись в users. " +
319
+ "Для author_id > 0 сопоставь author_id с users[].id и бери имя/должность из найденного user. Текст сообщения в messages[].text.",
320
+ });
321
+ },
416
322
  });
417
- /**
418
- * Start the server
419
- */
420
- async function main() {
421
- const transport = new StdioServerTransport();
422
- await server.connect(transport);
423
- console.error("Bitrix24 MCP Server running on stdio");
424
- }
425
- main().catch((error) => {
323
+ server.start({ transportType: "stdio" }).catch((error) => {
426
324
  console.error("Fatal error in main():", error);
427
325
  process.exit(1);
428
326
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@x0333/bitrix24-mcp-server",
3
- "version": "2.4.0",
3
+ "version": "2.5.1",
4
4
  "description": "Bitrix24 MCP Server for AI Agent Integration.",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
7
7
  "engines": {
8
- "node": ">=20"
8
+ "node": ">=24"
9
9
  },
10
10
  "bin": {
11
11
  "bitrix24-mcp": "dist/index.js"
@@ -17,8 +17,9 @@
17
17
  ],
18
18
  "license": "MIT",
19
19
  "dependencies": {
20
- "@modelcontextprotocol/sdk": "^1.29.0",
21
- "axios": "^1.5.0"
20
+ "axios": "^1.5.0",
21
+ "fastmcp": "^4.0.1",
22
+ "zod": "^4.4.3"
22
23
  },
23
24
  "devDependencies": {
24
25
  "@types/node": "^20.0.0",