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.
Возможности
Инструмент
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
Предварительные требования
Node.js >= 18
Установленный и авторизованный
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
Параметр | Тип | Описание |
| string (required) | Задача или вопрос для qodercli / Задача или вопрос для qodercli |
| string | Рабочая директория / Рабочая директория |
| string | Модель для этой сессии; вызовите |
| string | Уровень усилий рассуждения ( |
| enum |
|
| enum | в стиле codex: |
| enum |
|
| string | Заменить системный промпт по умолчанию / Заменить системный промпт по умолчанию |
| string | Добавить инструкции к системному промпту по умолчанию / Добавить инструкции к системному промпту по умолчанию |
| string | Возобновить предыдущую сессию / Возобновить предыдущую сессию |
| string | Передаётся в |
| string([] | Сырые аргументы CLI, добавляемые перед промптом; зарезервированные флаги (режим разрешений, системный промпт, модель, |
| 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 |
(опущен) |
| Только чтение: вызовы инструментов, требующих разрешения, молча отклоняются / Только чтение: вызовы инструментов, требующих разрешения, молча отклоняются |
|
| Плюс |
|
| Агент может создавать/изменять файлы в |
|
| Полный доступ, включая shell / Полный доступ (включая shell) |
Явный permission_mode или approval_policy всегда имеет приоритет над sandbox.
Явно заданные permission_mode / approval_policy имеют приоритет над sandbox.
Режимы разрешений (проверенная семантика)
Режим | Поведение |
| Только чтение: молча отклоняет любой вызов инструмента, требующего разрешения. Безопасное значение по умолчанию для безголового режима / Только чтение: молча отклоняет все вызовы инструментов, требующих разрешения; безопасное значение по умолчанию для безголового режима |
| Автоматически одобряет правки файлов; shell по-прежнему регулируется политикой / Автоматически одобряет правки файлов |
| Автоматически одобряет всё, включая shell / Автоматически одобряет всё (включая shell) |
| Автоматическая политика qodercli / Автоматическая политика qodercli |
| Интерактивное подтверждение — не подходит для безголового режима, избегайте в 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"
}}Подходит для быстрого анализа и понимания архитектуры крупных проектов.
Подходит для быстрого анализа и понимания архитектуры крупных проектов.
Лучшие практики
Specify working directory — Always pass
cwdwhen operating on a specific project При работе с конкретным проектом обязательно указывайтеcwdUse timeout protection — For complex prompts, set explicit
timeout_msshorter than 60min Для сложных задач устанавливайтеtimeout_ms(рекомендуется 5–10 минут), чтобы избежать зависанияResume for multi-turn — Chain follow-ups via
resume_session_idinstead of repeating context Для последующих запросов используйтеresume_session_idдля продолжения сеанса, избегая повторения контекстаModel selection — Call
list-modelsfirst to discover currently supported models; larger models are better for deep analysis Сначала вызовитеlist-models, чтобы узнать доступные модели; для глубокого анализа рекомендуется выбирать большие моделиPermission mode — The server default is read-only (
dont_ask); setQODERCLI_DEFAULT_PERMISSION_MODE=bypass_permissionsto make full (YOLO) access the default for personal deployments. Per-call: tasks that must create/modify files needsandbox: "workspace-write"; shell access needsdanger-full-access. Do not combinesandboxwith an explicitpermission_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 |
|
| Таймаут по умолчанию |
|
| Лимит stdout/stderr на один вызов в МБ (защита от OOM) |
|
| Режим разрешений по умолчанию, когда вызывающая сторона не указывает permission_mode/approval_policy/sandbox; установите |
| - | URL HTTP-прокси для qodercli |
| - | 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
This server cannot be installed
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 Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
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/cantbeblank96/qodercli-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server