Skip to main content
Glama

Bitrix24 MCP Server

License: MIT Python Version Code style: ruff

Интеграционный сервер, использующий Model Context Protocol (MCP), для предоставления доступа к данным и функциям Bitrix24 для больших языковых моделей (LLM) и других AI-агентов. LLM могут безопасно взаимодействовать с вашими CRM-данными (контакты, сделки), используя предопределенные "инструменты" и "ресурсы", предоставляемые этим сервером через стандартный протокол MCP.

Ключевые Особенности

  • Интеграция с Bitrix24: Доступ к контактам и сделкам через Bitrix24 REST API.

  • Model Context Protocol (MCP): Предоставляет стандартизированный интерфейс для взаимодействия с AI-моделями.

    • Инструменты (Tools): Функции, которые AI может вызывать (например, поиск контактов, обновление стадии сделки).

    • Ресурсы (Resources): Данные, которые AI может запрашивать (например, информация о конкретном контакте или список активных сделок).

    • Промпты (Prompts): Шаблоны для генерации запросов к AI.

  • Асинхронность: Построен на asyncio для эффективной обработки запросов.

  • Внедрение Зависимостей: Использует wireup для управления зависимостями.

  • Конфигурируемость: Настройки управляются через переменные окружения.

  • Структурированное Логирование: Использует structlog для удобного отслеживания событий.

  • Расширяемость: Легко добавлять поддержку новых сущностей Bitrix24 или новые MCP инструменты/ресурсы.

Технологии

  • Python 3.12+

  • Fast-Bitrix24: Клиент для Bitrix24 REST API

  • MCP (Model Context Protocol): Фреймворк для создания MCP серверов (fastmcp)

  • Pydantic & Pydantic-Settings: Валидация данных и управление настройками

  • Structlog: Структурированное логирование

  • Ruff: Линтер и форматер кода

  • Asyncio

  • Dishka: CLI-утилиты для управления зависимостями и скриптами

Начало Работы

Предварительные Требования

  1. Python: Версия 3.12 или выше.

  2. Bitrix24:

    • Аккаунт Bitrix24 (облачный или коробочный).

    • Входящий вебхук (Webhook) с необходимыми правами (как минимум crm). Как создать вебхук.

Конфигурация

Серверу требуется задать переменную окружения BITRIX_WEBHOOK_URL:

export BITRIX_WEBHOOK_URL="https://your-domain.bitrix24.ru/rest/1/yoursecretcode/"

Запуск Сервера

запустите MCP сервер:

uvx bitrix24-mcp

Вы увидите логи в консоли, включая информацию о зарегистрированных MCP инструментах и ресурсах.

Запуск Тестового Скрипта

Для проверки базовой работоспособности интеграции с Bitrix24 API можно запустить тестовый скрипт:

python test_services.py

Скрипт выполнит несколько запросов к API Bitrix24 (получение списка контактов, получение контакта по ID, и т.д.) и выведет результаты.

Использование

Запущенный MCP сервер готов принимать запросы от MCP-совместимых клиентов или LLM.

Доступные MCP Инструменты (Tools)

Инструменты - это функции, которые AI может попросить выполнить.

  • tool://get_contact

    • Описание: Получение информации о контакте по ID.

    • Параметры: contact_id: int

    • Возвращает: JSON-строка с данными контакта.

  • tool://search_contacts

    • Описание: Поиск контактов по имени, телефону или email.

    • Параметры: query: str, search_type: str = "name" (name, phone, email), limit: int = 10

    • Возвращает: JSON-строка со списком найденных контактов.

  • tool://list_contacts

    • Описание: Получение списка контактов с возможностью фильтрации.

    • Параметры: limit: int = 50, company_id: int | None = None

    • Возвращает: JSON-строка со списком контактов.

  • tool://get_deal

    • Описание: Получение информации о сделке по ID.

    • Параметры: deal_id: int

    • Возвращает: JSON-строка с данными сделки.

  • tool://list_deals

    • Описание: Получение списка сделок с возможностью фильтрации.

    • Параметры: active_only: bool = False, contact_id: int | None = None, company_id: int | None = None, limit: int = 50

    • Возвращает: JSON-строка со списком сделок.

  • tool://update_deal_stage

    • Описание: Обновление стадии сделки.

    • Параметры: deal_id: int, stage_id: str (например, C14:WON)

    • Возвращает: JSON-строка с результатом операции ({"success": true/false, "message": "..."}).

Доступные MCP Ресурсы (Resources)

Ресурсы - это данные, которые AI может запросить по URI.

  • contact://{contact_id}

    • Описание: Получение данных контакта по ID в читаемом формате.

    • Пример: contact://123

    • Возвращает: Текстовое представление данных контакта.

  • deal://{deal_id}

    • Описание: Получение данных сделки по ID в читаемом формате.

    • Пример: deal://456

    • Возвращает: Текстовое представление данных сделки.

  • deals://active

    • Описание: Получение списка активных сделок в читаемом формате.

    • Пример: deals://active

    • Возвращает: Текстовое представление списка активных сделок.

Разработка и Участие

Мы приветствуем контрибьюторов!

Настройка Среды Разработки

  1. Выполните шаги из раздела Установка.

  2. Установите зависимости для разработки:

    uv sync

Качество Кода

  • Форматирование и Линтинг: Используется ruff. Перед коммитом рекомендуется запускать:

    ruff format .
    ruff check . --fix
  • Типизация: Проект использует строгую типизацию Python.

Процесс Внесения Изменений

  1. Создайте Issue: Опишите проблему или предлагаемое улучшение в разделе Issues репозитория.

  2. Форкните репозиторий: Создайте свою копию проекта.

  3. Создайте ветку: git checkout -b feature/your-feature-name или bugfix/issue-number.

  4. Внесите изменения: Напишите код и тесты (если применимо).

  5. Проверьте качество кода: Запустите ruff.

  6. Сделайте коммит: git commit -m "feat: Add support for Bitrix24 Leads" (следуйте Conventional Commits если возможно).

  7. Отправьте изменения в ваш форк: git push origin feature/your-feature-name.

  8. Создайте Pull Request: Откройте Pull Request из вашей ветки в main ветку основного репозитория. Опишите внесенные изменения и свяжите PR с созданным Issue.

Лицензия

Этот проект лицензирован под лицензией MIT — см. файл LICENSE для подробностей.

Available Tools

6 tools
get_contactC

Получение информации о контакте по ID

ParametersJSON Schema
NameRequiredDescriptionDefault
contact_idYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It implies a read operation ('Получение информации'), but doesn't disclose if it requires authentication, rate limits, error handling (e.g., for invalid IDs), or what the output format might be (e.g., JSON structure). For a tool with zero annotation coverage, this is inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence in Russian that directly states the tool's purpose. It's front-loaded with no wasted words, making it easy to parse quickly. Every part of the sentence earns its place by specifying the action and key constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter, no output schema, no annotations), the description is incomplete. It doesn't cover behavioral aspects like authentication needs or error cases, and with 0% schema coverage, parameter details are lacking. For even a basic read tool, more context on usage and output would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate but adds little. It mentions 'по ID' ('by ID'), which hints at the 'contact_id' parameter, but doesn't explain its semantics (e.g., that it's an integer, where to find valid IDs, or format constraints). With 1 parameter undocumented in both schema and description, value beyond schema is minimal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Получение информации' - 'Getting information') and resource ('о контакте' - 'about a contact'), specifying it's by ID. It distinguishes from sibling tools like 'list_contacts' (which lists multiple) and 'search_contacts' (which searches). However, it doesn't explicitly mention what specific information is retrieved, keeping it from a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid contact ID), exclusions, or compare to siblings like 'list_contacts' for bulk retrieval or 'search_contacts' for fuzzy matching. The description only states what it does, not when to choose it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dealC

Получение информации о сделке по ID

ParametersJSON Schema
NameRequiredDescriptionDefault
deal_idYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a read operation ('получение информации' - getting information), which implies it's non-destructive, but doesn't cover critical aspects like authentication requirements, error handling (e.g., what happens with invalid IDs), rate limits, or response format. The description adds minimal value beyond the basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence in Russian that directly states the purpose. It's appropriately sized for a simple tool with one parameter, with no wasted words. However, it could be more front-loaded with key details, but given its brevity, it's well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter, no output schema, no annotations), the description is incomplete. It doesn't explain what information is returned (e.g., deal details, status), error scenarios, or how it fits with siblings like 'list_deals'. For a read operation with no structured support, more context on behavior and output is needed to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds minimal meaning beyond the input schema. It mentions the parameter 'ID' (implied as 'deal_id'), but with 0% schema description coverage, the schema only defines 'deal_id' as an integer without context. The description doesn't compensate by explaining what constitutes a valid ID, format constraints, or examples. Since there's only one parameter, the baseline is slightly higher, but the lack of detail keeps it at a minimal viable level.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Получение информации о сделке по ID' (Getting information about a deal by ID) states a clear verb ('получение' - getting) and resource ('сделка' - deal), but it's vague about what specific information is retrieved. It distinguishes from siblings like 'list_deals' (which lists multiple deals) by specifying retrieval by ID, but doesn't clarify what distinguishes it from 'update_deal_stage' in terms of read vs write operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid deal ID), exclusions, or comparisons to siblings like 'list_deals' for bulk retrieval or 'update_deal_stage' for modifications. Usage is implied by the phrase 'по ID' (by ID), but no explicit context or decision criteria are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_contactsC

Получение списка контактов с возможностью фильтрации

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
company_idNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'возможностью фильтрации' (filtering capability), which hints at functionality, but doesn't describe key behaviors like pagination (implied by 'limit' parameter), default behavior, error conditions, or what the output looks like. For a list tool with 2 parameters and no annotation coverage, this is insufficient to guide the agent effectively.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence in Russian: 'Получение списка контактов с возможностью фильтрации'. It's front-loaded with the core purpose and adds a brief capability note. There's no wasted words, making it appropriately concise for a basic tool description, though it could be more informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 2 parameters with 0% schema coverage, no annotations, no output schema, and sibling tools like 'search_contacts', the description is incomplete. It doesn't explain the return format, how filtering works, or differentiate from alternatives. For a list tool with filtering parameters, this leaves significant gaps in understanding for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate. It mentions filtering capability, which loosely relates to the 'company_id' parameter, but doesn't explain what 'limit' or 'company_id' mean, their formats, or how they interact. With 2 undocumented parameters, the description adds minimal value beyond the schema, failing to clarify semantics adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the purpose as 'Получение списка контактов с возможностью фильтрации' (Getting a list of contacts with filtering capability), which is clear but vague. It specifies the verb ('Получение' - getting) and resource ('контактов' - contacts), but doesn't differentiate from sibling tools like 'search_contacts' or specify what kind of filtering is available. It's adequate but lacks specificity about scope or differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions filtering capability but doesn't specify when to use 'list_contacts' versus 'search_contacts' or other sibling tools. There's no mention of prerequisites, context, or exclusions, leaving the agent with no usage direction beyond the basic purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_dealsC

Получение списка сделок с возможностью фильтрации

ParametersJSON Schema
NameRequiredDescriptionDefault
active_onlyNo
contact_idNo
company_idNo
limitNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'списка сделок' (list of deals) and filtering capability, but doesn't describe what the tool returns (format, fields), whether it's paginated, rate limits, authentication requirements, or error conditions. For a list operation with 4 parameters, this is insufficient behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core purpose. There's no wasted verbiage or redundancy. However, it could be more front-loaded with key details about the tool's behavior and usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters with 0% schema coverage, no annotations, no output schema, and sibling tools that could cause confusion, the description is incomplete. It doesn't explain what a 'deal' represents in this context, what fields are returned, how filtering works, or how this differs from related tools. The description fails to provide adequate context for proper tool selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. The description mentions 'возможностью фильтрации' (filtering capability) which hints at parameters like contact_id and company_id, but doesn't explain what these parameters do, their relationships, or the meaning of 'active_only' and 'limit'. With 4 undocumented parameters, the description adds minimal semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Получение списка сделок с возможностью фильтрации' (Getting a list of deals with filtering capability). It specifies the verb ('Получение' - getting) and resource ('списка сделок' - list of deals), and mentions filtering capability. However, it doesn't explicitly differentiate from sibling tools like 'get_deal' (singular) or 'search_contacts' (different resource).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions filtering capability but doesn't specify when to use 'list_deals' versus 'get_deal' (for single deal) or 'search_contacts' (for contacts). There's no mention of prerequisites, typical use cases, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_contactsC

Поиск контактов по имени, телефону или email

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
search_typeNoname
limitNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the search functionality but doesn't cover critical aspects like whether this is a read-only operation, potential rate limits, authentication requirements, or the format of search results (e.g., partial matches, case sensitivity). This leaves significant gaps for a tool with three parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence in Russian that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (3 parameters, no annotations, no output schema), the description is incomplete. It lacks details on behavioral traits, parameter usage beyond basic semantics, and expected output format. For a search tool with multiple parameters, this minimal description doesn't provide enough context for reliable agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema provides no parameter details. The description mentions searchable fields (name, phone, email), which partially explains the 'query' parameter's semantics but doesn't address 'search_type' (e.g., what values it accepts beyond the default 'name') or 'limit' (e.g., max value, pagination implications). It adds some value but doesn't fully compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as searching contacts by name, phone, or email, which is specific (verb+resource+searchable fields). However, it doesn't explicitly differentiate from sibling tools like 'list_contacts' or 'get_contact', which likely have different functions (e.g., listing all contacts vs. retrieving a specific contact by ID).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'list_contacts' or 'get_contact'. It lacks context about scenarios where search is preferred over listing or direct retrieval, and offers no exclusions or prerequisites for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_deal_stageD

Обновление стадии сделки

ParametersJSON Schema
NameRequiredDescriptionDefault
deal_idYes
stage_idYes

TDQS

D1.5/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states the action ('update deal stage') without any information about permissions required, whether the operation is destructive, what happens to the deal data, error conditions, or response format. For a mutation tool with zero annotation coverage, this lack of behavioral context is a critical gap that leaves the agent uninformed about risks and outcomes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—a single phrase in Russian. While this avoids unnecessary verbosity, it's under-specified rather than efficiently informative. The structure is simple but lacks the front-loaded clarity needed for an AI agent to quickly grasp the tool's purpose and usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a mutation operation with two required parameters), the absence of annotations, 0% schema description coverage, and no output schema, the description is completely inadequate. It fails to explain what the tool does beyond its name, provides no behavioral context, and offers no parameter semantics. This leaves the agent with insufficient information to use the tool effectively or safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, meaning neither parameter ('deal_id' or 'stage_id') has any documentation in the schema. The description provides no additional information about what these parameters mean, their expected formats, valid values, or how they interact. With two required parameters and no guidance in either the schema or description, the agent cannot understand how to invoke the tool correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Обновление стадии сделки' (Update deal stage) is a tautology that essentially restates the tool name 'update_deal_stage' in Russian. While it identifies the verb ('update') and resource ('deal stage'), it doesn't provide any specific details about what this operation entails or how it differs from other deal-related tools like 'get_deal' or 'list_deals'. The description is minimal and doesn't add meaningful differentiation from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There are no mentions of prerequisites, conditions, or comparisons to sibling tools like 'get_deal' or 'list_deals'. Without any context about when this tool is appropriate or what it accomplishes that other tools don't, the agent has no basis for selecting it correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv1.0.1
    • First observedget_contact
    • First observedget_deal
    • First observedlist_contacts
    • First observedlist_deals
    • First observedsearch_contacts
    • First observedupdate_deal_stage

TDQS

C2.8/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. Tools target specific resources (contacts vs. deals) and actions (get, list, search, update), making misselection unlikely. For example, get_contact and search_contacts serve different retrieval needs, while update_deal_stage is the only modification tool.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case throughout. The naming is predictable: get_contact, get_deal, list_contacts, list_deals, search_contacts, and update_deal_stage. This uniformity aids agent understanding and tool selection.

Tool Count4/5

Six tools is reasonable for a CRM-focused server, but it feels slightly under-scoped. While core read operations are covered, there are no create, update (except for deal stage), or delete tools, which might limit functionality. However, the count itself is well within typical ranges.

Completeness3/5

There are notable gaps in the tool surface for a CRM domain. It provides good read/search coverage for contacts and deals, but lacks create, update (beyond deal stage), and delete operations. This could cause agent failures when full CRUD workflows are needed, though basic retrieval tasks are supported.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Latest Blog Posts

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/averagedigital/mcpforbitrix'

If you have feedback or need assistance with the MCP directory API, please join our Discord server