redmine-mcp
This server provides a comprehensive interface to Redmine's REST API, enabling issue tracking, project management, time tracking, user/group management, wiki, documents, attachments, and more.
Universal Tools
redmine_api_request— Call any Redmine REST endpoint (GET, POST, PUT, PATCH, DELETE, HEAD)redmine_paginated_request— Fetch paginated list endpoints automatically (offset/limit)redmine_upload_file— Upload binary files and receive upload tokens for attachmentsredmine_current_user— Get the authenticated user's detailsredmine_search— Search across issues, wiki pages, documents, news, projects, and more
Issue Management
redmine_issues— Full CRUD + add notesredmine_issue_relations— List, create, delete relationsredmine_issue_watchers— Add/remove watchersredmine_issue_categories— Full CRUD per projectredmine_issue_statuses— Read available statuses
Project Management
redmine_projects— Full CRUD + archive/unarchiveredmine_memberships— Full CRUDredmine_versions— Full CRUD
Time Tracking
redmine_time_entries— Full CRUD
User & Group Management
redmine_users— Full CRUDredmine_groups— Full CRUD + add/remove membersredmine_roles— List and get
Content Management
redmine_wiki— List, get, update, delete (create via update)redmine_documents— List, get, create, deleteredmine_files— List and create project filesredmine_attachments— Get and deleteredmine_news— List and get (read-only)
Metadata (read-only)
redmine_trackers,redmine_enumerations(priorities, activities, document categories),redmine_custom_fields,redmine_queries
Access Control
Available tools and actions can be restricted via --tool and --deny-action CLI flags (e.g., block all DELETE operations globally or per tool).
Provides tools for interacting with Redmine's REST API, enabling management of issues, projects, users, time entries, wiki, documents, files, and more through the Redmine platform.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@redmine-mcp list my open issues"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 toolsredmine_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_searchC
Search Redmine with /search.json. Supports standard query params such as q, scope, all_words, titles_only, issues, news, documents, changesets, wiki_pages, messages, projects.
Inputs: q, limit, query, scope, +4 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
Scored across 26 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for generating rough-draft project plans from natural-language prompts.
Official Todoist MCP server. Manage tasks and projects. Hosted, no API key needed.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
One MCP server for the services your AI needs: memory, files, Microsoft 365, kanban and more.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP 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.8921 npm1MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Redmine that enables interaction with issues, wiki pages, and time entries through natural language.ISC
- FlicenseAqualityDmaintenanceAn MCP server that connects AI agents to Redmine project data, enabling natural language access to issues, projects, time entries, and more via the REST API.21-
- AlicenseNot gradedqualityDmaintenanceProvides an MCP server for interacting with Redmine's REST API, enabling LLMs to manage issues, projects, users, and time entries.MIT