Skip to main content
Glama

redmine-mcp

redmine-mcp — MCP-провайдер для Redmine. Он подключается к OpenCode, Codex, Cursor и другим MCP-клиентам и даёт доступ к Redmine REST API.

Провайдер собран в один исполняемый файл: src/server.js. Отдельного wrapper-процесса нет.

Возможности

Провайдер покрывает весь Redmine REST API через универсальные tools:

  • redmine_api_request — вызывает любой REST endpoint относительно REDMINE_URL.

  • redmine_paginated_request — вызывает списочные endpoints и проходит Redmine-пагинацию limit/offset.

  • redmine_upload_file — загружает бинарный файл в /uploads.json и возвращает upload token.

Также есть resource tools для частых сценариев:

  • задачи, связи задач, наблюдатели задач;

  • проекты, участники проектов, версии, категории задач;

  • трудозатраты;

  • пользователи, группы, роли;

  • трекеры, статусы задач, перечисления, custom fields, сохранённые queries;

  • wiki, документы, файлы, новости, вложения;

  • поиск и текущий пользователь.

Если нужного Redmine endpoint нет среди именованных tools, используйте redmine_api_request. Это основной слой совместимости для всех стандартных, версионных и plugin endpoints Redmine.

Related MCP server: @a-bonus/redmine-mcp

Требования

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

  • Redmine с включённым REST API.

  • API key Redmine или логин/пароль для Basic auth.

Установка и запуск

Установите опубликованный npm-пакет глобально:

npm install -g @pavelsmith/redmine-mcp

После установки команда должна быть доступна в PATH:

redmine-mcp

Для локального checkout до публикации запускайте единственный файл провайдера напрямую:

node /absolute/path/to/redmine-mcp/src/server.js

Аутентификация

Доступы передаются через переменные окружения MCP-сервера:

  • REDMINE_URL — обязательный URL Redmine, например https://redmine.example.com или https://example.com/redmine.

  • REDMINE_API_KEY — предпочтительный способ авторизации.

  • REDMINE_TOKEN или REDMINE_ACCESS_TOKEN — алиасы для API key.

  • REDMINE_USERNAME и REDMINE_PASSWORD — fallback для HTTP Basic auth, если API key недоступен.

Ограничение доступных tools и actions

По умолчанию MCP-сервер публикует все tools и все actions внутри resource tools. Ограничения задаются аргументами команды в mcp.json.

Запретить все delete actions:

{
  "mcpServers": {
    "redmine": {
      "command": "redmine-mcp",
      "args": ["--deny-action", "delete"],
      "env": {
        "REDMINE_URL": "https://redmine.example.com",
        "REDMINE_API_KEY": "your-api-key"
      }
    }
  }
}

В этом режиме из схем исчезнут все actions, которые выполняют HTTP DELETE, включая actions с другими именами, например remove и remove_user. Прямой вызов таких actions будет отклонён, а в redmine_api_request будет скрыт и заблокирован HTTP method DELETE.

Оставить только выбранные blocks/tools и actions внутри них:

{
  "mcpServers": {
    "redmine": {
      "command": "redmine-mcp",
      "args": [
        "--tool",
        "redmine_current_user",
        "--tool",
        "redmine_issues:list,get,create,update,add_note",
        "--tool",
        "redmine_projects:list,get"
      ],
      "env": {
        "REDMINE_URL": "https://redmine.example.com",
        "REDMINE_API_KEY": "your-api-key"
      }
    }
  }
}

--tool можно повторять. Формат значения: tool_name или tool_name:action,action. Если --tool не указан, доступны все tools, кроме actions/methods, запрещённых через --deny-action.

Например, чтобы оставить только просмотр и создание списаний трудозатрат:

["--deny-action", "delete", "--tool", "redmine_time_entries:list,get,create"]

В OpenCode эти аргументы нужно добавлять в command, а не в отдельное поле args:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "redmine": {
      "type": "local",
      "command": [
        "redmine-mcp",
        "--deny-action",
        "delete",
        "--tool",
        "redmine_time_entries:list,get,create"
      ],
      "environment": {
        "REDMINE_URL": "https://redmine.example.com",
        "REDMINE_API_KEY": "your-api-key"
      },
      "enabled": true,
      "timeout": 30000
    }
  }
}

--deny-action тоже можно повторять. Формат значения: action для глобального запрета или tool_name:action,action для запрета внутри конкретного tool.

Поддерживаются оба CLI-формата: ["--deny-action", "delete"] и ["--deny-action=delete"]. Если MCP-клиент передаёт флаг одним аргументом, ["--deny-action delete"] тоже будет разобран.

Ограничение применяется и к tools/list, и к tools/call: скрытый tool/action не будет показан клиенту и не сможет быть вызван напрямую.

Настройка OpenCode

OpenCode использует секцию mcp, а не mcpServers. Для локального MCP-сервера нужны:

  • type: "local";

  • command как массив строк;

  • environment для переменных окружения;

  • enabled: true.

Вариант 1: глобальная npm-установка

Добавьте в OpenCode config, например в .opencode/opencode.json проекта или пользовательский config OpenCode:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "redmine": {
      "type": "local",
      "command": ["redmine-mcp"],
      "environment": {
        "REDMINE_URL": "https://redmine.example.com",
        "REDMINE_API_KEY": "your-api-key"
      },
      "enabled": true,
      "timeout": 30000
    }
  }
}

То же самое через CLI OpenCode:

opencode mcp remove redmine
opencode mcp add redmine \
  --env REDMINE_URL=https://redmine.example.com \
  --env REDMINE_API_KEY=your-api-key \
  -- redmine-mcp

Вариант 2: локальный checkout

Если пакет ещё не опубликован или вы разрабатываете его локально:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "redmine": {
      "type": "local",
      "command": ["node", "/absolute/path/to/redmine-mcp/src/server.js"],
      "environment": {
        "REDMINE_URL": "https://redmine.example.com",
        "REDMINE_API_KEY": "your-api-key"
      },
      "enabled": true,
      "timeout": 30000
    }
  }
}

Через CLI OpenCode:

opencode mcp remove redmine
opencode mcp add redmine \
  --env REDMINE_URL=https://redmine.example.com \
  --env REDMINE_API_KEY=your-api-key \
  -- node /absolute/path/to/redmine-mcp/src/server.js

Проверка OpenCode

opencode mcp list

Ожидаемый результат:

✓ redmine connected

Если OpenCode показывает Operation timed out after 30000ms, обычно он всё ещё запускает старую команду. Перерегистрируйте сервер:

opencode mcp remove redmine
opencode mcp add redmine \
  --env REDMINE_URL=https://redmine.example.com \
  --env REDMINE_API_KEY=your-api-key \
  -- node /absolute/path/to/redmine-mcp/src/server.js

После этого снова выполните:

opencode mcp list

Настройка Codex, Cursor и других MCP-клиентов

Некоторые клиенты используют общий JSON-формат mcpServers.

Для глобально установленного npm-пакета:

{
  "mcpServers": {
    "redmine": {
      "command": "redmine-mcp",
      "args": [],
      "env": {
        "REDMINE_URL": "https://redmine.example.com",
        "REDMINE_API_KEY": "your-api-key"
      }
    }
  }
}

Для локального checkout:

{
  "mcpServers": {
    "redmine": {
      "command": "node",
      "args": ["/absolute/path/to/redmine-mcp/src/server.js"],
      "env": {
        "REDMINE_URL": "https://redmine.example.com",
        "REDMINE_API_KEY": "your-api-key"
      }
    }
  }
}

Примеры вызовов tools

Получить задачу с журналом и вложениями:

{
  "action": "get",
  "issue_id": "123",
  "include": ["journals", "attachments"]
}

Создать задачу:

{
  "action": "create",
  "issue": {
    "project_id": "demo",
    "subject": "Created through MCP",
    "description": "Issue body",
    "tracker_id": 1
  }
}

Вызвать любой endpoint напрямую:

{
  "method": "GET",
  "path": "/issues.json",
  "query": {
    "project_id": "demo",
    "status_id": "open"
  }
}

Загрузить файл и получить upload token:

{
  "filename": "report.txt",
  "content_base64": "UmVwb3J0IGNvbnRlbnQK",
  "content_type": "text/plain"
}

Локальная разработка

npm run check
npm start

Провайдер использует только встроенные возможности Node.js, внешних runtime-зависимостей нет.

Available Tools

26 tools
redmine_api_requestA

Call any Redmine REST API endpoint. This is the escape hatch for the complete Redmine API surface, version-specific endpoints, and plugin endpoints. Paths are resolved under REDMINE_URL.

Inputs: path (required), method (required), body, query, +2 more.

redmine_attachmentsC

Manage attachments: get, delete.

Inputs: action (required), limit, query, headers, +2 more.

redmine_current_userB

Get the authenticated Redmine user via /users/current.json.

Inputs: include.

redmine_custom_fieldsC

Read custom fields: list.

Inputs: action (required), limit, query, headers, +1 more.

redmine_documentsC

Manage documents: list, get, create, delete.

Inputs: action (required), limit, query, headers, +4 more.

redmine_enumerationsC

Read Redmine enumerations: issue_priorities, time_entry_activities, document_categories.

Inputs: action (required), limit, query, headers, +2 more.

redmine_filesC

Manage project files: list, create.

Inputs: action (required), file, files, limit, +4 more.

redmine_groupsC

Manage groups: list, get, create, update, delete, add_user, remove_user.

Inputs: action (required), group, limit, query, +5 more.

redmine_issue_categoriesC

Manage issue categories: list, get, create, update, delete.

Inputs: action (required), limit, query, headers, +4 more.

redmine_issue_relationsB

Manage issue relations: list, create, delete.

Inputs: action (required), limit, query, headers, +4 more.

redmine_issuesC

Manage issues: list, get, create, update, add_note, delete.

Inputs: action (required), issue, limit, notes, +5 more.

redmine_issue_statusesC

Read issue statuses: list.

Inputs: action (required), limit, query, headers, +1 more.

redmine_issue_watchersC

Manage issue watchers: add, remove.

Inputs: action (required), limit, query, headers, +3 more.

redmine_membershipsA

Manage project memberships: list, get, create, update, delete.

Inputs: action (required), limit, query, headers, +4 more.

redmine_newsC

Read news: list, get.

Inputs: action (required), limit, query, headers, +3 more.

redmine_paginated_requestB

Call a Redmine list endpoint and follow Redmine offset/limit pagination using total_count from the response body.

Inputs: path (required), limit, query, headers, +1 more.

redmine_projectsC

Manage projects: list, get, create, update, delete, archive, unarchive.

Inputs: action (required), limit, query, headers, +4 more.

redmine_queriesC

Read saved issue queries: list.

Inputs: action (required), limit, query, headers, +1 more.

redmine_rolesC

Read roles: list, get.

Inputs: action (required), limit, query, headers, +2 more.

redmine_time_entriesC

Manage time entries: list, get, create, update, delete.

Inputs: action (required), limit, query, headers, +3 more.

redmine_trackersC

Read trackers: list.

Inputs: action (required), limit, query, headers, +1 more.

redmine_upload_fileA

Upload binary content to Redmine /uploads.json and return an upload token for later attachment to issues, documents, wiki pages, or project files.

Inputs: filename (required), content_base64 (required), content_type.

redmine_usersC

Manage users: list, get, create, update, delete.

Inputs: action (required), user, limit, query, +4 more.

redmine_versionsB

Manage project versions: list, get, create, update, delete.

Inputs: action (required), limit, query, headers, +4 more.

redmine_wikiC

Manage project wiki pages: list, get, update, delete.

Inputs: action (required), limit, query, title, +5 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3/5.0

    Scored across 26 tools

    Disambiguation5/5

    Each tool targets a distinct Redmine resource (issues, projects, users, etc.) with clearly separated actions. The only potential ambiguity is the generic redmine_api_request, but it is explicitly documented as an escape hatch for unsupported endpoints, so agents can distinguish it from the resource-specific tools.

    Naming Consistency4/5

    All tools follow the pattern 'redmine_<resource>', using plural nouns for resources (e.g., redmine_issues, redmine_projects). Minor deviations exist: redmine_upload_file, redmine_paginated_request, and redmine_api_request include action words, but the prefix 'redmine_' is consistently applied, making the set predictable.

    Tool Count4/5

    26 tools is on the upper end but appropriate for the comprehensive Redmine API surface it covers. The count reflects the many resource types (issues, projects, users, wiki, attachments, etc.), and no tool feels unnecessary. A slightly smaller set could be acceptable, but this is well-scoped.

    Completeness4/5

    The tool surface covers CRUD for most major resources and includes search, file upload, and enumeration reads. Minor gaps exist (e.g., custom_fields only list, news read-only) but are compensated by the redmine_api_request escape hatch, which agents can use for any missing endpoint.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      MCP server for Redmine project management, enabling tools for managing projects, issues, users, time entries, groups, memberships, versions, wiki, news, attachments, search, and Agile sprints via the Redmine REST API.
      89
      21 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides an MCP server for interacting with Redmine's REST API, enabling LLMs to manage issues, projects, users, and time entries.
      MIT

    Appeared in Searches