Skip to main content
Glama
cantbeblank96

qodercli-mcp

qodercli-mcp

Минимальный MCP-сервер, оборачивающий qodercli (Qoder CLI), позволяющий любому MCP-клиенту делегировать задачи кодирования локальному агенту Qoder.

Минимальный MCP-сервер, оборачивающий локальный qodercli (Qoder CLI) в инструмент MCP, позволяющий любому MCP-клиенту (Qoder IDE, Claude Code, Cursor и т.д.) вызывать Qoder как дочерний агент.

Почему

Некоторые CLI-агенты поставляют официальный режим MCP-сервера (например, codex mcp-server), но qodercli в настоящее время работает только как MCP клиент. Этот проект заполняет этот пробел тонкой обёрткой: он запускает qodercli -p <prompt> внутри и передаёт результат обратно через MCP stdio.

Часть CLI-агентов имеет официальный режим MCP-сервера (например, codex mcp-server), но qodercli пока может работать только как MCP клиент. Данный проект с помощью тонкой обёртки восполняет этот пробел: внутри вызывается qodercli -p <prompt>, а результат возвращается через MCP stdio.

Related MCP server: github-copilot-cli-mcp-server

Возможности

  • Инструмент ask-qoder — делегирование задачи qodercli

  • Инструмент ask-qoder — передача задачи qodercli

  • Структурированный вывод (session_id, is_error, duration_ms, total_credits, num_turns) через парсинг -o json

  • Структурированный вывод (session_id, is_error, duration_ms, total_credits, num_turns), автоматический парсинг -o json

  • Инструмент list-sessions для обнаружения возобновляемых сессий

  • Инструмент list-sessions для обнаружения возобновляемых сессий

  • Инструмент list-models для обнаружения моделей во время выполнения (без устаревших списков моделей)

  • Инструмент list-models для обнаружения доступных моделей во время выполнения (не полагаясь на устаревшие списки)

  • Параметр reasoning_effort (проброс --reasoning-effort)

  • Параметр reasoning_effort (проброс --reasoning-effort)

  • Инструкции сервера в результате инициализации MCP, направляющие клиента на правильное использование

  • Результат инициализации MCP содержит инструкции сервера, которые направляют клиента на правильное использование

  • Уровни sandbox в стиле Codex (read-only / workspace-write / danger-full-access)

  • Уровни sandbox в стиле codex (read-only / workspace-write / danger-full-access)

  • Внедрение системного промпта (system_prompt / append_system_prompt)

  • Внедрение системного промпта (system_prompt / append_system_prompt)

  • Рабочая директория, модель, режим разрешений, управление форматом вывода

  • Поддержка указания рабочей директории, модели, режима разрешений, формата вывода

  • Возобновление сессии (resume_session_id) для многошагового делегирования

  • Поддержка возобновления сессии (resume_session_id) для многошагового делегирования

  • Защита от тайм-аута с возвратом к SIGKILL

  • Защита от тайм-аута (автоматический SIGKILL при превышении)

  • Поддержка прокси-квот (внедрение HTTP_PROXY / HTTPS_PROXY)

  • Поддержка прокси-квот (внедрение HTTP_PROXY / HTTPS_PROXY)

  • Нулевой шаг сборки — обычный ESM JavaScript, Node.js >= 18

  • Не требует сборки — чистый ESM JavaScript, Node.js >= 18

Предварительные требования

  1. Node.js >= 18

  2. Установленный и авторизованный qodercli (qodercli login)

Установка

Вариант A — npx (рекомендуется): не нужно клонировать, MCP-клиент загружает пакет при первом использовании. Не нужно клонировать, MCP-клиент автоматически загружает пакет при первом использовании:

"command": "npx", "args": ["-y", "qodercli-mcp"]

Вариант B — из исходников (для разработки):

git clone https://github.com/cantbeblank96/qodercli-mcp.git
cd qodercli-mcp
npm install

Конфигурация MCP-клиента

Qoder IDE

Добавьте в ~/.qoder/mcp.json. Предпочтительно использовать абсолютный путь к node и явно указать QODERCLI_PATH (бинарники, управляемые nvm, часто отсутствуют в PATH, видимом дочерними процессами MCP):

Поддержка прокси: Чтобы использовать прокси-квоту Qoder CLI, добавьте HTTP_PROXY и/или HTTPS_PROXY в окружение сервера. Если они установлены на уровне MCP-сервера, они будут переданы всем дочерним процессам qodercli.

Добавьте в ~/.qoder/mcp.json. Рекомендуется использовать абсолютный путь к node и явно задать QODERCLI_PATH (в PATH дочерних процессов MCP часто отсутствуют бинарники, управляемые nvm):

Поддержка прокси: Чтобы использовать прокси-квоту Qoder CLI, добавьте HTTP_PROXY и/или HTTPS_PROXY в переменные окружения сервера. Когда эти переменные установлены на уровне MCP-сервера, они будут переданы всем дочерним процессам qodercli.

{
  "mcpServers": {
    "qodercli-mcp": {
      "command": "npx",
      "args": ["-y", "qodercli-mcp"],
      "env": {
        "QODERCLI_PATH": "/absolute/path/to/qodercli",
        "PATH": "/usr/local/bin:/usr/bin:/bin"
      }
    },
    "qodercli-mcp-with-proxy": {
      "command": "npx",
      "args": ["-y", "qodercli-mcp"],
      "env": {
        "QODERCLI_PATH": "/absolute/path/to/qodercli",
        "HTTP_PROXY": "http://127.0.0.1:39900",
        "HTTPS_PROXY": "http://127.0.0.1:39900",
        "PATH": "/usr/local/bin:/usr/bin:/bin"
      }
    }
  }
}

Разработчики, использующие локальную копию вместо опубликованного пакета (вариант B), должны заменить command/args на абсолютный путь к node и /path/to/qodercli-mcp/src/index.js (бинарник node, управляемый nvm, часто отсутствует в PATH, видимом дочерними процессами MCP). Разработчики, использующие локальную копию вместо опубликованного пакета (вариант B), должны заменить command/args на абсолютный путь к node и /path/to/qodercli-mcp/src/index.js (бинарник node, управляемый nvm, часто отсутствует в PATH, видимом дочерними процессами MCP).

Claude Code / Claude Desktop

{
  "mcpServers": {
    "qodercli-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/qodercli-mcp/src/index.js"],
      "env": {
        "QODERCLI_PATH": "/absolute/path/to/qodercli"
      }
    }
  }
}

Инструмент: ask-qoder

Параметр

Тип

Описание

prompt

string (required)

Задача или вопрос для qodercli / Задача или вопрос для qodercli

cwd

string

Рабочая директория / Рабочая директория

model

string

Модель для этой сессии; вызовите list-models, чтобы узнать доступные имена / Модель для этой сессии; сначала вызовите list-models для получения списка

reasoning_effort

string

Уровень усилий рассуждения (--reasoning-effort), например low/medium/high; зависит от модели / Уровень усилий рассуждения, зависит от модели

permission_mode

enum

dont_ask (по умолчанию, только чтение) | accept_edits (автоматически одобрять правки файлов) | bypass_permissions (полный доступ, включая shell) | auto | default; взаимно исключает approval_policy, предпочтительнее sandbox / Взаимно исключает approval_policy, рекомендуется использовать sandbox

approval_policy

enum

в стиле codex: untrusted→только чтение | on-request→авто | never→полный доступ / В стиле codex: политика одобрения, автоматическое отображение

sandbox

enum

read-only | workspace-write | danger-full-access (в стиле codex; управляет фактическим режимом разрешений) / Управляет фактическим уровнем разрешений

system_prompt

string

Заменить системный промпт по умолчанию / Заменить системный промпт по умолчанию

append_system_prompt

string

Добавить инструкции к системному промпту по умолчанию / Добавить инструкции к системному промпту по умолчанию

resume_session_id

string

Возобновить предыдущую сессию / Возобновить предыдущую сессию

output_format

string

Передаётся в -o (по умолчанию json) / Передаётся в -o (по умолчанию json). Примечание: не-json форматы ухудшают структурированный вывод (session_id и т.д. становятся недоступными) / Не-json форматы делают структурированные поля недоступными

extra_args

string([]

Сырые аргументы CLI, добавляемые перед промптом; зарезервированные флаги (режим разрешений, системный промпт, модель, -o, -r, -w...) отклоняются / Добавляются сырые аргументы CLI; зарезервированные флаги отклоняются

timeout_ms

number

Тайм-аут в мс, по умолчанию 600000 / Тайм-аут в миллисекундах, по умолчанию 600000

Структурированный вывод

ask-qoder объявляет MCP outputSchema и возвращает, помимо читаемого текста, объект structuredContent:

ask-qoder объявляет MCP outputSchema и, помимо читаемого текста, возвращает объект structuredContent:

{
  "session_id": "77826b5c-...",   // pass back as resume_session_id / 回传用于续接
  "content": "OK",
  "is_error": false,
  "exit_code": 0,
  "duration_ms": 1280,
  "total_credits": 0.53,
  "num_turns": 1,
  "timed_out": false,
  "truncated": false
}

Отображение песочницы

sandbox

Фактический режим разрешений

Эффект на qodercli

(опущен)

dont_ask

Только чтение: вызовы инструментов, требующих разрешения, молча отклоняются / Только чтение: вызовы инструментов, требующих разрешения, молча отклоняются

read-only

dont_ask

Плюс --disallowed-tools write_file,replace,run_shell_command для дополнительной защиты / Дополнительно отключает инструменты записи/shell, двойная защита

workspace-write

accept_edits

Агент может создавать/изменять файлы в cwd / Агент может создавать/изменять файлы в cwd

danger-full-access

bypass_permissions

Полный доступ, включая shell / Полный доступ (включая shell)

Явный permission_mode или approval_policy всегда имеет приоритет над sandbox. Явно заданные permission_mode / approval_policy имеют приоритет над sandbox.

Режимы разрешений (проверенная семантика)

Режим

Поведение

dont_ask

Только чтение: молча отклоняет любой вызов инструмента, требующего разрешения. Безопасное значение по умолчанию для безголового режима / Только чтение: молча отклоняет все вызовы инструментов, требующих разрешения; безопасное значение по умолчанию для безголового режима

accept_edits

Автоматически одобряет правки файлов; shell по-прежнему регулируется политикой / Автоматически одобряет правки файлов

bypass_permissions

Автоматически одобряет всё, включая shell / Автоматически одобряет всё (включая shell)

auto

Автоматическая политика qodercli / Автоматическая политика qodercli

default

Интерактивное подтверждение — не подходит для безголового режима, избегайте в MCP-вызовах / Интерактивное подтверждение, избегайте в безголовых вызовах

Инструмент: list-sessions

Отображает локальные сессии qodercli (индекс, сводка, идентификатор сессии), чтобы клиент мог выбрать resume_session_id. Не принимает аргументов.

Отображает локальные сессии qodercli (номер, сводка, ID сессии), чтобы клиент мог выбрать resume_session_id. Без аргументов.

Инструмент: list-models

Отображает модели, поддерживаемые qodercli в данный момент (через --list-models), чтобы клиент мог выбрать допустимое значение model во время выполнения, не полагаясь на устаревшие данные. Возвращает как текстовый список, так и структурированный массив models. Не принимает аргументов.

Отображает модели, которые qodercli поддерживает в данный момент, для выбора допустимого значения model во время выполнения (не полагаясь на устаревшие данные). Возвращает текстовый список и структурированный массив models. Без аргументов.

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

Пример 1: Простое объяснение кода

{ "name": "ask-qoder", "arguments": { 
  "prompt": "Explain what main.py does",
  "cwd": "/path/to/project",
  "timeout_ms": 180000 
}}

Результат вернёт объяснение на естественном языке, помогающее понять функциональность файла.

Результат возвращает объяснение на естественном языке, помогающее понять функциональность файла.

Пример 2: Запрос второго мнения

{ "name": "ask-qoder", "arguments": { 
  "prompt": "@src/service.py Review this file for security issues and suggest improvements",
  "model": "qwen-plus",
  "permission_mode": "dont_ask",
  "timeout_ms": 300000 
}}

Qoder даст рекомендации по безопасности и предложения по улучшению.

Qoder даёт рекомендации по безопасности и предложения по улучшению.

Пример 3: Многошаговый диалог через возобновление сессии

// First call — session_id comes back in structuredContent
// 首次调用 —— session_id 会在 structuredContent 中返回
{ "name": "ask-qoder", "arguments": {
  "prompt": "Help me refactor this module to improve readability",
  "cwd": "/projects/backend",
  "timeout_ms": 300000 
}}
// Then reuse structuredContent.session_id:
// 然后把 structuredContent.session_id 回传:
{ "name": "ask-qoder", "arguments": {
  "prompt": "Now add error handling for database timeouts",
  "resume_session_id": "77826b5c-cd6b-4213-b423-d95b4e1deab0"
}}
// Or discover ids with list-sessions / 或用 list-sessions 查找历史会话 ID
{ "name": "list-sessions", "arguments": {} }

С помощью resume_session_id можно реализовать многошаговую интерактивную итеративную оптимизацию.

С помощью resume_session_id можно реализовать многошаговую интерактивную итеративную оптимизацию.

Пример 4: Проверка кода с конкретным фокусом

{ "name": "ask-qoder", "arguments": {
  "prompt": "Analyze performance bottlenecks in utils.py",
  "model": "qwen-max",
  "permission_mode": "default",
  "output_format": "text",
  "timeout_ms": 240000 
}}

Подходит для сценариев анализа производительности и оптимизации.

Подходит для сценариев анализа производительности и оптимизации.

Пример 5: Анализ только для чтения

{ "name": "ask-qoder", "arguments": {
  "prompt": "Audit this codebase for security issues; do not modify anything",
  "cwd": "/workspaces/repo",
  "sandbox": "read-only",
  "timeout_ms": 300000 
}}

read-only отключает инструменты записи файлов и shell, подходит для аудита/ревью.

read-only отключает инструменты записи файлов и shell, подходит для аудита/ревью.

Пример 6: Анализ всего проекта

{ "name": "ask-qoder", "arguments": {
  "prompt": "Summarize the architecture of this project and identify key modules",
  "cwd": "/workspaces/repo",
  "timeout_ms": 420000,
  "model": "qwen-plus"
}}

Подходит для быстрого анализа и понимания архитектуры крупных проектов.

Подходит для быстрого анализа и понимания архитектуры крупных проектов.

Лучшие практики

  1. Specify working directory — Always pass cwd when operating on a specific project При работе с конкретным проектом обязательно указывайте cwd

  2. Use timeout protection — For complex prompts, set explicit timeout_ms shorter than 60min Для сложных задач устанавливайте timeout_ms (рекомендуется 5–10 минут), чтобы избежать зависания

  3. Resume for multi-turn — Chain follow-ups via resume_session_id instead of repeating context Для последующих запросов используйте resume_session_id для продолжения сеанса, избегая повторения контекста

  4. Model selection — Call list-models first to discover currently supported models; larger models are better for deep analysis Сначала вызовите list-models, чтобы узнать доступные модели; для глубокого анализа рекомендуется выбирать большие модели

  5. Permission mode — The server default is read-only (dont_ask); set QODERCLI_DEFAULT_PERMISSION_MODE=bypass_permissions to make full (YOLO) access the default for personal deployments. Per-call: tasks that must create/modify files need sandbox: "workspace-write"; shell access needs danger-full-access. Do not combine sandbox with an explicit permission_mode (the latter wins) По умолчанию сервер работает в режиме только для чтения (dont_ask); для личного развертывания можно установить QODERCLI_DEFAULT_PERMISSION_MODE=bypass_permissions, чтобы сделать полный доступ (YOLO) режимом по умолчанию. Для отдельных вызовов: задачи, требующие создания/изменения файлов, должны использовать sandbox: "workspace-write"; доступ к оболочке — danger-full-access. Не смешивайте sandbox с явным permission_mode (последний имеет приоритет)

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

Variable

Default

Description

QODERCLI_PATH

qodercli

Путь к бинарному файлу qodercli

QODERCLI_TIMEOUT_MS

600000

Таймаут по умолчанию

QODERCLI_MAX_OUTPUT_MB

50

Лимит stdout/stderr на один вызов в МБ (защита от OOM)

QODERCLI_DEFAULT_PERMISSION_MODE

dont_ask

Режим разрешений по умолчанию, когда вызывающая сторона не указывает permission_mode/approval_policy/sandbox; установите bypass_permissions для полного доступа (YOLO)

HTTP_PROXY

-

URL HTTP-прокси для qodercli

HTTPS_PROXY

-

URL HTTPS-прокси для qodercli

Development / Разработка

npm test        # smoke test: protocol handshake + tool invocation
node src/index.js   # run the server manually (stdio)

Disclaimer / Отказ от ответственности

This is an unofficial, third-party tool. It is not affiliated with, endorsed, or sponsored by Qoder. Use permission_mode: bypass_permissions with care — delegated prompts may modify files in the target working directory.

Это неофициальный сторонний инструмент. Он не связан с Qoder, не одобрен и не спонсируется им. Используйте permission_mode: bypass_permissions с осторожностью — делегированные запросы могут изменять файлы в целевой рабочей директории.

License

MIT

Available Tools

3 tools
ask-qoderA

Delegate a task to qodercli (Qoder CLI), a local agentic coding assistant. Use it to get a second opinion, a code review, or to have Qoder perform a self-contained coding task in a given working directory. Returns structured output including session_id; pass it back as resume_session_id to continue the conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory for qodercli (project to operate on).
modelNoModel to use for this session (e.g. 'Auto', 'Ultimate', 'Qwen3.8-Max', 'Kimi-K3'). Call the list-models tool first to get the currently supported model names.
promptYesThe task or question for qodercli.
sandboxNoSandbox level, codex-style: read-only = dont_ask + blocked write/shell tools; workspace-write = accept_edits (agent can create/modify files in cwd); danger-full-access = bypass_permissions. Ignored when permission_mode or approval_policy is set. Default (when omitted) is read-only.
extra_argsNoAdditional raw CLI arguments appended before the prompt. Flags with dedicated parameters (permission mode, system prompt, model, output format, resume, cwd) are rejected.
timeout_msNoTimeout in ms (default: 600000).
output_formatNoCLI output format passed to -o (default: json).
system_promptNoReplace qodercli's default system prompt for this call.
approval_policyNocodex-style approval policy: untrusted->dont_ask (read-only), on-request->auto, never->bypass_permissions. Mutually exclusive with permission_mode.
permission_modeNoPermission mode (default: dont_ask). dont_ask = READ-ONLY (silently denies edits/shell); accept_edits = auto-approve file edits; bypass_permissions = full access incl. shell; auto = qodercli's automatic policy. Mutually exclusive with approval_policy; prefer the sandbox parameter instead.
reasoning_effortNoReasoning effort level passed to --reasoning-effort (e.g. 'low', 'medium', 'high'); supported levels depend on the selected model.
resume_session_idNoResume a previous qodercli session by its identifier.
append_system_promptNoAppend extra instructions to the default system prompt.

Output Schema

ParametersJSON Schema
NameRequiredDescription
contentYesThe assistant's final answer.
is_errorYes
exit_codeNo
num_turnsNo
timed_outYes
truncatedYes
session_idNoqodercli session id for follow-ups.
duration_msNo
total_creditsNo

TDQS

A4/5.0
Behavior3/5

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

No annotations provided; description explains it delegates to a local coding assistant and returns session_id for resumption, but does not disclose potential side effects like file modifications or shell access, leaving that to schema parameter descriptions.

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?

Three concise sentences that front-load the core action, use cases, and the session/resume flow; no wasted words.

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 13-parameter tool with output schema, the description provides the essential high-level context (delegation, use cases, resume flow) but could mention prerequisites like listing models first; schema compensates for parameter 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 covers all 13 parameters with descriptions; the description adds no parameter syntax or format details beyond schema, so baseline 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 uses a specific verb ('Delegate') and resource ('qodercli'), lists concrete use cases (second opinion, code review, coding task), and clearly distinguishes from sibling tools that list sessions/models.

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?

Clearly explains when to use (second opinion, code review, self-contained coding task) but doesn't mention when not to use or alternatives beyond implicit distinction from list tools.

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

list-modelsA

List models currently supported by qodercli. Use this before picking a model name for ask-qoder.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
modelsYesModel names as an array.
contentYesModel names, one per line.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It states it lists models but does not disclose any behavioral traits such as read-only nature, authentication, or caching. However, the tool is simple and likely read-only, so the lack of disclosure is not critical but could be improved.

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 concise with two sentences, front-loading the purpose. The second sentence adds clear usage guidance. No fluff.

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?

Given that there are no parameters and the tool is simple, the description is complete enough. It tells the agent what the tool does and when to use it. An output schema is present but not detailed in the description; however, for a list operation, the description is adequate.

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?

There are no parameters, and schema description coverage is 100% (vacuously). The description does not need to add parameter meaning. Baseline for zero parameters is 4, and the description adds no unnecessary information about parameters.

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 clearly states what the tool does: 'List models currently supported by qodercli.' It uses a specific verb ('List') and resource ('models supported by qodercli'). It also distinguishes from siblings by noting to use this before picking a model name for ask-qoder, implying ask-qoder is a different action.

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 description explicitly states when to use this tool: 'Use this before picking a model name for ask-qoder.' This gives clear context. It does not explicitly mention when not to use it, but given the tool's singular purpose, the guidance is sufficient.

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

list-sessionsA

List local qodercli sessions (index + id + summary) so you can pick a resume_session_id for ask-qoder.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
contentYes

TDQS

A4.5/5.0
Behavior4/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. It accurately describes a read-only listing operation with no side effects, and adds the context that sessions are 'local' (client-side). For a simple tool with no parameters, this is adequate behavioral disclosure.

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 of 14 words, front-loaded with the action and purpose. Every word earns its place; there is no redundancy or fluff.

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

Completeness5/5

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

Given the tool's simplicity (zero parameters, presence of an output schema), the description is fully sufficient. It explains what the tool does, why it is used, and the sibling tools are simple. The output schema covers return values, and the description previews the key fields.

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 no parameters, and schema description coverage is trivially 100%. Per the guidelines, zero parameters justifies a baseline score of 4. 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 clearly states the verb 'list', the resource 'local qodercli sessions', and the specific output fields (index + id + summary). It also explains the purpose: to pick a resume_session_id for ask-qoder, which distinguishes it from its siblings (ask-qoder and list-models).

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 description explicitly says 'so you can pick a resume_session_id for ask-qoder', which tells the agent when to use this tool (before calling ask-qoder with a session ID). It does not mention when not to use it or provide alternatives, but the context is clear and sufficient for a simple list tool.

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. 3 tool updatesv0.4.2
    • First observedask-qoder
    • First observedlist-models
    • First observedlist-sessions

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: ask-qoder for delegating tasks, list-sessions for managing sessions, and list-models for model selection. No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (ask-qoder, list-sessions, list-models), making them predictable and easy to understand.

Tool Count5/5

Three tools is appropriate for a CLI wrapper MCP server, covering the core interactions (task execution, session management, model listing) without unnecessary bloat.

Completeness5/5

The tool set covers the essential workflows for qodercli: initiating tasks, resuming sessions, and selecting models. No obvious gaps for its intended purpose.

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

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/cantbeblank96/qodercli-mcp'

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