Skip to main content
Glama
Gnidreve

Genesis-World-MCP

by Gnidreve

cas-genesisworld-mcp

npm Docker CI License: MIT

Подключите Claude, Cursor или любого MCP-совместимого AI-агента к вашей CRM CAS genesisWorld. Ищите контакты, управляйте задачами и встречами, читайте и записывайте записи — через естественный язык, без написания ни одного API-вызова.

  • 69 инструментов, включая 7 нативных флоу, которые объединяют многошаговые операции CRM (например, проверку конфликтов расписания перед бронированием встречи или проверку дубликатов перед созданием контакта) в один вызов.

  • Полный доступ на чтение и запись к задачам, контактам, встречам, документам, спискам рассылки и многому другому — плюс универсальный доступ к любому типу пользовательских объектов, определённых в вашей установке.

  • Режим только для чтения для безопасного исследовательского использования.

  • Поставляется в виде готового Docker-образа или npm-пакета.

Быстрый старт

Добавьте это в конфиг вашего MCP-клиента (например, в claude_desktop_config.json у Claude Desktop):

{
  "mcpServers": {
    "cas-genesisworld": {
      "command": "npx",
      "args": ["-y", "cas-genesis-world-mcp"],
      "env": {
        "GENESISWORLD_BASE_URL": "http://your-genesisworld-server/genesisrest.svc",
        "GENESISWORLD_PRODUCT_KEY": "your-product-key",
        "GENESISWORLD_USERNAME": "your-username",
        "GENESISWORLD_PASSWORD": "your-password"
      }
    }
  }
}

Перезапустите клиент — инструменты появятся автоматически. Попросите агента найти контакт, вывести список открытых задач или забронировать встречу — и он сделает всё остальное.

Предпочитаете постоянный, самостоятельно размещённый сервер вместо отдельного процесса на каждый клиент? См. Самостоятельное размещение с Docker ниже.

Related MCP server: Twenty CRM MCP

Что можно у него попросить

После подключения ваш агент сможет обрабатывать запросы вроде:

  • «Найди контактные данные Джейн Доу и покажи её открытые задачи.»

  • «Создай задачу на последующие действия для этого лида и привяжи её к записи контакта.»

  • «Забронируй встречу с отделом продаж на следующий вторник в 10:00 — сначала проверь календари всех на конфликты.»

  • «Проверь возможные дубликаты перед созданием нового контакта для Acme Corp.»

  • «Сформируй отчёт по этой возможности.»

На такие запросы отвечают флоу — одиночные вызовы инструментов, которые объединяют многошаговую последовательность API-запросов, которую человеку в противном случае пришлось бы писать вручную.

Инструменты и флоу

Флоу — составные действия, один вызов на каждое

Флоу

Режим

Что делает

my_open_tasks

чтение

Текущий пользователь + его список задач (окно сроков, сохранённое представление или полнотекстовый фильтр) одним вызовом

task_overview

чтение

Запись задачи + ссылки + теги, получаемые параллельно

create_task

запись

Создать задачу и при необходимости связать её с другим объектом (например, контактом)

find_contact

чтение

Поиск контакта по имени и/или номеру телефона, параллельно

contact_360

чтение

Контакт + досье коллекции + теги + ссылки, получаемые параллельно

create_address_safe

запись

Сначала проверка дубликатов — создаёт только если кандидатов не найдено

create_appointment_safe

запись

Необязательная проверка конфликтов → создание → добавление участников, одним вызовом

Чтение (39)

Инструмент

Конечная точка

smart_search

GET /v7.0/smartsearch

get_data_object

GET /v7.0/type/{dataObjectType}/{dataObjectGGUID}

get_dossier

GET /v7.0/type/{dataObjectType}/{dataObjectGGUID}/dossier/full

list_data_objects

GET /v7.0/type/{dataObjectType}/list

list_views

GET /v7.0/type/{dataObjectType}/view/list

list_data_objects_by_view

GET /v7.0/type/{dataObjectType}/view/{viewID}/list

list_available_data_object_types

GET /v7.0/user/self/dataobjecttypepermission/list

get_data_object_types_metadata

GET /v7.0/metadata

list_links

GET /v7.0/type/{dataObjectType}/{dataObjectGGUID}/link/list

list_recent_data_objects

GET /v7.0/type/{dataObjectType}/recent/list

get_available_products

GET /v7.0/type/gwopportunity/availableproducts

get_data_object_count

GET /v7.0/type/{dataObjectType}/count

get_primary_link_parents

GET /v7.0/type/{dataObjectType}/{dataObjectGGUID}/primarylinkparents

list_users

GET /v7.0/user/list

get_user_self

GET /v7.0/user/self

get_view

GET /v7.0/type/{dataObjectType}/view/{viewID}

list_tags

GET /v7.0/tags

get_object_tags

GET /v7.0/type/{dataObjectType}/{dataObjectGGUID}/tags

get_full_data_objects

GET /v7.0/type/{dataObjectType}/full

list_data_objects_by_view_full

GET /v7.0/type/{dataObjectType}/view/{viewID}/full

get_data_objects_bulk

POST /v7.0/type/{dataObjectType}/records (чтение, несмотря на POST)

get_ticket_service_agreements

GET /v7.0/type/task/ticket/serviceagreements

get_vcard

GET /v7.0/type/address/{dataObjectGGUID}/vcard

get_salutation

POST /v7.0/type/address/salutation (чтение, несмотря на POST)

format_phone_number

POST /v7.0/type/address/formatphonenumber (чтение, несмотря на POST)

check_appointment_conflicts

GET /v7.0/type/appointment/conflicts

get_participant_summary

GET /v7.0/type/appointment/{gguid}/participant/summary

list_appointment_participants

GET /v7.0/type/appointment/{gguid}/participant/full

get_document_file

GET /v7.0/type/document/{gguid}/file (никогда не блокирует)

list_document_versions

GET /v7.0/type/document/{gguid}/file/version/list

list_email_attachments

GET /v7.0/type/emailstore/{gguid}/attachment/list

get_email_attachment

GET /v7.0/type/emailstore/{gguid}/attachment/{attachmentId}

get_email_file

GET /v7.0/type/emailstore/{gguid}/file

list_object_permissions

GET /v7.0/type/{t}/{gguid}/permission/full

list_distributions

GET /v7.0/type/gwdistribution/list

list_distribution_addresses

GET /v7.0/type/gwdistribution/{distributionGuid}/address/list

list_report_templates

GET /v7.0/type/report/template/{templateType}

generate_report

POST /v7.0/type/report/template/{templateGGUID} (чтение, несмотря на POST — рендерит, не изменяет)

readme (форма инструмента)

серверный локальный статический ориентационный документ

Запись (23 — скрыты в режиме только для чтения, вместе с флоу записи выше)

Инструмент

Конечная точка

create_data_object

POST /v7.0/type/{dataObjectType}

update_data_object

PUT /v7.0/type/{dataObjectType}/{dataObjectGGUID}

delete_data_object

DELETE /v7.0/type/{dataObjectType}/{dataObjectGGUID}

restore_data_object

POST /v7.0/type/{dataObjectType}/rbin/undelete

create_link

POST /v7.0/type/{dataObjectType}/{dataObjectGGUID}/link

delete_link

DELETE /v7.0/type/{t}/{gguid}/link/{objecttype2}/{guid2}/{attribute}

set_object_tags

POST /v7.0/type/{dataObjectType}/{dataObjectGGUID}/tags/user

append_notes

POST /v7.0/type/{t}/{gguid}/notes/{fieldName}

create_dossier_entry

POST /v7.0/type/{dataObjectType}/{dataObjectGGUID}/dossier

delete_dossier_entry

DELETE /v7.0/type/{t}/{gguid}/dossier/{dossierEntryGGUID}

set_contact_persons_active

POST /v7.0/type/address/{gguid}/contactperson/activate|deactivate

add_appointment_participant

POST /v7.0/type/appointment/{gguid}/participant

remove_appointment_participant

DELETE /v7.0/type/appointment/{gguid}/participant/{participantGGUID}

set_recurrence

POST /v7.0/type/{t}/recurrence / PUT …/recurrence/{periodGuid}

delete_recurrence

DELETE /v7.0/type/{t}/recurrence/{periodGuid}

set_alarm

PUT /v7.0/type/{t}/{gguid}/alarm/self

delete_alarm

DELETE /v7.0/type/{t}/{gguid}/alarm/self

set_object_permission

POST /v7.0/type/{t}/{gguid}/permission

delete_object_permission

DELETE /v7.0/type/{t}/{gguid}/permission/{permissionGGUID}

add_distribution_addresses

POST /v7.0/type/gwdistribution/{distributionGuid}/address

remove_distribution_address

DELETE /v7.0/type/gwdistribution/{distributionGuid}/address/{addressGGUID}

convert_lead

POST /v7.0/type/gwsllead/{dataObjectGGUID}/convert

recalculate_opportunity_positions

PUT /v7.0/type/gwopportunitypos/recalculatevalues

Полный вышестоящий API, на котором это построено, зафиксирован в swagger.json.

Ресурсы

Помимо инструментов, сервер предоставляет ресурсы MCP для данных, которые редко меняются, чтобы ваш агент не тратил вызовы инструментов на повторное обнаружение их в каждой сессии:

  • genesisworld://readme — статический ориентирующий документ для самого агента (доменная модель, паттерны навигации, правила эффективности).

  • genesisworld://types — типы объектов данных, доступные пользователю, с правами доступа. Кэшируется 15 мин.

  • genesisworld://metadata/{objectType} — схема полей/связей одного типа, например genesisworld://metadata/ADDRESS. Кэшируется 15 мин.

  • genesisworld://views/{objectType} — сохранённые представления одного типа, например genesisworld://views/TASK. Кэшируется 15 мин.

Самостоятельное развёртывание с Docker

Для постоянного сервера, на который могут указывать несколько клиентов (вместо одного процесса npx на каждого клиента):

docker run -d --name cas-genesisworld-mcp -p 8084:3000 \
  -e GENESISWORLD_BASE_URL="http://your-genesisworld-server/genesisrest.svc" \
  -e GENESISWORLD_PRODUCT_KEY="your-product-key" \
  -e GENESISWORLD_USERNAME="your-username" \
  -e GENESISWORLD_PASSWORD="your-password" \
  vaatu/cas-genesis-world-mcp

# Read-only mode: append --read-only after the image name
docker run -d --name cas-genesisworld-mcp -p 8084:3000 \
  -e GENESISWORLD_BASE_URL="http://your-genesisworld-server/genesisrest.svc" \
  -e GENESISWORLD_PRODUCT_KEY="your-product-key" \
  -e GENESISWORLD_USERNAME="your-username" \
  -e GENESISWORLD_PASSWORD="your-password" \
  vaatu/cas-genesis-world-mcp --read-only

Мультитенантный режим: один сервер, много учётных записей genesisWorld

По умолчанию контейнер имеет одну фиксированную учётную запись genesisWorld для всех подключающихся клиентов. С --client-credentials у него нет ни одной — каждый клиент аутентифицируется самостоятельно, поэтому один сервер может безопасно обслуживать несколько человек/команд с разными логинами genesisWorld:

docker run -d --name cas-genesisworld-mcp -p 8084:3000 \
  -e GENESISWORLD_BASE_URL="http://your-genesisworld-server/genesisrest.svc" \
  vaatu/cas-genesis-world-mcp --client-credentials

Затем каждый клиент при подключении отправляет свои собственные учётные данные в заголовках:

{
  "mcpServers": {
    "cas-genesisworld": {
      "url": "http://localhost:8084/mcp",
      "headers": {
        "X-GenesisWorld-Username": "your-username",
        "X-GenesisWorld-Password": "your-password"
      }
    }
  }
}

Заголовок X-GenesisWorld-Product-Key здесь необязателен — если вы оставите GENESISWORLD_PRODUCT_KEY заданным на сервере, клиенты, которые не указали собственный ключ продукта, используют его как запасной вариант. Только HTTP-транспорт (в stdio нет канала заголовков для отдельных запросов); запрос без обоих заголовков — имени пользователя и пароля — отклоняется сразу (HTTP 401), и отката к общей учётной записи не происходит.

Конечная точка MCP теперь находится по адресу http://localhost:8084/mcp. Направьте на неё своего клиента:

{
  "mcpServers": {
    "cas-genesisworld": {
      "url": "http://localhost:8084/mcp"
    }
  }
}

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

Два вида настроек, строго разделённых — ни одна настройка не является одновременно и тем и другим: Переменные окружения настраивают развёртывание (где живёт API, кто подключается); параметры запуска переключают поведение при старте.

Переменные окружения

Переменная

Обязательно

Назначение

GENESISWORLD_BASE_URL

да

Базовый URL REST-сервиса, например http://demo.cas.de/genesisrest.svc

GENESISWORLD_PRODUCT_KEY

да*

Отправляется как X-CAS-PRODUCT-KEY в каждом запросе

GENESISWORLD_USERNAME

да*

Пользователь Basic Auth

GENESISWORLD_PASSWORD

да*

Пароль Basic Auth

MCP_TRANSPORT

нет

http (по умолчанию в Docker) или stdio

MCP_HOST / MCP_PORT

нет

Адрес привязки для HTTP-режима (по умолчанию 0.0.0.0:3000)

GENESISWORLD_MAX_RESULT_CHARS

нет

Обрезает слишком большие ответы (по умолчанию 60000 символов; 0 отключает)

GENESISWORLD_QUIET

нет

true отключает журналирование каждого запроса в stderr

* Требуются на практике для успешного выполнения любого реального запроса — за исключением режима --client-credentials (см. ниже), когда у сервера нет собственной учётной записи и ни одна из этих трёх переменных не требуется.

Параметры запуска

Флаг

Обязательно

Назначение

--read-only

нет

Регистрирует только инструменты чтения для этой сессии — изменяющие инструменты не просто блокируются, их не существует

--client-credentials

нет

Сервер не хранит фиксированную учётную запись genesisWorld; каждый HTTP-клиент аутентифицируется через заголовки запроса (см. «Мультитенантный режим» выше). Только HTTP-транспорт

Передавайте параметры запуска в командной строке или после имени образа в docker run (как показано выше). Ни один из них не имеет эквивалента среди переменных окружения — так задумано.

Лицензия

MIT


Хотите добавить инструмент или понять, как это устроено? См. AGENTS.md — документацию по архитектуре и для контрибьюторов, и ROADMAP.md — план проекта.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides live Zoho CRM data access via MCP tools, enabling queries on modules, records, fields, and related lists without syncing data.
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables MCP clients to read, search, create, update, and manage records in Twenty CRM with a safe, composable 14-tool interface and guarded destructive operations.
    14
    3
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides read-only MCP tools to find, list, and retrieve sales case studies with hybrid search, returning complete cases and prepared presentations.
    -