Redmine MCP Server
Сервер Model Context Protocol на основе stdio, который взаимодействует с экземпляром Redmine через REST API (конечные точки *.json). Сервер запускается как отдельный процесс Node.js; вносить изменения в приложение Redmine на Rails не требуется.
Требования
-
Node.js 20+
-
Учётная запись Redmine с ключом доступа к API (My account → Show API access key)
-
Сетевой доступ этого процесса к
REDMINE_BASE_URLвашего экземпляра Redmine
Установка
Для обычного использования установка не требуется: агенты для работы с кодом запускают сервер по запросу через npx:
npx -y redmine-mcp-connector
Точные инструкции по настройке Claude Desktop, Claude Code, Cursor, Windsurf, Cline, VS Code, Zed и других MCP-клиентов, а также варианты локальной сборки и использования Docker приведены в CONNECTING.md.
Чтобы работать над самим сервером, сначала клонируйте этот репозиторий:
npm install
npm run build
Настройка
Переменные окружения (см. .env.example):
| Переменная | Обязательная | Описание |
|---|---|---|
REDMINE_BASE_URL | да | Базовый URL, например https://redmine.example.com (без завершающего слеша) |
REDMINE_API_KEY | да | Значение заголовка X-Redmine-API-Key |
REDMINE_IMPERSONATE_USER | нет | Задаёт заголовок X-Redmine-Switch-User (в Redmine доступно только администраторам) |
REDMINE_READONLY | нет | Если задано значение true или 1, блокирует все HTTP-методы, изменяющие данные |
REDMINE_ALLOW_RAW_REQUEST | нет | Если задано значение true или 1, регистрирует инструмент обходного доступа redmine_request |
REDMINE_HTTP_TIMEOUT_MS | нет | Значение по умолчанию — 15000 |
REDMINE_MAX_PAGES | нет | Максимальное число страниц при использовании fetch_all в инструментах для работы со списками (по умолчанию — 20) |
REDMINE_MAX_DOWNLOAD_BYTES | нет | Ограничение для redmine_attachment_download (по умолчанию — 5 MiB) |
Запуск
REDMINE_BASE_URL=https://your-redmine.example.com REDMINE_API_KEY=secret npm start
# or during development:
REDMINE_BASE_URL=... REDMINE_API_KEY=... npm run dev
Подключение к агенту для работы с кодом
Полные инструкции по настройке для Claude Desktop, Claude Code, Cursor, Windsurf, Cline, VS Code, Zed и универсальных MCP-клиентов приведены в CONNECTING.md. Ниже — краткий пример конфигурации, подходящий для Claude Desktop, Cursor и Windsurf:
{
"mcpServers": {
"redmine": {
"command": "npx",
"args": ["-y", "redmine-mcp-connector"],
"env": {
"REDMINE_BASE_URL": "https://redmine.example.com",
"REDMINE_API_KEY": "your_api_key_here"
}
}
}
}
Ресурсы MCP (только для чтения)
| URI | Описание |
|---|---|
redmine://projects | GET /projects.json (первые 100 записей) |
redmine://me | GET /users/current.json |
redmine://me/issues | GET /issues.json?assigned_to_id=me (лимит — 100 записей) |
redmine://projects/{id} | GET /projects/:id.json |
Обзор инструментов
Префикс имён: redmine__.
Задачи: redmine_issues_list, redmine_issue_get, redmine_issue_create, redmine_issue_update, redmine_issue_add_comment, redmine_issue_delete (требуется confirm: true), добавление и удаление наблюдателей, просмотр, добавление и удаление связей.
Проекты: redmine_projects_list, redmine_project_get, создание, обновление, архивация, восстановление из архива и удаление (для удаления требуется confirm).
Пользователи: redmine_current_user, redmine_users_list, redmine_user_get, создание, обновление и удаление (для удаления требуется confirm).
Записи о затраченном времени: просмотр списка, получение, создание, обновление и удаление (для удаления требуется confirm).
Новости: просмотр списка, получение, создание, обновление и удаление (для удаления требуется confirm).
Wiki: просмотр списка страниц, получение страницы, создание и обновление (PUT), удаление (требуется confirm).
Версии и категории: CRUD-операции с версиями (для удаления требуется confirm) и категориями задач (для удаления требуется confirm).
Запросы и метаданные: redmine_queries_list, redmine_enumerations_list, redmine_trackers_list, redmine_issue_statuses_list, redmine_roles_list, redmine_role_get, redmine_custom_fields_list.
Группы (только для чтения): redmine_groups_list, redmine_group_get.
Участие в проектах: просмотр списка, создание, обновление и удаление (для удаления требуется confirm).
Вложения и поиск: redmine_search, получение, обновление, удаление, загрузка и скачивание вложений (скачивание возвращает данные в формате base64 и ограничено по размеру).
Репозиторий (ограниченные возможности REST в стандартном Redmine): redmine_repository_revision_link_issue, redmine_repository_revision_unlink_issue (требуется confirm). В стандартном Redmine просмотр репозиториев и ревизий через JSON не поддерживается. Включите redmine_request или используйте плагины.
Обходной инструмент: redmine_request — доступен, только если задано REDMINE_ALLOW_RAW_REQUEST=true; для метода DELETE требуется confirm: true.
Безопасность
-
Для деструктивных операций требуется явно задать
confirm: true, если это указано выше. -
Для развёртываний с доступом только на чтение установите
REDMINE_READONLY=true. -
Сервер никогда не записывает ключи API в журналы.
Docker
Соберите локальный образ:
docker build -t redmine-mcp-server:local .
Запустите сервер (MCP-сервер на stdio):
docker run --rm -i -e REDMINE_BASE_URL="https://redmine.example.com" -e REDMINE_API_KEY="your_api_key_here" redmine-mcp-server:local
Используйте этот образ в конфигурации MCP:
{
"mcpServers": {
"redmine": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "REDMINE_BASE_URL",
"-e", "REDMINE_API_KEY",
"docker.io/<docker-user>/redmine-mcp-server:latest"
],
"env": {
"REDMINE_BASE_URL": "https://redmine.example.com",
"REDMINE_API_KEY": "your_api_key_here"
}
}
}
}
Публикация в Docker Hub Catalog
- Войдите в систему:
docker login
- Создайте и выберите сборщик buildx (однократная настройка):
docker buildx create --name redmine-mcp-builder --use --bootstrap
- Соберите и отправьте многоархитектурный образ:
export IMAGE=docker.io/<docker-user>/redmine-mcp-server
export TAG=1.0.0
docker buildx build --platform linux/amd64,linux/arm64 -t $IMAGE:$TAG -t $IMAGE:latest --push .
- В Docker Hub укажите в описании репозитория текст из этого README и сделайте репозиторий общедоступным, чтобы его можно было найти в каталоге.
Разработка
npm run lint
npm test
Участие в разработке
Мы рады вашему вкладу.
-
Подробные инструкции по настройке клиентов приведены в CONNECTING.md.
-
Информация о локальной настройке, требованиях к коду и процессе отправки PR приведена в CONTRIBUTING.md.
-
Соблюдайте правила уважительного и открытого взаимодействия, изложенные в CODE_OF_CONDUCT.md.
-
В SUPPORT.md описаны каналы получения помощи и сведения, которые следует предоставить.
-
О конфиденциальном сообщении об уязвимостях читайте в SECURITY.md.
-
Шаблоны для публичного распространения через Docker и каталоги MCP см. в REGISTRY_PUBLISHING.md.
Лицензия
GPL-2.0-or-later (из той же группы лицензий, что и Redmine).