syntx-ai-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@syntx-ai-mcpgenerate an image of a sunset over a mountain lake"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
syntx-ai-mcp
MCP-сервер и TypeScript SDK для AI-платформы syntx.ai
Превратите любой MCP-совместимый ассистент (Claude Desktop, Cursor, VS Code, Cline) в полнофункционального клиента syntx.ai: чаты, генерация изображений, каталог моделей, управление аккаунтом — всё через единый протокол Model Context Protocol.
Содержание
Related MCP server: axiomatic-mcp
Обзор
syntx-ai-mcp — это сервер Model Context Protocol, который открывает возможности платформы syntx.ai AI-ассистентам по единому стандарту. Вместо интеграции проприетарного API в каждый инструмент, вы один раз запускаете MCP-сервер — и любой MCP-клиент получает доступ к:
💬 Чатам и моделям — создание сессий, отправка промптов, ожидание ответа (включая one-shot
ask).🎨 Генерации изображений — Sora, Flux и другие design-сервисы.
📚 Каталогу — AI-сервисы, модели с ограничениями, тарифные планы.
👤 Аккаунту — профиль, баланс токенов, подписка.
📁 Файлам — список и удаление загруженных файлов.
Пакет распространяется как два-в-одном: готовый MCP-сервер (syntx-mcp CLI) и полноценный типизированный SDK (SyntxClient) для прямого программного использования.
Возможности
Группа | Что входит |
🛠️ 28 инструментов | Идентификация, runtime-настройки, чаты, генерация (изображения + транскрипция), каталог, аккаунт, файлы, проекты (папки) |
📄 6 ресурсов + 1 шаблон |
|
💡 4 промпт-шаблона | generate-landing, summarize-chat, translate, code-review |
🔌 2 транспорта | stdio (по умолчанию) и stateless HTTP/SSE |
🔐 Runtime-настройки | Задавайте токен, AI-провайдера и модель по умолчанию без перезапуска ( |
🧱 Типобезопасность | Полная типизация TypeScript, JSON Schema для каждого инструмента |
🌐 Dual-формат | Сборка CJS + ESM + |
Требования
Node.js ≥ 18 (использует встроенный
fetchиWebSocket)Учётная запись и bearer-токен syntx.ai
MCP-совместимый клиент (Claude Desktop, Cursor, VS Code Insiders, Cline, …)
Быстрый старт
# 1. Установить пакет
npm install syntx-ai-mcp
# 2. Собрать (если клонировали репозиторий)
npm install && npm run build
# 3. Запустить MCP-сервер (stdio — стандарт для локальных клиентов)
SYNTX_TOKEN="ваш-токен" npx syntx-ai-mcpГотово — теперь подключите сервер к вашему ассистенту (см. ниже).
Токен можно не задавать заранее. Запустите сервер без
SYNTX_TOKENи вызовите инструментset-tokenпрямо из чата — токен применится в рантайме.
Подключение к клиентам
Claude Desktop
Отредактируйте конфиг Claude Desktop:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"syntx-ai": {
"command": "npx",
"args": ["-y", "syntx-ai-mcp"],
"env": {
"SYNTX_TOKEN": "ВАШ_ТОКЕН"
}
}
}
}Если пакет собран локально — используйте прямой путь:
{
"mcpServers": {
"syntx-ai": {
"command": "node",
"args": ["/путь/к/syntx-ai-mcp/dist/bin/cli.js"],
"env": { "SYNTX_TOKEN": "ВАШ_ТОКЕН" }
}
}
}После сохранения перезапустите Claude Desktop. В чате появятся инструменты ask, list-models и др. — Claude будет вызывать их автоматически.
Cursor
Файл .cursor/mcp.json в корне проекта (или глобально):
{
"mcpServers": {
"syntx-ai": {
"command": "npx",
"args": ["-y", "syntx-ai-mcp"],
"env": { "SYNTX_TOKEN": "ВАШ_ТОКЕН" }
}
}
}В Cursor: Settings → Cursor Settings → Features → MCP → Add new MCP Server.
VS Code (Copilot / Insiders)
Файл .vscode/mcp.json в workspace:
{
"servers": {
"syntx-ai": {
"type": "stdio",
"command": "npx",
"args": ["-y", "syntx-ai-mcp"],
"env": { "SYNTX_TOKEN": "ВАШ_ТОКЕН" }
}
}
}Откройте Command Palette → MCP: List Servers, чтобы убедиться, что syntx-ai активен.
Cline
Файл cline_mcp_settings.json (через интерфейс Cline → MCP Servers):
{
"mcpServers": {
"syntx-ai": {
"command": "npx",
"args": ["-y", "syntx-ai-mcp"],
"env": { "SYNTX_TOKEN": "ВАШ_ТОКЕН" },
"disabled": false,
"autoApprove": []
}
}
}Continue / Windsurf
Используйте стандартный stdio-блок command/args/env (формат идентичен Claude Desktop). Для Windsurf: Settings → MCP Servers → Add Server.
HTTP / SSE (любой клиент)
Запустите сервер в HTTP-режиме и подключите клиента по URL:
SYNTX_TOKEN="ВАШ_ТОКЕН" npx syntx-ai-mcp --transport http --http-port 8080
# MCP endpoint: http://127.0.0.1:8080/mcp
# Health check: http://127.0.0.1:8080/health{
"mcpServers": {
"syntx-ai": { "url": "http://127.0.0.1:8080/mcp" }
}
}Переменные окружения
Переменная | Тип | По умолчанию | Описание |
| string | — | Bearer-токен syntx.ai. Обязателен для большинства операций (можно задать через |
| string |
| Базовый URL API. |
| number |
| Таймаут HTTP-запроса, мс. |
| string |
| Локаль API (например, язык ответов тарифных планов). Не влияет на язык генерации моделей. |
| string |
| AI-сервис по умолчанию для |
| string | — | Модель по умолчанию. |
| number |
| Интервал polling ответа, мс. |
| number |
| Максимальное ожидание ответа, мс. |
|
|
| Стратегия стриминга для |
| string |
| Базовый URL WSS-эндпоинта. |
|
|
| Транспорт MCP-сервера. |
| number |
| Порт HTTP-транспорта. |
| string |
| Адрес привязки HTTP-транспорта (loopback по умолчанию). |
| string | — | Bearer-токен для самого MCP-сервера (HTTP-транспорт). Если задан — запросы без совпадающего заголовка |
Альтернативно — флаги CLI: --token, --base-url, --transport, --http-port. Флаги приоритетнее env.
Транспорты
syntx-ai-mcp поддерживает два транспорта Model Context Protocol:
stdio (по умолчанию)
Клиент запускает сервер как дочерний процесс и общается через стандартные потоки. Рекомендуется для локальных ассистентов (Claude Desktop, Cursor, VS Code, Cline). Минимальные задержки, нулевая сетевая конфигурация.
npx syntx-ai-mcp # stdio
npx syntx-ai-mcp --transport stdio # явноHTTP + SSE
Stateless Streamable HTTP: на каждый запрос создаётся свежий transport + server (канонический паттерн MCP SDK). Подходит для удалённых, облачных и веб-клиентов. Поддерживает health-check /health.
npx syntx-ai-mcp --transport http --http-port 8080
# MCP endpoint: http://127.0.0.1:8080/mcp
# Health check: http://127.0.0.1:8080/healthБезопасность HTTP-транспорта:
Host/Origin allow-list включён всегда (защита от DNS-rebinding): запросы с
Host/Origin, не входящим в{127.0.0.1, localhost, ::1, <bind-host>}, отклоняются (403).Bearer-аутентификация (
MCP_HTTP_TOKEN): если задан, каждый запрос/mcpдолжен нести заголовокAuthorization: Bearer <MCP_HTTP_TOKEN>(timing-safe сравнение, схема регистронезависима). Иначе — 401.OPTIONS(CORS preflight) отвечает200без проверки токена; wildcardAccess-Control-Allow-Originне выдаётся.Если
MCP_HTTP_TOKENне задан — сервер работает только на loopback и печатает предупреждение. Не выставляйте HTTP-транспорт в публичные сети безMCP_HTTP_TOKENи файрвола.
MCP_HTTP_TOKEN="your-mcp-secret" npx syntx-ai-mcp --transport http --http-port 8080{
"mcpServers": {
"syntx-ai": {
"url": "http://127.0.0.1:8080/mcp",
"headers": { "Authorization": "Bearer your-mcp-secret" }
}
}
}Инструменты (Tools)
Все 25 инструментов принимают JSON-аргументы и возвращают структурированный результат. Текстовые ответы — это JSON-снимки данных API; ошибки возвращаются с isError: true (без обрыва канала).
Идентификация и токен
Инструмент | Описание | Параметры |
| Идентификационная проверка: | — |
| Полный профиль пользователя; при отсутствии токена возвращает понятную MCP-ошибку. | — |
| Установить/заменить токен в рантайме (только в памяти — не переживает рестарт). |
|
| Проверить валидность текущего токена. | — |
| Стартует сессию авторизации через Telegram ( |
|
| Поллит |
|
| One-shot flow: создать сессию → вернуть ссылку → поллить до получения JWT → установить токен. Блокирует до |
|
| Запрашивает OTP на e-mail через |
|
| Проверяет OTP и устанавливает JWT ( |
|
whoamiиget-profileразличаются семантикой ошибок, а не составом полей (оба берут данные из одногоuser.me()). Используйтеwhoamiдля проверки статуса аутентификации без риска получить ошибку,get-profile— когда нужен полный профиль и готов обработать ошибку при отсутствии токена.
Настройки (runtime)
Инструмент | Описание | Параметры |
| Текущая эффективная конфигурация сервера | — |
| Установить модель по умолчанию (или очистить через |
|
| Переключить AI-провайдера по умолчанию |
|
*— обязательный параметр.
Каталог AI
Инструмент | Описание | Параметры |
| Доступные AI-сервисы (ChatGPT, Midjourney, Sora…) | — |
| Модели с ограничениями и поддерживаемыми форматами |
|
| Детальная информация о модели (параметры, лимиты) |
|
Параметры list-models (все опциональны, комбинируются через AND):
scope— категория возможностей:text|image|video|audio|upscale. Категория выводится изai_nameпровайдера; если провайдер неизвестен, модель попадает только в вызовы без фильтраscope.ai_name— точное имя провайдера syntx.ai, например"chatgpt","claude","midjourney".active_only—true(по умолчанию) скрывает неактивные модели. Передайтеfalse, чтобы получить весь каталог.search— регистронезависимая подстрока поvalue/label(например,"gpt-5").
Пример:
{
"name": "list-models",
"arguments": {
"scope": "text",
"ai_name": "chatgpt",
"search": "gpt-5"
}
}Чаты и сообщения
Инструмент | Описание | Параметры |
| Список чатов с фильтрами |
|
| Создать чат (обязателен |
|
| История сообщений чата |
|
| Отправить промпт с опциональными вложениями, вернуть ack (ответ — асинхронно) |
|
| Дождаться завершения генерации и вернуть текст + media-объекты |
|
| One-shot: создать чат → отправить → дождаться ответа |
|
| One-shot со стримингом ответа по WebSocket + |
|
| Авто-заголовок для чата |
|
⭐
ask— главный инструмент для stateless Q&A. Возвращаетchat_uuidдля последующих уточнений черезsend-message+wait-for-response.🌊
stream-messageоткрывает WSS-сессию и доставляет токены по мере поступления. Прогресс отправляется через MCP-нотификации (notifications/progress+notifications/message); финальный результат содержит полный текст и метаданные (chat_uuid,elapsed_ms,chunks).
ask vs stream-message vs низкоуровневый flow:
Подход | Инструменты | Когда использовать |
Быстрый вопрос (блокирующий) |
| Обычный пользовательский запрос; поддерживает |
Стриминг ответа |
| Длинные ответы, UX с прогрессом; режимы |
Полный контроль |
| Многошаговый диалог, кастомная логика |
Стратегией управляет SYNTX_STREAM_MODE. Важно: значение off влияет только на ask (fire-and-forget: создать чат, отправить промпт, сразу вернуть chat_uuid). У stream-message нет режима off.
Как wait-for-response определяет «готово»: инструмент резолвится, когда все объекты message_object[i].completed === true. Это включает ответы, состоящие только из image / video / audio / file — раньше такие генерации зависали до таймаута, потому что проверка требовала непустой object_text на объекте [0]. URL медиа-объектов возвращаются в блоке media (JSON) между текстом и метаданными; metadata с сервера пробрасывается как есть (без парсинга). Серверного cancel-эндпоинта нет — клиентский AbortSignal останавливает только локальный цикл опроса.
Пример вызова ask:
{
"name": "ask",
"arguments": {
"prompt": "Объясни квантовую запутанность простыми словами",
"ai_name": "chatgpt",
"model_type": "gpt-5-mini-2025-08-07"
}
}Идентификаторы моделей зависят от провайдера и могут меняться. Получите актуальный список через инструмент
list-models(например,list-modelsсscope: "text"иai_name: "chatgpt").
Пример установки модели по умолчанию:
{ "name": "set-default-model", "arguments": { "model": "gpt-5-mini-2025-08-07", "ai_name": "chatgpt" } }После этого любой вызов ask / send-message без явного model_type будет использовать установленную модель. Проверить состояние:
{ "name": "get-settings", "arguments": {} }Генерация изображений
Инструмент | Описание | Параметры |
| Генерация изображений через design-сервис |
|
{
"name": "generate-image",
"arguments": {
"chat_uuid": "131c1065-644a-492f-a1ff-cdb6ba7d8560",
"prompt": "Космический корабль в стиле киберпанк, неоновые огни",
"resolution": "720x1280",
"quality": "medium",
"n": 1
}
}Сначала создайте чат через
create-chat, чтобы получитьchat_uuid. Результат — JSON-метаданные генерации, которые возвращает design-сервис syntx.ai (состав полей зависит от сервиса; обычно содержит ссылки на сгенерированные изображения и метаданные запроса).
Транскрипция аудио
Инструмент | Описание | Параметры |
| Транскрипция аудио в текст ( |
|
Один файл передаётся либо как path (путь на ФС сервера; только stdio-транспорт), либо как content_base64 с обязательным filename.
⚠️ Безопасность: при HTTP-транспорте
pathотклоняется (произвольное чтение файлов сервера удалённым клиентом) — используйтеcontent_base64. Лимит 50 МБ (на декодированный файл), форматы: mp3, wav, mpeg.
{
"name": "transcribe",
"arguments": {
"content_base64": "data:audio/mpeg;base64,//uQxAAAAA...",
"filename": "meeting.mp3"
}
}Аккаунт пользователя
Инструмент | Описание |
| Профиль (имя, email, аватар, auth-сервисы) |
| Баланс токенов |
| Активная подписка и реферальная информация |
Файлы
Инструмент | Описание | Параметры |
| Список загруженных файлов |
|
| Загрузить до 10 файлов (≤ 100 МБ каждый) |
|
| Удалить файл |
|
Каждый элемент массива files в upload-files принимает одно из двух:
{ path }— путь к файлу на машине, где запущен MCP-сервер (stdio/HTTP-сервер должен иметь доступ к ФС).{ content_base64, filename }— base64-payload (можно с префиксомdata:<mime>;base64,).filenameобязателен,mime_typeопционален и подбирается по расширению.
Пример (смешанные источники):
{
"name": "upload-files",
"arguments": {
"files": [
{ "path": "C:\\Users\\me\\photo.jpg" },
{
"content_base64": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=",
"filename": "pixel.png"
}
],
"check_duplicates": true
}
}Чтобы прикрепить загруженный файл к сообщению, передайте поля из ответа upload-files в attachments:
{
"name": "send-message",
"arguments": {
"chat_id": "<chat-uuid>",
"prompt": "Опиши изображение",
"model_type": "<model-id>",
"attachments": [
{
"url": "https://r2.syntx.ai/.../pixel.png",
"filename": "pixel.png",
"mime_type": "image/png"
}
]
}
}send-message преобразует MIME-тип в категорию syntx.ai (image, video, audio или file). Категорию можно задать явно полем type.
Проекты (папки)
Инструмент | Описание | Параметры |
| Создать проект (a.k.a. папку) на syntx.ai; опционально сразу добавить чаты. |
|
| Добавить один или несколько существующих чатов в проект ( |
|
| Удалить проект без возможности восстановления ( |
|
Серверная терминология —
folders. В продукте это «проекты», в SDK —syntx.folders.create/syntx.folders.addChats.
Пример:
{
"name": "create-project",
"arguments": {
"title": "Refactor plan",
"scope": "text",
"color": "#FFAA00",
"chat_uuids": ["47c2c3c5-f987-451e-9459-1ed4aaf45395"]
}
}{
"name": "add-chats-to-project",
"arguments": {
"folder_uuid": "475d21a2-221e-4f4e-83bf-16066ba33c4f",
"chat_uuids": ["1cc76ce8-444b-4358-9ff5-dc77c01fb4fb"]
}
}Ресурсы (Resources)
Ресурсы — это данные, которые ассистент может читать напрямую по URI (возвращаются как JSON).
URI | Имя | Описание |
| AI Models Catalog | Полный каталог моделей с ограничениями |
| AI Services | Доступные AI-сервисы |
| Subscription Plans | Тарифные планы |
| Application Settings | OAuth-провайдеры, страна, IP + локальная конфигурация MCP-сервера ( |
| Current User Profile | Профиль текущего пользователя |
| Token Balance | Баланс токенов |
Шаблон ресурса:
Шаблон URI | Описание |
| История сообщений конкретного чата по UUID |
Промпты (Prompts)
Готовые шаблоны диалога — ассистент доотправляет их через ask/send-message.
Промпт | Параметры | Назначение |
|
| Сгенерировать одностраничный HTML-лендинг |
|
| Краткое изложение истории чата |
|
| Перевод текста |
|
| Ревью кода с исправленным вариантом |
Безопасность
Токен syntx.ai (
SYNTX_TOKEN/set-token/ Telegram-flow) хранится только в памяти — не пишется на диск, не переживает рестарт процесса, не логируется сервером. Приset-tokenтокен проходит через JSON-RPC-канал (по сети при HTTP-транспорте) — учитывайте логи вашего MCP-клиента.HTTP-транспорт по умолчанию слушает только
127.0.0.1и не имеет аутентификации, пока не заданMCP_HTTP_TOKEN. Защита от DNS-rebinding обеспечивается Host/Origin allow-list (всегда включён). Для запуска вне loopback обязательно задайтеMCP_HTTP_TOKENи оградите порт файрволом/реверс-прокси.Stateless HTTP = single-user loopback.
set-tokenменяет токен для всего процесса, поэтому HTTP-транспорт не предназначен для многопользовательского использования — один клиент установит токен, общий для всех.transcribeсpathразрешён только при stdio-транспорте; при HTTP отклоняется (защита от произвольного чтения файлов сервера — LFI).Не передавайте
MCP_HTTP_TOKENв query-параметрах URL — только в заголовкеAuthorization.
Troubleshooting
Симптом | Вероятная причина | Решение |
MCP-клиент не видит инструменты | Неверный путь к команде / Node.js < 18 | Проверьте путь, версию Node, логи клиента |
| Не задан/истёк токен |
|
HTTP | Отсутствует/неверен | Задайте |
HTTP |
| Используйте |
Стриминг не приходит |
| Проверьте |
Запрос долго висит | Малый | Настройте таймауты под задачу |
Модель не найдена | Неверный | Вызовите |
| Используется HTTP-транспорт | Передайте аудио через |
| Пользователь не открыл deep-link или не нажал Start в боте | Откройте |
| UUID устарел / не существует | Создайте новую сессию через |
| Сервер не вернул поле | Загляните в |
| Невалидный e-mail, превышен rate-limit или e-mail уже использован | Проверьте адрес, подождите и повторите; для Telegram/Google используйте соответствующие flow |
Авторизация через Telegram (device flow)
syntx.ai поддерживает вход через Telegram-бот @syntxaibot без ручного копирования токена. Flow построен на device authorization: сервер выдаёт UUID-сессию, пользователь подтверждает её в Telegram, а клиент поллит состояние.
1. start-telegram-auth → { uuid, deep_link }
2. (пользователь открывает deep_link и нажимает Start в @syntxaibot)
3. poll-telegram-auth (или login-telegram) → JWT устанавливается в рантаймеЧерез MCP-инструменты
Одношаговый flow (для headless-драйверов, которые могут передать ссылку пользователю):
{
"name": "login-telegram",
"arguments": { "timeout_ms": 300000 }
}Возвращает { ok: true, deep_link, uuid, token_installed: true }. Блокирует до 5 минут (настраивается через timeout_ms).
Двухшаговый flow (когда нужно отделить показ ссылки от ожидания):
// 1. Создать сессию и получить ссылку
{ "name": "start-telegram-auth", "arguments": { "bot_username": "syntxaibot" } }
// → { uuid: "a302de6c-…", deep_link: "https://telegram.me/syntxaibot?start=auth_a302de6c-…" }
// 2. (пользователь нажал Start в боте)
// 3. Забрать токен
{ "name": "poll-telegram-auth", "arguments": { "uuid": "a302de6c-…" } }
// → { valid: true, complete: true, token: "eyJhbGc…", token_installed: true }Через SDK
import { SyntxClient } from 'syntx-ai-mcp';
const syntx = new SyntxClient();
// Одношаговый flow
const result = await syntx.auth.loginWithTelegram({
botUsername: 'syntxaibot',
pollIntervalMs: 3000,
timeoutMs: 5 * 60_000,
onLink: (deepLink, uuid) => console.log('Откройте:', deepLink),
});
console.log('JWT:', result.token); // уже установлен как Bearer
// Двухшаговый flow
const { uuid } = await syntx.auth.startAuth();
const link = syntx.auth.getTelegramAuthLink(uuid);
// …пользователь нажимает Start в боте…
const status = await syntx.auth.pollAuthToken(uuid);
if (status.complete && status.token) {
syntx.auth.setToken(status.token);
}Где живёт токен: как и
set-token, Telegram-flow хранит JWT только в памяти процесса. После рестарта MCP-сервера нужно снова пройти авторизацию. Не передавайте токены в query-параметрах — только вAuthorization: Bearer.
Авторизация через Email (OTP)
syntx.ai поддерживает вход по одноразовому коду, отправляемому на e-mail. Flow двухшаговый — сервер не хранит сессию, доступную для поллинга, поэтому в отличие от Telegram здесь нет «one-shot» MCP-инструмента: пользователь должен физически прочитать код из письма.
1. send-email-otp → { ok: true, hint: "проверьте почту" }
2. (пользователь читает OTP из письма)
3. verify-email-otp → { token_installed: true, … }Через MCP-инструменты
// 1. Запросить код
{
"name": "send-email-otp",
"arguments": { "email": "user@example.com", "utm": "" }
}
// → { "ok": true, "email": "user@example.com", "hint": "Ask the user for the OTP …" }
// 2. (пользователь вводит код из письма)
// 3. Подтвердить код и установить токен
{
"name": "verify-email-otp",
"arguments": {
"email": "user@example.com",
"otp_code": "866735",
"install_token": true
}
}
// → { "ok": true, "token_installed": true, "result": { "token": "eyJ…" } }ref_uuid / utm нужно передавать в оба вызова с одинаковыми значениями — они форвардятся в JSON-тело запроса как есть.
Через SDK
import { SyntxClient } from 'syntx-ai-mcp';
const syntx = new SyntxClient();
// Двухшаговый flow — если у вас есть способ спросить код у пользователя
await syntx.auth.sendEmailOtp('user@example.com', { utm: '' });
const code = await askUserForOtp(); // любой UI / prompt / RPC
const result = await syntx.auth.verifyEmailOtp('user@example.com', code, { utm: '' });
// result.token уже установлен как Bearer-токен
// One-shot flow — когда есть готовый колбэк
const { token } = await syntx.auth.loginWithEmail('user@example.com', {
utm: '',
otpProvider: async () => askUserForOtp(),
});Где живёт токен: то же правило, что и для Telegram-flow — JWT хранится только в памяти процесса. После рестарта MCP-сервера нужно снова пройти авторизацию.
Программное использование (SDK)
Помимо MCP-сервера, пакет экспортирует типизированный SDK для прямого использования:
import { SyntxClient } from 'syntx-ai-mcp';
const syntx = new SyntxClient({ token: 'your-token' });
// Профиль и баланс
const me = await syntx.user.me();
const { balance } = await syntx.user.getBalance();
// Список моделей
const models = await syntx.ai.listModels();
// Создать чат и отправить сообщение
const chat = await syntx.chats.create({ scope: 'text', title: 'Demo' });
await syntx.chats.sendMessage(chat.uuid, 'chatgpt', [
{ object_type: 'text', object_url: null, object_text: 'Привет!', model_type: 'your-model-id' },
]);
// Дождаться ответа
const { text } = await syntx.chats.waitForResponse(chat.uuid);
console.log(text);Программный запуск MCP-сервера
import { loadConfig, createMcpServer, runTransport } from 'syntx-ai-mcp';
const config = loadConfig(); // из env
const factory = () => createMcpServer(config).server;
await runTransport(factory, 'stdio', 3000);Экспортируемые сущности SDK
Группа | Методы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| список папок по scope, |
Стриминг ответов
ChatsResource.streamResponse(prompt, options) создаёт чат, отправляет промпт и опрашивает REST API до появления ответа. Возвращает { text, message, elapsedMs, chatUuid }. Колбэк onChunk(chunk, accumulated) вызывается с полным текстом ответа.
const result = await syntx.chats.streamResponse('Расскажи о Kepler-186f', {
timeout: 60_000,
aiName: 'gemini',
model: 'gemini-3.5-flash',
onSession: (uuid) => console.log('chat:', uuid),
onChunk: (chunk, accumulated) => process.stdout.write(chunk),
});
console.log(`\n✓ ${result.text.length} chars in ${result.elapsedMs}ms (chat: ${result.chatUuid})`);Как это работает: API syntx.ai генерирует ответ асинхронно и возвращает его целиком по готовности (инкрементального token-by-token стриминга нет).
streamResponseпредоставляет стриминг-совместимый интерфейс поверх REST-поллинга:onSession— при создании чата,onChunk— при получении ответа,chatUuid— для последующих сообщений.
Внутри MCP-сервера инструмент stream-message оборачивает тот же метод, отправляя notifications/progress и notifications/message (если клиент передал progressToken в _meta).
Стратегия управляется через SYNTX_STREAM_MODE:
Значение | Поведение |
| REST-поллинг через |
| То же, что |
| REST |
| Fire-and-forget: |
Готовый пример — в examples/stream-example.ts.
Полный справочник типов — в src/types.ts. Внутреннее устройство слоёв — в docs/ARCHITECTURE.md.
Примеры
В каталоге examples/ лежат готовые сценарии:
Файл | Описание |
| Прямая работа с чатами через SDK |
| Подключение к серверу как MCP-клиент и вызов |
| One-shot WSS-стриминг ответа в консоль |
| Готовый конфиг для Claude Desktop |
Запуск примеров:
npm run build
npx tsx examples/mcp-client-example.ts
SYNTX_TOKEN=... npx tsx examples/stream-example.ts "Расскажи анекдот"Разработка
git clone <repo>
cd syntx-ai-mcp
npm install
npm run build # CJS + ESM + dts (tsup)
npm run typecheck # tsc --noEmit
npm run dev # сборка в watch-режимеДобавление нового инструмента:
Создайте файл в
src/mcp/tools/с объектомSyntxTool.Включите его в
src/mcp/tools/index.ts(allTools).Готово — сервер и
tools/listподхватят автоматически.
Аналогично для ресурсов (src/mcp/resources/) и промптов (src/mcp/prompts/). Детально — в docs/ARCHITECTURE.md.
Agent skills (каталог skills/). В корне репозитория также живут Anthropic-совместимые skills для AI-агентов, использующих MCP: каждый skill — это папка skills/<name>/SKILL.md (≤ 500 строк) с YAML-frontmatter (name, description, license, compatibility, metadata), необязательными references/ и assets/. Skill публикуется в git вместе с кодом; на машине пользователя Kilo подхватывает его после копирования в ~/.config/kilo/skills/. Версия metadata.version синхронизируется с package.json:version.
Как это работает
MCP-клиент (Claude/Cursor/…)
│ stdio или HTTP+SSE
▼
TRANSPORT src/transport/ ── stdio.ts · http.ts
│ JSON-RPC
▼
MCP SERVER src/mcp/ ── server.ts · registry.ts · tools/ · resources/ · prompts/
│ вызовы SDK
▼
SDK src/ ── SyntxClient · resources/ · auth · websocket
│ fetch / WebSocket
▼
syntx.ai API https://api.syntx.aiЗависимости направлены строго вниз: транспорт зависит от MCP-ядра, ядро — от SDK, SDK — только от платформы. Ошибки API маппятся в isError-ответы, поэтому JSON-RPC-канал никогда не обрывается.
Дорожная карта
Транскрипция аудио как инструмент (
transcribe)Загрузка файлов (
upload-files) с поддержкой бинарных данных в MCPСтриминг ответов через WebSocket (см.
stream-message,chats.streamResponse,SYNTX_STREAM_MODE)CI: GitHub Actions (
npm run typecheck && npm run buildна Node 18/20/22)Аутентифицированный HTTP-транспорт (
MCP_HTTP_TOKEN+ Host/Origin allow-list)OAuth-flow для получения токена из CLI
Юнит-тесты (Vitest)
Сопутствующие документы
CHANGELOG.md — история релизов.
CONTRIBUTING.md — правила участия, стиль кода, советы по PR.
docs/ARCHITECTURE.md — послойное описание архитектуры.
skills/— Anthropic-совместимые agent skills. Вskills/syntx-ai-mcp-usage/SKILL.md— операционные знания для агентов, вызывающихsyntx-ai-mcp_*инструменты (lifecycle чатов, выбор модели, recovery после timeout, security caveats).
Лицензия
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that enables AI applications to access 20+ model providers (including OpenAI, Anthropic, Google) through a unified interface for text and image generation.230MIT

axiomatic-mcpofficial
AlicenseBqualityCmaintenanceMCP server enabling AI assistants to access the Axiomatic_AI Platform for scientific computing, document processing, and photonic circuit design.2321MIT- Alicense-qualityDmaintenanceA full-featured MCP server providing seamless access to CustomGPT.ai APIs, enabling agent and conversation management through MCP-compatible clients.5MIT
- Alicense-qualityDmaintenanceMCP server for AI image generation supporting multiple providers (OpenRouter, Together AI, Replicate, fal.ai) and compatible with various MCP agents.261MIT
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ssm82/syntx-ai-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server