Skip to main content
Glama

🧠 Antigravity to Qwen MCP (mcp_qwen)

License: MIT Version Node.js TypeScript MCP Protocol Platform: Windows

[ 🇷🇺 Русская версия (Russian) | 🇬🇧 English Version ]

Автономный MCP-сервер для двухмодельной оркестрации разработки: Gemini в Google Antigravity (Оркестратор) + Qwen 3.8 Max (Субагент-исполнитель). «Из коробки» инструмент работает локально через десктопное приложение Qwen Studio (по протоколу Chrome DevTools / CDP), а на основе открытого исходного кода может быть легко адаптирован под любой другой AI-чат в браузере или прямой API.

Релиз: v1.0 (Первый рабочий прототип)


📑 Содержание

  1. О проекте и архитектура оркестрации

  2. Регламент и строгие правила работы агента

  3. Как устроен инструмент изнутри (CDP Automation Engine)

  4. Доступные MCP-инструменты

  5. Установка и быстрый старт («В один клик»)

  6. Инструкция по использованию (Пошаговые сценарии)

  7. Адаптация кода под ЛЮБОЙ ДРУГОЙ ЧАТ

  8. Конфигурация (config.json)

  9. Структура проекта

  10. Тестирование

  11. Лицензия


Related MCP server: Apprentice

🌟 О проекте и архитектура оркестрации

Qwen MCP Server реализует профессиональный паттерн двухмодельной разработки (Orchestrator-Worker Pattern):

  • Gemini в Google Antigravity (100% Оркестратор): планирует архитектуру, собирает требования пользователя, исходный контекст проекта, активные скиллы и передает задачу субагенту через MCP без малейших искажений. Контролирует ход выполнения через 60-секундные таймеры, переносит сгенерированные файлы на диск строго verbatim (1:1) и передает проект на финальную верификацию.

  • Qwen 3.8 Max в Qwen Studio Desktop (Субагент-исполнитель): генерирует полное дерево файлов проекта, выводит код каждого файла в блоках ### FILE: путь/к/файлу, управляет порционной выдачей для больших файлов (>1000 строк) и проводит независимый аудит собранного проекта (Шаг 6).

┌─────────────────────────────────────────────────────────────┐
│                 Google Antigravity (Gemini)                 │
│                      [100% ОРКЕСТРАТОР]                     │
└──────────────────────────────┬──────────────────────────────┘
                               │ JSON-RPC (stdio)
                               ▼
┌─────────────────────────────────────────────────────────────┐
│                    mcp_qwen (MCP Сервер)                     │
│  ┌───────────────────────────┴───────────────────────────┐  │
│  │                     TaskManager                       │  │
│  │   • Prompt Builder          • Chunking / Continuation │  │
│  │   • Parser (Tree & Files)   • Verbatim File Writer    │  │
│  └───────────────────────────┬───────────────────────────┘  │
└──────────────────────────────┼──────────────────────────────┘
                               │ Chrome DevTools Protocol (ws://localhost:9222)
                               ▼
┌─────────────────────────────────────────────────────────────┐
│                  Qwen Studio Desktop (Electron)             │
│                     [СУБАГЕНТ QWEN 3.8 MAX]                 │
│   • Интерактивное GUI-окно на рабочем столе пользователя    │
│   • Monaco Code Editor (полный вывод кода без сокращений)   │
└─────────────────────────────────────────────────────────────┘

📜 Регламент и строгие правила работы агента

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

  1. Строго 100% Оркестратор: Gemini не пишет код самостоятельно в обход субагента, а полностью делегирует реализацию Qwen.

  2. Запрет на искажение промпта: СТРОГО ЗАПРЕЩЕНО перефразировать, «улучшать» или сокращать запрос пользователя. Текст передаётся субагенту в первозданном виде.

  3. Сбор полного контекста: В mcp_qwen_submit_task передаётся оригинальный запрос (user_prompt), полный текст скиллов (skills_content) и контекст структуры проекта (workspace_context).

  4. Таймер 60 секунд: Сразу после вызова mcp_qwen_submit_task Gemini ставит 60-секундный таймер через инструмент schedule для периодического опроса статуса через mcp_qwen_check_status.

  5. Запись Verbatim (1:1): Код субагента переносится на диск без изменения ни единого символа, без удаления комментариев и сокращений.

  6. Порционный вывод (Continuation): Для файлов длиннее 1000 строк субагент возвращает ### STATUS: NEED_CONTINUATION. Оркестратор сохраняет готовую часть и отправляет команду mcp_qwen_continue_task.

  7. Обязательная верификация (Шаг 6): После сборки проекта на диске вызывается mcp_qwen_verify_task со структурой файлов и логами ошибок компилятора/линтера. Оркестратор ожидает подтверждения ПРОЕКТ_СОБРАН_ВЕРНО от субагента перед завершением задачи.


⚙️ Как устроен инструмент изнутри (CDP Automation Engine)

1. Автономный запуск с интерактивным окном (launchQwenWithDebugging)

Обычный вызов child_process.spawn в среде агентов Windows порождает процессы на служебном десктопе (exebox-...), из-за чего окно приложения остается невидимым для пользователя. В адаптере QwenCDPAdapter реализован запуск через планировщик задач Windows с флагом интерактивности:

schtasks /create /tn "LaunchQwenMCP" /tr "\"C:\Program Files\Qwen\Qwen.exe\" --remote-debugging-port=9222" /sc once /st 00:00 /f /it
schtasks /run /tn "LaunchQwenMCP"

Флаг /it предписывает операционной системе открыть GUI-окно на интерактивном рабочем столе пользователя (WinSta0\Default).

2. Подключение к Webview через CDP

Qwen Studio — это приложение Electron, внутри которого страница https://chat.qwen.ai/ загружена во внутренний тег <webview>. Адаптер опрашивает список целей /json/list и подключается именно к сессии чата (type === 'webview' и url.includes('chat.qwen.ai')).

3. Эмуляция пользовательского ввода и клика

Современные веб-интерфейсы на React игнорируют простое изменение textarea.value = .... Адаптер использует прототипный нативный сеттер с последующим вызовом событий:

const nativeSetter = Object.getOwnPropertyDescriptor(
  window.HTMLTextAreaElement.prototype, 'value'
)?.set;
nativeSetter.call(textarea, promptText);
textarea.dispatchEvent(new Event('input', { bubbles: true }));
textarea.dispatchEvent(new Event('change', { bubbles: true }));

После паузы 350 мс (необходимой React для переключения интерфейса с иконки микрофона на стрелку отправки) адаптер нажимает кнопку button.send-button (aria-label: "Отправить").

4. Чтение кода из Monaco Editor

В Qwen Studio блоки кода рендерятся через встроенный редактор Monaco Editor (pre.qwen-markdown-code). Адаптер извлекает строки напрямую из элементов .view-line, исключая повреждения отступов, HTML-сущностей и спецсимволов.


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

Инструмент

Описание

mcp_qwen_submit_task

Делегирует задачу субагенту Qwen. Запускает задачу в фоне, возвращает task_id.

mcp_qwen_check_status

Опрашивает статус (RUNNING, COMPLETED, NEED_CONTINUATION, ERROR), возвращает распарсенные файлы, структуру и текстовый ответ (raw_response).

mcp_qwen_continue_task

Отправляет команду продолжения генерации оставшихся файлов.

mcp_qwen_verify_task

Шаг 6: Отправляет структуру собранного проекта и логи ошибок сборки субагенту на подтверждение.

mcp_qwen_extract_and_write_files

Записывает сгенерированные файлы на диск строго без изменений с защитой от Path Traversal.

mcp_qwen_get_config

Возвращает текущие настройки и результаты сетевой диагностики.

mcp_qwen_set_config

Динамически обновляет параметры конфигурации сервера.


🚀 Установка и быстрый старт («В один клик»)

Требования

  • Node.js версии 18 или новее.

  • Qwen Studio Desktop (по умолчанию устанавливается в C:\Program Files\Qwen\Qwen.exe) либо браузер Google Chrome.

Шаг 1: Установка зависимостей и сборка

git clone https://github.com/your-username/qwen_mcp.git
cd qwen_mcp
npm install
npm run build

Шаг 2: Регистрация в AI-ассистенте

Для Google Antigravity:

Добавьте сервер в файл ~/.gemini/config/mcp_config.json:

{
  "mcpServers": {
    "qwen": {
      "command": "node",
      "args": ["C:\\ai_projects\\qwen_mcp\\build\\index.js"]
    }
  }
}

Для Claude Desktop:

Добавьте сервер в файл %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "qwen": {
      "command": "node",
      "args": ["C:\\ai_projects\\qwen_mcp\\build\\index.js"]
    }
  }
}

Для Cursor IDE:

В настройках MCP (Settings > Features > MCP):

  • Name: qwen

  • Type: command

  • Command: node C:\ai_projects\qwen_mcp\build\index.js

💡 Полная автономность:

Вам не нужно вручную создавать ярлыки, запускать батники или включать отладку. При первом обращении агент проверит статус Qwen, при необходимости сам запустит его на экране пользователя с флагом отладки и передаст промпт.


📖 Инструкция по использованию (Пошаговые сценарии)

Сценарий 1: Разработка проекта с нуля

  1. Пользователь: «Создай REST API сервис на FastAPI с авторизацией JWT и базой SQLite».

  2. Gemini (Оркестратор):

    • Вызывает mcp_qwen_submit_task с неизмененным промптом пользователя.

    • Ставит таймер на 60 секунд: schedule(DurationSeconds=60, Prompt="Проверить статус").

  3. Qwen (Субагент):

    • Формирует дерево проекта:

      fastapi_project/
      ├── app/
      │   ├── main.py
      │   ├── auth.py
      │   └── models.py
      ├── requirements.txt
      └── README.md
    • Генерирует код каждого файла через ### FILE: app/main.py, ### FILE: app/auth.py и т.д.

  4. Gemini (Оркестратор):

    • По таймеру опрашивает mcp_qwen_check_status.

    • Получив статус COMPLETED, сохраняет файлы на диск (verbatim).

    • Запускает сборку / проверку синтаксиса.

    • Вызывает mcp_qwen_verify_task с деревом структуры файлов.

    • Получив подтверждение ПРОЕКТ_СОБРАН_ВЕРНО, сообщает пользователю о готовности.

Сценарий 2: Генерация огромных файлов (Chunking / Continuation)

Если генерируется файл более 1000 строк кода:

  1. Qwen выводит полный файл и завершает ответ меткой:

    ### STATUS: NEED_CONTINUATION
    Осталось вывести: components/Dashboard.tsx, utils/analytics.ts
  2. Gemini опрашивает статус, обнаруживает NEED_CONTINUATION, сохраняет готовый файл на диск.

  3. Gemini вызывает mcp_qwen_continue_task(task_id, instruction="Файл сохранен. Продолжай вывод начиная с components/Dashboard.tsx").

  4. Процесс циклически повторяется до ### STATUS: ALL_FILES_COMPLETED.

Сценарий 3: Исправление ошибок сборки (Верификация)

  1. Если при сборке проекта возникла ошибка (например, конфликт типов в TypeScript):

  2. Gemini вызывает mcp_qwen_verify_task:

    {
      "task_id": "qwen_task_...",
      "assembled_structure": "src/index.ts, src/types.ts",
      "verification_status": "ERRORS_FOUND",
      "error_log": "TS2322: Type 'string' is not assignable to type 'number' at src/index.ts:42",
      "troubled_files": [
        { "path": "src/index.ts", "content": "...исходный код с ошибкой..." }
      ]
    }
  3. Qwen анализирует ошибку, генерирует исправленную версию файла.

  4. Gemini перезаписывает файл и проверяет повторно.


🔄 Адаптация кода под ЛЮБОЙ ДРУГОЙ ЧАТ

Архитектура адаптера src/adapters/qwen_cdp_adapter.ts полностью универсальна. Вы можете легко адаптировать его под любой веб-интерфейс AI.

1. Адаптация под веб-чаты в браузере Google Chrome

Вы можете использовать ChatGPT, Claude.ai, DeepSeek, Google AI Studio, HuggingChat, Perplexity вместо Qwen Desktop.

Шаг А: Запуск Chrome с портом отладки

chrome.exe --remote-debugging-port=9222 "https://chatgpt.com"

Шаг Б: Настройка поиска вкладки (findQwenTarget)

В файле src/adapters/qwen_cdp_adapter.ts измените фильтрацию целей:

public async findQwenTarget(): Promise<CDPTarget> {
  const targets = await this.getTargets();
  
  // Ищем вкладку ChatGPT (или claude.ai / deepseek.com):
  const target = targets.find(
    (t) => t.type === 'page' && t.url.includes('chatgpt.com')
  );
  
  if (!target) {
    throw new Error('Вкладка ChatGPT не найдена в запущенном браузере Chrome!');
  }
  return target;
}

Шаг В: Таблица селекторов для популярных чатов

Чат

Поле ввода (textarea)

Кнопка отправки (sendBtn)

Индикатор генерации (isGenerating)

Контейнер ответа

ChatGPT

#prompt-textarea

button[data-testid="send-button"]

button[data-testid="stop-button"]

div[data-message-author-role="assistant"]

Claude.ai

div[contenteditable="true"]

button[aria-label="Send Message"]

button[aria-label="Stop response"]

.font-claude-message

DeepSeek

textarea

.chat-input-send-button

.chat-input-stop-button

.ds-markdown

Google AI Studio

textarea.mat-input-element

button.run-button

mat-spinner, button.stop-button

.model-response-text

Perplexity

textarea[placeholder*="Ask"]

button[aria-label="Submit"]

button[aria-label="Stop"]

.prose


2. Адаптация под Chrome DevTools Browser / Headless

Инструмент можно использовать в полностью бесшумном фоновом режиме (Headless) без отображения графического окна:

chrome.exe --headless=new --remote-debugging-port=9222 "https://chat.qwen.ai"

Через протокол CDP доступны расширенные возможности:

  • Скриншоты: вызов метода Page.captureScreenshot для визуального контроля страницы.

  • Перехват сети: прослушивание Server-Sent Events (SSE) через домен Network для мгновенного получения токенов в реальном времени.

  • Внедрение скриптов: вызов Runtime.evaluate для прямого взаимодействия с глобальными объектами страницы.


3. Адаптация под локальные WebUI (Ollama, LM Studio)

Для работы с локальными открытыми моделями через веб-интерфейсы:

  1. Ollama OpenWebUI: запустите интерфейс на http://localhost:3000 в отладочном Chrome и настройте селекторы аналогично ChatGPT.

  2. Прямой REST API: включите API-режим в config.json:

    {
      "mode": "api",
      "apiBaseUrl": "http://localhost:11434/v1",
      "model": "qwen2.5-coder:32b",
      "apiKey": "ollama"
    }

🔧 Конфигурация (config.json)

Конфигурационный файл config.json автоматически создается в корне проекта:

{
  "mode": "auto",
  "cdpHost": "127.0.0.1",
  "cdpPort": 9222,
  "qwenExePath": "C:\\Program Files\\Qwen\\Qwen.exe",
  "apiBaseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
  "apiKey": "",
  "model": "qwen-max",
  "timeoutSeconds": 300
}
  • mode:

    • "auto" — по умолчанию: пытается подключиться к Qwen Desktop по CDP, при отсутствии переключается на API.

    • "cdp" — только через Qwen Desktop / Chrome CDP.

    • "api" — только через облачный эндпоинт (DashScope / OpenAI-совместимый).

  • cdpPort: порт удаленной отладки Chromium (по умолчанию 9222).

  • timeoutSeconds: максимальное время ожидания ответа субагента (по умолчанию 300 секунд).


📂 Структура проекта

qwen_mcp/
├── src/
│   ├── index.ts                     # Точка входа MCP-сервера, регистрация инструментов
│   ├── task_manager.ts              # Управление жизненным циклом задач, верификация
│   ├── parser.ts                    # Парсер деревьев файлов, блоков ### FILE: и статусов
│   ├── file_writer.ts               # Атомарная запись кода на диск (verbatim)
│   ├── config.ts                    # Менеджер конфигурации config.json
│   ├── types.ts                     # TypeScript интерфейсы и модели протокола
│   └── adapters/
│       ├── qwen_cdp_adapter.ts      # CDP-клиент (интерактивный запуск, ввод, чтение Monaco)
│       └── qwen_api_adapter.ts      # REST API-клиент (OpenAI-совместимый DashScope)
├── tests/
│   ├── run_all_tests.js             # Главный тест-раннер
│   ├── test_parser.js               # Юнит-тесты парсера файлов и продолжения
│   └── test_server_mcp.js           # Тест протокола JSON-RPC MCP и всех инструментов
├── instructions.md                  # Официальный регламент оркестрации для AI-агентов
├── GEMINI.md                        # Инструкция для Gemini в Antigravity
├── package.json                     # Конфигурация зависимостей и скриптов
├── tsconfig.json                    # Настройки компилятора TypeScript
├── LICENSE                          # Лицензия MIT
└── README.md                        # Полная документация проекта

🧪 Тестирование

Для запуска полного набора автоматических тестов выполните:

npm test

Набор тестов проверяет:

  • Корректный парсинг деревьев каталогов и блоков файлов ### FILE:.

  • Обработку больших файлов и чанкования (### STATUS: NEED_CONTINUATION).

  • Атомарную запись файлов на диск с защитой от Path Traversal.

  • Полный цикл рукопожатия протокола MCP (JSON-RPC) и регистрацию всех 7 инструментов.


📄 Лицензия

Проект распространяется под открытой лицензией MIT.

Available Tools

7 tools
mcp_qwen_check_statusA

Проверяет статус выполнения задачи субагентом Qwen. Возвращает статус (RUNNING, COMPLETED, NEED_CONTINUATION, ERROR), массив распарсенных файлов (parsed_files) и структуру проекта.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesИдентификатор задачи, полученный из mcp_qwen_submit_task

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It usefully discloses the return payload (status values, parsed_files, project structure), but it does not state whether the call is read-only/idempotent, whether it returns immediately or blocks while the subagent runs, or what happens with an invalid/expired task_id. No contradiction exists because no annotations were provided.

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?

Two sentences with zero filler. The first sentence front-loads the core verb and resource; the second compactly lists return values including the exact status enum. Every clause earns its place and the structure is easy to scan.

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

Completeness3/5

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

Since there is no output schema, the description correctly takes on the job of explaining return values and does it well. However, it omits workflow decision guidance — what the agent should do given each status and that this tool sits between submit_task and continue_task/verify_task/extract_and_write_files. For a simple one-parameter tool this is adequate, but an agent must infer the polling loop and next-step routing from sibling names alone.

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 100% — task_id is already documented in the schema as the identifier obtained from mcp_qwen_submit_task. The tool description adds no meaning about the parameter beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource — 'Проверяет статус выполнения задачи субагентом Qwen' (checks the status of a Qwen subagent task) — and adds the returned status enum (RUNNING, COMPLETED, NEED_CONTINUATION, ERROR), parsed_files, and project structure. This makes its purpose unambiguous and distinguishes it functionally from siblings like submit_task, continue_task, verify_task, extract_and_write_files, and get/set_config.

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

Usage Guidelines3/5

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

Usage context is only implied: the schema's parameter description ties task_id to mcp_qwen_submit_task, and the status enum hints at a polling workflow, but the description never states when to call this tool versus mcp_qwen_verify_task, nor how to react to each status (e.g., NEED_CONTINUATION routing to continue_task). There are no explicit alternatives, exclusions, or when-not-to-use conditions.

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

mcp_qwen_continue_taskB

Отправляет команду на продолжение генерации следующих файлов субагентом Qwen в рамках текущей сессии задачи.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesИдентификатор задачи
instructionYesИнструкция продолжения (например: "Файлы A, B сохранены. Продолжай вывод следующих файлов начиная с C")

TDQS

B3.4/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 does add the context that the tool sends a command to a subagent rather than performing the generation itself, which is useful, but it fails to mention side effects, whether the call is asynchronous, idempotency, failure modes, or what happens to the current session when invoked.

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?

A single, well-structured sentence that front-loads the action ('sends a command') and then specifies the target, scope, and context. There is no filler or redundant detail; every part of the sentence earns its place.

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?

With no output schema and no annotations, the agent is left unsure what the call actually returns, whether it blocks or completes asynchronously, and how it relates to mcp_qwen_extract_and_write_files for handling generated files. The description covers purpose but not enough of the operational context needed to invoke the tool confidently.

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 coverage is 100%, so the schema already documents both task_id and instruction, and the instruction example is helpful. The description itself adds no parameter-level meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('sends a command to continue generation') and clearly identifies the resource ('subagent Qwen' within the current task session). This distinguishes it from sibling tools like submit_task, check_status, verify_task, and config-related tools without needing to inspect schemas.

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

Usage Guidelines3/5

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

The verb 'continue' and phrase 'within the current task session' imply the tool should be used after a task has already been submitted and generation has paused. However, there is no explicit when-to-use guidance, no exclusions, and no direct comparison to alternatives like mcp_qwen_submit_task.

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

mcp_qwen_extract_and_write_filesB

Безопасно и автоматически извлекает сгенерированные Qwen файлы и записывает их на диск в целевую директорию БЕЗ КАКИХ-ЛИБО ИЗМЕНЕНИЙ ИЛИ ИСКАЖЕНИЙ КОДА (100% verbatim). Создает необходимые подпапки автоматически.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idNoID задачи (извлечет файлы из ответа задачи)
raw_contentNoИли исходный текст с блоками ### FILE: ...
target_directoryYesАбсолютный путь к целевой директории проекта

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It discloses a key guarantee (100% verbatim write, no code modifications) and automatic subfolder creation, which are useful. However, it omits overwrite behavior, permissions, error handling, and return value, and uses vague 'safely' without specifics.

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?

Two sentences front-load the action and the key verbatim guarantee, then add the subfolder behavior. The all-caps emphasis is slightly loud, but there is almost no waste.

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?

For a file-writing tool with no annotations and no output schema, the description is incomplete: it does not state whether existing files are overwritten, what the function returns on success/failure, or any prerequisites. The subfolder note is helpful, but an agent still lacks critical operational details.

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 100%, so the baseline is 3. The description reinforces that task_id and raw_content are alternative sources and that target_directory receives the files unchanged, but it does not add meaningful detail beyond the schema's own descriptions.

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?

Description states a specific action (extract generated Qwen files and write them to disk) with a clear verb and resource, plus the crucial verbatim guarantee and subfolder creation. It does not explicitly contrast with sibling tools, but its role as a write-to-disk step is distinct from the task lifecycle tools.

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 implies it is used after Qwen file generation ('generated Qwen files') and hints at two input modes via task_id/raw_content, but it offers no explicit when-to-use or when-not-to-use guidance and never names alternatives among the siblings. An agent must infer that this step follows submit_task/continue_task.

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

mcp_qwen_get_configA

Возвращает текущую конфигурацию подключения к Qwen (режим: cdp / api, порт отладки, статус подключения).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It states that the tool returns configuration data, including specific fields, which implies a read-only, non-mutating operation. It does not explicitly mention side effects or failure modes, but for a config getter the 'returns' verb and field listing provide sufficient behavioral clarity.

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?

A single, efficient sentence that states the action and the exact return fields. No filler, no redundancy, and the key information is front-loaded in the verb and resource.

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

Completeness4/5

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

For a no-parameter getter with no output schema, the description adequately lists the returned values (mode, debug port, connection status), giving an agent a clear idea of what it will receive. It could mention that the output is a structured object or describe the status representation, but that is minor for this simple tool.

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

Parameters4/5

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

The tool has zero parameters, so there are no parameter semantics for the description to clarify. The baseline of 4 applies, and the description does not need to add parameter information.

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

Purpose5/5

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

The description uses the specific verb 'Returns' with the resource 'current Qwen connection configuration' and lists the exact fields (mode, debug port, connection status). This clearly distinguishes it from the task-oriented siblings and from the complementary set_config tool.

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

Usage Guidelines3/5

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

The description clearly implies the tool is for retrieving current configuration, so usage is apparent. However, it does not explicitly state when to use it versus mcp_qwen_set_config or other siblings, nor any prerequisites or conditions. Guidance is implied by the verb and resource rather than stated.

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

mcp_qwen_set_configB

Обновляет параметры конфигурации MCP сервера (mode, apiKey, apiBaseUrl, model, cdpPort).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo
modelNo
apiKeyNo
cdpPortNo
apiBaseUrlNo

TDQS

B3/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. Updating config implies a mutation, but the description does not mention persistence, side effects, validation, permission requirements, or whether changes apply immediately. This is a significant gap for a write operation.

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 sentence that is compact and front-loaded: the verb and resource appear first, followed by the parameter list. There is no filler or redundant information.

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?

For a config-mutation tool with five parameters and no output schema, this description is insufficient. It does not explain what the parameters mean, how they interact, what a successful result looks like, or what side effects might occur. The agent would need additional knowledge to call it confidently.

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. It only lists the parameter names (mode, apiKey, apiBaseUrl, model, cdpPort) without adding meanings, types, defaults, or constraints beyond what the schema field names already convey.

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 states a specific verb ('Обновляет' / updates) and resource (MCP server configuration parameters), listing the affected fields. It clearly communicates what the tool does, though it does not explicitly differentiate from the read-only sibling get_config other than by the verb.

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

Usage Guidelines3/5

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

The intended usage is implied by the description: use this tool when you need to update MCP server config parameters. However, there is no explicit guidance on when not to use it, nor any mention that get_config should be used for reading current settings.

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

mcp_qwen_submit_taskA

Делегирует задачу субагенту Qwen 3.8 Max (в Qwen Studio / API). ОБЯЗАТЕЛЬНОЕ ПРАВИЛО ДЛЯ GEMINI: При вызове этого инструмента ты являешься 100% ТОЛЬКО ОРКЕСТРАТОРОМ. СТРОГО ЗАПРЕЩЕНО искажать, "улучшать" или перефразировать запрос пользователя — передавай оригинальный текст как есть. Собери весь контекст (оригинальный промпт, полный текст используемых скиллов, файлы контекста). После вызова инструмента ОБЯЗАТЕЛЬНО установи таймер на 60 секунд через инструмент schedule, чтобы каждые 60 секунд опрашивать статус через mcp_qwen_check_status(task_id).

ParametersJSON Schema
NameRequiredDescriptionDefault
user_promptYesОригинальный, неизмененный запрос пользователя без перефразирования
skills_contentNoПолный текст содержимого скиллов (если используются для задачи)
workspace_contextNoТекущий контекст рабочей области, структура существующих файлов
custom_system_promptNoДополнительные системные указания для субагента Qwen

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well: it discloses the orchestrator-only role, the strict no-paraphrasing rule, the need to collect and pass full context, and the mandatory 60-second timer polling behavior. This goes beyond the schema and reveals important operational consequences (async delegation, external Qwen Studio/API involvement).

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 contains essential information but is somewhat verbose and repetitive, especially the all-caps rule about not paraphrasing which echoes the schema description. The purpose is front-loaded, but the length and emphatic formatting make it less concise than it could be.

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

Completeness4/5

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

The description covers the core workflow: what to pass, how to behave as orchestrator, and the mandatory polling loop. It does not explicitly describe the returned task_id or failure/error handling, but the reference to mcp_qwen_check_status(task_id) strongly implies it. Given no output schema and no annotations, this is reasonably complete.

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 100%, so the baseline is 3. The description mostly repeats the parameter guidance already in the schema (e.g., original unmodified user_prompt, passing skills_content). It adds no new parameter-specific semantics beyond what the schema provides.

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

Purpose5/5

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

The first sentence clearly states the tool's function: 'Делегирует задачу субагенту Qwen 3.8 Max' (delegates a task to the Qwen subagent). This is a specific verb+resource description that distinguishes it from the sibling tools such as check_status, continue_task, and verify_task.

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

Usage Guidelines3/5

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

The description gives strong workflow instructions: pass the original prompt unmodified, gather context, and poll via mcp_qwen_check_status after invoking. However, it does not explicitly state when to choose this tool over alternatives like mcp_qwen_continue_task or mcp_qwen_verify_task, leaving the selection criteria implied.

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

mcp_qwen_verify_taskA

ШАГ 6 ВЕРИФИКАЦИИ: Отправляет структуру собранного проекта и отчет о сборке/ошибках обратно субагенту Qwen на подтверждение. Если проект собран с ошибками — прикрепляет логи ошибок и содержимое проблемных файлов. Qwen либо подтверждает правильность ("ПРОЕКТ_СОБРАН_ВЕРНО"), либо возвращает исправленные файлы.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesИдентификатор задачи
error_logNoТекст ошибки компилятора, линтера или сборщика (если есть)
troubled_filesNoСодержимое только тех файлов, в которых обнаружены ошибки
assembled_structureYesДерево фактически собранных файлов в проекте
verification_statusYesСтатус проверки: SUCCESS если синтаксис/тесты в порядке, ERRORS_FOUND при ошибках

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It transparently discloses the core interaction: sending the assembled structure, attaching error logs and problematic files on failure, and the two possible Qwen responses ('ПРОЕКТ_СОБРАН_ВЕРНО' or corrected files). It does not cover timeouts, failures, or side effects, but the main behavior is clearly communicated.

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 three sentences with no filler. It front-loads the step label, then covers the operation, the error-path payload, and the expected outcome. Every sentence contributes necessary information.

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

Completeness4/5

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

For a workflow tool with five parameters and no output schema, the description provides the invocation context, the conditional payload, and the expected result alternatives. It does not specify the exact response format for corrected files or failure behavior, but the schema covers the parameter shapes and the description gives enough operational context for an agent to call the tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful conditional semantics beyond the schema: error_log and troubled_files are attached only when the build had errors, and assembled_structure is the project tree being verified. It does not add format or value-level details, but it does clarify when optional parameters should be populated.

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

Purpose5/5

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

The description names a specific verb ('Отправляет'), a concrete resource ('структуру собранного проекта и отчет о сборке/ошибках'), and a clear recipient ('субагенту Qwen'). The 'ШАГ 6 ВЕРИФИКАЦИИ' label and stated outcomes ('подтверждает' or 'возвращает исправленные файлы') make it clearly distinguishable from the sibling submit/check/continue tools.

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

Usage Guidelines4/5

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

The 'ШАГ 6 ВЕРИФИКАЦИИ' prefix provides clear workflow context, and the conditional sentence 'Если проект собран с ошибками...' explains when the error-related payload is needed. However, it does not explicitly state when not to use this tool or compare it with alternatives, so it stops short of a 5.

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. 7 tool updatesv1.0.0
    • First observedmcp_qwen_check_status
    • First observedmcp_qwen_continue_task
    • First observedmcp_qwen_extract_and_write_files
    • First observedmcp_qwen_get_config
    • First observedmcp_qwen_set_config
    • First observedmcp_qwen_submit_task
    • First observedmcp_qwen_verify_task

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct stage of the Qwen subagent workflow: submission, status polling, continuation, verification, file extraction, and configuration. There is no meaningful overlap or ambiguity between the tools.

Naming Consistency5/5

All tools follow a consistent mcp_qwen_ verb_noun pattern: submit_task, check_status, continue_task, verify_task, extract_and_write_files, get_config, set_config. The naming is predictable and uniform.

Tool Count5/5

With 7 tools, the set is well-scoped for a Qwen subagent orchestration server. Each tool covers a necessary part of the workflow without unnecessary bloat or thinness.

Completeness4/5

The tool surface covers the full task lifecycle: submit, monitor, continue, verify, and write files, plus config management. A minor gap is the lack of an explicit cancel/abort operation for a running task, but agents can work around this.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables Claude to collaborate with Gemini for code reviews, second opinions, and iterative software development. It facilitates multi-step workflows including PRD creation and code generation through an AI orchestration framework.
    2
    18
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A local MCP server that delegates coding tasks to local Qwen and cloud Gemini models, enabling orchestrators like Claude Code to offload routine code generation and receive verified results with automatic correction logging.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables local AI agents to generate code and interact with Google Antigravity (Gemini Pro) via MCP, consuming zero API tokens.
    -

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/ha1tek/antigravity-to-qwen-mcp'

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