MCP сервер

Подключите Claude Desktop, Cursor или любой MCP-клиент к каталогу коннекторов samreshuuu и сэндбоксу для исполнения кода.

Что это

Сервер реализует протокол Model Context Protocol (версия 2025-06-18) поверх Streamable HTTP. Точка монтирования — /mcp/, имя сервера — samreshuuu-coworker. Через него тот же набор инструментов, которым пользуется ассистент в чате, доступен внешним клиентам: каталог из ~90 интеграций, REPL для Python и доступ к памяти и Диску пользователя.

Подключение клиента

Добавьте блок ниже в claude_desktop_config.json, mcp.json в Cursor или эквивалентный конфиг вашего клиента. URL и готовый JSON также доступны в настройках проекта.

{ "mcpServers": { "samreshuuu-coworker": { "url": "https://api.samreshuuu.ru/mcp/", "headers": { "Authorization": "Bearer sk-org-xxxxxxxxxxxx" } } } }

Создать API-ключ в настройках →

Аутентификация

Каждый запрос требует заголовок Authorization: Bearer sk-org-… Ключ выдаётся в разделе «API-ключи» настроек организации, имеет скоупы (read:tools, write:tools, read:data, admin, chat) и срок действия. Контекст пользователя и организации привязан к ключу — отдельный X-Org-Id передавать не нужно.

Публичный info-эндпойнт

GET /api/v1/mcp/info возвращает URL, имя сервера, версию протокола, список поддерживаемых скоупов и пример конфига. Эндпойнт не требует аутентификации — удобно для генерации сниппетов на стороне клиента.

{ "url": "https://api.samreshuuu.ru/mcp/", "server_name": "samreshuuu-coworker", "protocol_version": "2025-06-18", "supported_scopes": ["read:tools", "write:tools", "read:data", "admin", "chat"], "example_config": { "mcpServers": { "samreshuuu-coworker": { "url": "...", "headers": { "Authorization": "Bearer sk-org-<your-key>" } } } } }

Доступные инструменты

Те же инструменты, что использует чат-ассистент. user_id и org_id выводятся из bearer-ключа, поэтому каждый вызов работает в контексте владельца ключа.

ИнструментНазначение
list_servicesКаталог коннекторов: имя + однострочное описание для каждого из ~90 сервисов. Hand­shake-размер (~2–5 КБ) — с него начинается любая сессия.
describe_serviceПолный паспорт одного сервиса: модули, типовые рецепты, лимиты, подсказки по полям и пагинации, а также version/ttl для клиентского кэша.
connector_executeЕдиная точка вызова любого коннектора. Для REST-сервисов — module + HTTP-метод + path + body/query; для RPC (bitrix24, onec и т. п.) — оставьте path пустым, передайте RPC-метод в method.
repl_executeИсполнение Python-кода в песочнице пользователя. Учётные данные подключённых коннекторов автоматически прокидываются в env (WILDBERRIES_API_KEY и т. п.). Запрошенные навыки монтируются в /mnt/skills/<id>/scripts/.
read_memoryЧтение персонального хранилища памяти пользователя: read одного файла, list по префиксу с пагинацией, read_many для батча до 50 путей.

Типичная последовательность вызовов:

→ list_services() → describe_service("wildberries") → connector_execute( service="wildberries", module="statistics", method="GET", path="/api/v1/supplier/orders", query={"dateFrom": "2026-04-15"} ) → repl_execute( code="from wb_analytics import abc_classify; ...", skills=["wb_analytics"] )

Skill-ресурсы

Каждый включённый навык организации экспонируется как MCP-ресурс по схеме skill://. Тело ресурса — system_prompt навыка плюс подсказка о том, как вызывать connector_execute с привязанным сервисом. На первом аутентифицированном запросе сервер однократно регистрирует ресурсы для всех включённых навыков, после чего resources/list их перечисляет.

Ошибки

Ошибки инструментов приходят как стандартный MCP ToolError, тело — JSON с полями code, message, retryable и опциональными hint и details. Базовый набор кодов:

{ "code": "UNKNOWN_SERVICE", "message": "Connector 'foo' not registered", "retryable": false, "hint": "Known services: wildberries, ozon, telegram, ..." }
ПолеОписание
UNAUTHENTICATEDОтсутствует или некорректный bearer-ключ. Проверьте префикс sk-org- и срок действия.
UNKNOWN_SERVICEУказан несуществующий коннектор. В hint возвращается список зарегистрированных сервисов.
INVALID_ARGНевалидный аргумент: неизвестный module/method, ошибка валидации Pydantic или нарушение контракта инструмента. В details приходят подробности.
NOT_FOUNDРесурс не найден (например, файл памяти по указанному path).
UPSTREAM_ERRORВнешний сервис вернул ошибку. Поле retryable показывает, имеет ли смысл повторить запрос.

Полезные ссылки