Skip to main content

MCP сервер для взаимодействия с Bitrix24 rest api на основе fast-bitrix24

Project description

MseeP.ai Security Assessment Badge

Verified on MseeP PyPI - Format PyPI - Status

PyPI Downloads

Поддержка и развитие

Проект активно развивается. Вопросы и предложения по улучшению приветствуются через Issues.

MCP сервер для взаимодействия с Bitrix24 rest api на основе fast-bitrix24

Сервер находится в стадии разработки и тестирования. Рекомендуется использовать только в локальной частной сети.

На данный момент сервер поддерживает следsующие сущности:

  • сделки

    • list_deal - Список сделок по фильтрам
  • пользовательские поля

    • get_all_info_fields - Получение всех ID, названий и значений полей сделки, контакта, компании, задач, лида
  • контакты

    • list_contact - Список контактов по фильтрам
  • компании

    • list_company - Список компаний по фильтрам
  • пользователи

    • list_user - Список пользователей по фильтрам
  • лиды

    • list_lead - Список лидов по фильтрам
  • задачи

    • list_task - Список задач по фильтрам
    • get_task_time_tracking - Получение времени выполнения задачи по id
    • get_task - Получение задачи по id
    • get_task_comments_list - Получение списка комментариев к задаче по id
    • get_task_checklist_items - Получение списка пунктов чеклиста задачи по id
  • хелпер

    • export_entities_to_json - Экспорт элементов сущности в JSON (сделки, контакты, компании, лиды)
    • analyze_export_file - Анализ экспортированных данных (сумма, количество, среднее значение, минимальное значение, максимальное значение)
    • analyze_tasks_export - Анализ экспортированных данных для задач (сумма, количество, среднее значение, минимальное значение, максимальное значение)
    • export_task_fields_to_json - Экспорт описания полей задач
    • datetime_now - Получение текущей даты и времени в московской зоне

поддержка человеческого названия полей даже для полей типа список например:

  • какая сумма сделок где поле 'этаж доставки' равно 'в подвал'?
  • какая сумма сделок которые нужно доставить в подвал
  • как называется поле у сделки с id UF_CRM_1749724770090?
  • у каких пользователях есть просроченные задачи?

Установка и запуск сервера

установите переменные окружения из файла .env.example

cp .env.example .env

установите зависимости

uv sync

или установите пакет

uv add fast-bitrix24-mcp

создайте файл для запуска сервера

from fast_bitrix24_mcp.main import mcp

if __name__ == "__main__":  
    mcp.run(transport="http", host="0.0.0.0", port=8000)
    # mcp.run(transport="streamable-http", host="127.0.0.1", port=9000)

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

uv run main.py

Авторизация запросов

Сервер принимает только авторизованные запросы. Токен берётся из переменной окружения AUTH_TOKEN (файл .env).

  1. Установите токен в .env:
AUTH_TOKEN=ваш_секретный_токен
  1. Пример авторизованного запроса к HTTP MCP эндпоинту (по умолчанию путь /mcp):
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AUTH_TOKEN" \
  http://localhost:8000/mcp \
  

inspector

ui для тестирования сервера

npx @modelcontextprotocol/inspector

Пример использования в langchain

from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
from dotenv import load_dotenv
from pprint import pprint
load_dotenv()

client = MultiServerMCPClient(
    {
        
        "bitrix24-main": {
            "url": "http://localhost:8000/mcp",
            "transport": "http",
            "headers": {
                "Authorization": f"Bearer {os.getenv('AUTH_TOKEN')}"
            }
        },

    }
)
async def main():
    tools = await client.get_tools()
  
    promts = await client.get_prompt('bitrix24-main', 'main_prompt')
    promts=promts[0].content    
    # agent = create_react_agent("openai:gpt-4.1-nano-2025-04-14", tools, prompt=promt)
    agent = create_react_agent("openai:gpt-4.1-nano-2025-04-14", tools, prompt=promts, debug=True)
    # math_response = await agent.ainvoke({"messages": "сколько сделок с названием Обновленная тестовая сделка ?"})
    # math_response = await agent.ainvoke({"messages": "как называется поле у сделки с id UF_CRM_1749724770090?"})
    # math_response = await agent.ainvoke({"messages": "какая сумма сделок где поле 'этаж доставки' равно 'в подвал'"})
    # math_response = await agent.ainvoke({"messages": "какая сумма сделок у которых этаж доставки 'в подвал'?"})
    math_response = await agent.ainvoke({"messages": "покажи статистику по сделкам за сегодня и позавчера"})


    token=0
    for message in math_response["messages"]:
        print(message.content + "\n\n")
        
    # pprint(math_response)
    token=math_response["messages"][-1].usage_metadata['total_tokens']
    print(f'token: {token}')
    
        

    while True:
        message = input("Введите сообщение: ")
        math_response["messages"].append({"role": "user", "content": message})
        math_response = await agent.ainvoke(math_response)
        for message in math_response["messages"]:
            print(message.content + "\n\n")

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())

)

пример главного промта для взаимодействия с сервером

сначала нужно получить все поля сущности чтобы узнать какие поля иммел в виду пользователь используй get_all_info_fields entity: 'deal' | 'contact' | 'company' | 'user' | 'task' | 'lead' | 'all' сначала нужно получить все поля сущности используй fields_get_all_info_fields после нужно получить список элементов сущности используй export_entities_to_json entity: 'deal' | 'contact' | 'company' | 'user' | 'task' | 'lead' этот метод создаст файл в котором будет список элементов сущности далее можно анализировать эти данные используй analyze_export_file если нужно узнать текущую дату и время в московской зоне используй datetime_now

при работе с задачами нужно сначала получить описания полей задач используй export_task_fields_to_json потом все как и с остальными сущностями

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

fast_bitrix24_mcp-1.0.4.tar.gz (25.5 kB view details)

Uploaded Source

Built Distribution

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

fast_bitrix24_mcp-1.0.4-py3-none-any.whl (30.9 kB view details)

Uploaded Python 3

File details

Details for the file fast_bitrix24_mcp-1.0.4.tar.gz.

File metadata

  • Download URL: fast_bitrix24_mcp-1.0.4.tar.gz
  • Upload date:
  • Size: 25.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fast_bitrix24_mcp-1.0.4.tar.gz
Algorithm Hash digest
SHA256 629daad8d0cb8005f19d3932dbe9621f36c64d88384dbd6a3eb58b44a1af19ea
MD5 c4d21b393e18fea6b84488b0fa6192c5
BLAKE2b-256 80d4eb54501cb82ec2028671ae399ce5855da22ce6e0c35470f3ca5b7eabf2e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for fast_bitrix24_mcp-1.0.4.tar.gz:

Publisher: python-publish.yml on darkClaw921/fast-bitrix24-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fast_bitrix24_mcp-1.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for fast_bitrix24_mcp-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 8f432972b1271d372abb776aa70547c9a0b926171d47d28cc3599b8452259ad6
MD5 97bde1077f0579fc56969928e31fe689
BLAKE2b-256 f0074ca3572e16fd35e7aa703958a5c0285eb75b5ff0b476c1e6c5aa628e6e6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for fast_bitrix24_mcp-1.0.4-py3-none-any.whl:

Publisher: python-publish.yml on darkClaw921/fast-bitrix24-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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