Skip to main content
Glama

mcp-redmine

CI License: MIT Python 3.10+

Сервер Model Context Protocol, который подключает Claude (Desktop или Code) — или любой другой MCP-клиент — к экземпляру Redmine через его REST API.

Он предоставляет 73 инструмента, охватывающих на практике весь стабильный REST API Redmine: задачи, связи, проекты, членство, версии, категории, пользователи, группы, роли, wiki, учёт времени, вложения, файлы проектов, новости и поиск. Направьте своего агента на проект Redmine, и он сможет читать и управлять задачами, вести учёт времени, редактировать страницы wiki и администрировать пользователей — всё через естественный диалог.

Возможности

  • Полный охват чтения и записи задач, включая массовые обновления, связи и наблюдателей.

  • Администрирование проектов: создание/обновление/архивация проектов, управление участниками, версиями и категориями.

  • Администрирование пользователей и групп, при этом намеренно отсутствуют инструменты «удалить пользователя» или «удалить проект» — см. Безопасность.

  • Wiki, включая вложенные страницы и файлы.

  • Учёт времени, вложения, файлы проектов, новости и полнотекстовый поиск.

  • Понятные ошибки: каждый сбой возвращается в виде понятного предложения, взятого из ответа валидации самого Redmine, а не сырого стектрейса.

  • Ничего не нужно запускать: один Python-процесс, общающийся через stdio с вашим MCP-клиентом — ни базы данных, ни сервера, ни Docker.

Related MCP server: redmine-mcp

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

  • Python 3.10+

  • Экземпляр Redmine с включённым REST API:

    1. В Redmine перейдите в Администрирование → Настройки → API и включите «Включить веб-сервис REST» (если ещё не включено).

    2. Перейдите в Моя учётная запись → Ключ доступа к API и скопируйте его.

Установка

Дистрибутив публикуется как mcp-redmine-rest, а команда, которую он устанавливает, — mcp-redmine-rest. Более короткое имя mcp-redmine на PyPI принадлежит не связанному проекту — не устанавливайте его, если ожидаете этот сервер.

Если вы направляете ИИ-агента на этот репозиторий для выполнения установки, llms-install.md написан именно для этого.

С помощью uv (рекомендуется)

uv tool install mcp-redmine-rest

С помощью pip

pip install mcp-redmine-rest

Из исходников

git clone https://github.com/alsimoes/mcp-redmine-rest.git
cd mcp-redmine-rest

python3 -m venv venv && source venv/bin/activate    # Linux/Mac

pip install -e .

В Windows используйте py и PowerShell, а не оболочку Git Bash/WSL — создание или пересоздание виртуального окружения из оболочки в стиле Unix в Windows перезаписывает venv\pyvenv.cfg на путь home в стиле Unix, и каждый последующий запуск venv\Scripts\python.exe завершается ошибкой No Python at '/usr/bin\python.exe' (или похожей):

git clone https://github.com/alsimoes/mcp-redmine-rest.git
cd mcp-redmine-rest

py -3 -m venv venv
.\venv\Scripts\Activate.ps1

pip install -e .

Конфигурация

Сервер читает переменные окружения:

Переменная

Обязательная

Описание

REDMINE_URL

Да

Базовый URL вашего экземпляра Redmine (без завершающего слэша).

REDMINE_API_KEY

Да

Ваш ключ доступа к API, из раздела «Моя учётная запись → Ключ доступа к API».

REDMINE_TIMEOUT

Нет

Таймаут запроса в секундах. По умолчанию 15.

REDMINE_UPLOAD_ROOTS

Нет

Каталоги, из которых инструменты загрузки файлов могут читать, разделённые os.pathsep (; в Windows, : в Linux/macOS). Не задано = загрузка отключена. См. Безопасность.

Как убрать ключ из конфигурации клиента

Значения, отсутствующие в окружении, считываются из файла .env, поэтому ключ API не обязан находиться в открытом виде в конфигурации вашего MCP-клиента. Скопируйте .env.example в .env в корне репозитория и заполните его — тогда блок env в конфигурации клиента можно полностью убрать:

REDMINE_URL=https://redmine.example.com
REDMINE_API_KEY=your_api_key_here
REDMINE_TIMEOUT=15

Файл игнорируется git. Переменные, уже присутствующие в окружении, всегда имеют приоритет, поэтому блок env в конфигурации клиента всё равно их переопределяет. Чтобы хранить файл в другом месте, задайте REDMINE_ENV_FILE с полным путём к нему.

Это особенно важно для Claude Desktop: он запускает MCP-серверы с минимальным окружением, которое формирует сам, поэтому переменные, экспортированные в вашей оболочке или заданные через setx, до сервера не доходят. Используйте блок env или файл .env.

Claude Desktop

Отредактируйте (или создайте) файл конфигурации Claude Desktop:

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "redmine": {
      "command": "mcp-redmine-rest",
      "env": {
        "REDMINE_URL": "https://redmine.example.com",
        "REDMINE_API_KEY": "your_api_key_here"
      }
    }
  }
}

Если вы установили из исходников, а не через uv tool install / pip install, укажите command на интерпретатор в вашем виртуальном окружении и передайте скрипт в качестве аргумента:

{
  "mcpServers": {
    "redmine": {
      "command": "/full/path/to/mcp-redmine/venv/bin/python",
      "args": ["-m", "mcp_redmine"],
      "env": {
        "REDMINE_URL": "https://redmine.example.com",
        "REDMINE_API_KEY": "your_api_key_here"
      }
    }
  }
}

В Windows укажите command на venv\Scripts\python.exe\\ экранированным в JSON):

{
  "mcpServers": {
    "redmine": {
      "command": "C:\\full\\path\\to\\mcp-redmine\\venv\\Scripts\\python.exe",
      "args": ["-m", "mcp_redmine"],
      "env": {
        "REDMINE_URL": "https://redmine.example.com",
        "REDMINE_API_KEY": "your_api_key_here"
      }
    }
  }
}

Перезапустите Claude Desktop. После этого значок инструментов (🔨) должен показать инструменты Redmine как доступные.

Claude Code

claude mcp add redmine \
  --env REDMINE_URL=https://redmine.example.com \
  --env REDMINE_API_KEY=your_api_key_here \
  -- mcp-redmine-rest

Подтвердите:

claude mcp list

Cline (VS Code)

Откройте настройки MCP через палитру — Ctrl+Shift+PCline: Open MCP Config File — или нажмите на шестерёнку рядом с «MCP Servers» на боковой панели Cline и выберите Configure MCP Servers. В любом случае откроется cline_mcp_settings.json; добавьте сервер туда:

{
  "mcpServers": {
    "redmine": {
      "command": "mcp-redmine-rest",
      "env": {
        "REDMINE_URL": "https://redmine.example.com",
        "REDMINE_API_KEY": "your_api_key_here"
      }
    }
  }
}

Используйте команду палитры, а не редактирование файла вручную — он находится глубоко в глобальном хранилище VS Code (.../User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json), и путь отличается в зависимости от платформы.

Если mcp-redmine-rest отсутствует в PATH, который видит VS Code, используйте форму модуля — "command", указывающую на интерпретатор, где установлен пакет, с аргументами "args": ["-m", "mcp_redmine"], точно как в примерах для Claude Desktop выше.

Перезагрузите окно (Ctrl+Shift+PDeveloper: Reload Window) — сервер должен появиться как подключённый в разделе «MCP Servers». Более подробное руководство, включая workspace-файл .mcp.json и интерфейс Add-Server, находится в CLINE_SETUP.md.

Другие MCP-клиенты

Любой клиент, который умеет запускать локальный процесс и общаться по MCP через stdio, работает точно так же: запустите mcp-redmine-rest (или python -m mcp_redmine) с REDMINE_URL и REDMINE_API_KEY, заданными в его окружении.

Локальный запуск (необязательно)

Полезно для быстрой проверки работоспособности перед подключением сервера к клиенту:

cp .env.example .env   # then edit .env with your values
export $(grep -v '^#' .env | xargs)   # or use a tool like direnv
mcp-redmine-rest

Если ошибки соединения нет, сервер готов — он ожидает MCP-сообщения на stdin/stdout, так что отсутствие вывода в терминале — это нормально. Нажмите Ctrl+C для остановки.

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

После настройки просто общайтесь с агентом:

  • «Перечисли открытые задачи, назначенные на меня, в проекте Website.»

  • «Создай ошибку в Website с заголовком "Кнопка входа не реагирует на мобильных", приоритет высокий.»

  • «Перемести задачи #101, #104 и #110 в статус "В работе" и назначь их Алисе.»

  • «Запиши 3,5 часа на задачу #204 за сегодня, деятельность "Разработка".»

  • «Что на странице wiki "Deployment" для проекта Infra?»

  • «Найди "timeout" во всех проектах.»

Доступные инструменты

73 инструмента, сгруппированных по ресурсам. Полный справочник — сигнатуры, параметры, форма возвращаемых данных и важные оговорки (например, как precedes переносит сроки задач, или что list_custom_fields требует прав администратора) — находится в docs/TOOLS.md.

Ресурс

Инструменты

Задачи

list_issues, get_issue, create_issue, update_issue, bulk_update_issues, delete_issue, add_watcher, remove_watcher, update_journal_note

Связи задач

list_issue_relations, create_issue_relation, delete_issue_relation, chain_issues

Проекты

list_projects, get_project, create_project, update_project, archive_project

Участники проекта

list_project_members, add_project_member, update_project_member, remove_project_member

Версии

list_project_versions, create_project_version, update_version, delete_version

Категории

list_project_categories, create_project_category, update_project_category, delete_project_category

Пользователи

get_current_user, list_users, get_user, create_user, update_user, update_my_account

Группы

list_groups, get_group, create_group, update_group, delete_group, add_user_to_group, remove_user_from_group

Роли

list_roles, get_role

Wiki

list_wiki_pages, get_wiki_page, create_or_update_wiki_page, attach_file_to_wiki_page, delete_wiki_page

Учёт времени

list_time_entries, get_time_entry, log_time, update_time_entry, delete_time_entry, list_time_entry_activities

Вложения

attach_file_to_issue, get_attachment, update_attachment, delete_attachment

Файлы проектов

list_project_files, upload_project_file

Новости

list_news, get_news_item, create_news, update_news, delete_news

Поиск

search, list_saved_queries

Метаданные

list_statuses_and_priorities, list_trackers, list_custom_fields, list_document_categories

Покрытие API

{ "type": "text", "text": "| Ресурс Redmine API | Статус |\n| --------------------------------------------------------- | ------------------------------------------------------------- |\n| Задачи | Полная (список, чтение, создание, обновление, массовые операции, удаление, наблюдатели) |\n| Связи задач | Полная |\n| Проекты | Полная кроме удаления |\n| Участники проекта | Полная |\n| Версии | Полная |\n| Категории задач | Полная |\n| Пользователи | Полная кроме удаления |\n| Группы | Полная |\n| Роли | Полная (API только для чтения) |\n| Вики | Полная, включая вложенность и вложения |\n| Вложения | Полная |\n| Файлы проекта | Полная |\n| Новости | Полная |\n| Учет времени | Полная |\n| Поиск и сохраненные запросы | Полная |\n| Трекеры, статусы, приоритеты, активности, настраиваемые поля | Полная (API только для чтения) |\n| Категории документов | Полная (API только для чтения) |\n\nОба упущения являются намеренными. delete_project и delete_user\nнеобратимы и удаляют вместе с собой чужой контент — задачи, записи времени,\nвики-страницы, авторство. archive_project и update_user с\nstatus=3 покрывают реальный сценарий использования обратимо. Настоящее удаление\nостается операцией веб-интерфейса, где подтверждение явное и человеческое. См.\nSECURITY.md для полного обоснования.\n\nТрекеры, статусы задач, приоритеты и роли не имеют операций записи в\nRedmine API — они настраиваются только в разделе «Администрирование». Это не\nпробел в данном сервере.\n\nВне стабильного REST API, и, следовательно, вне области действия этого сервера:\nрепозитории и наборы изменений, защита вики-страниц и экраны настроек всего\nэкземпляра.\n\n## Сообщения об ошибках\n\nОшибки обрабатываются централизованно: когда Redmine отклоняет вызов, сервер читает\nтело ответа — именно там находится реальное объяснение, в поле errors —\nи возвращает это предложение. Если тело ответа бесполезно, он возвращается к\nHTTP-статусу с вероятной причиной:\n\n| Статус | Сообщение |\n| ------ | --------------------------------------------------------------------------------- |\n| 401 | недействительный или отсутствующий API-ключ |\n| 403 | не разрешено выполнять эту операцию, или модуль отключен для этого проекта |\n| 404 | не найдено (проверьте ID, или эта конечная точка может не существовать в этой версии Redmine) |\n| 409 | конфликт — ресурс был изменен кем-то другим |\n| 422 | Redmine отклонил данные при проверке |\n\nЭто применимо к каждому инструменту, как для чтения, так и для записи.\n\n## Устранение неполадок\n\n* "REDMINE\_URL и REDMINE\_API\_KEY должны быть заданы": сервер проверяет свою\n конфигурацию при запуске и немедленно завершает работу с этим сообщением, а не\n запускается с ошибкой. Проверьте блок env в конфигурации вашего MCP-клиента.\n* Каждый вызов завершается сетевой ошибкой: убедитесь, что процесс сервера может\n действительно достичь REDMINE_URL — MCP-клиенты запускают сервер как локальный\n процесс, поэтому ему нужен такой же сетевой доступ, как и вашей машине, а не\n браузеру.\n* 401 при каждом вызове: неверный API-ключ, или "Enable REST web service"\n отключен в настройках Redmine.\n* 403 для конкретного инструмента: обычно это отсутствующее разрешение на роли\n пользователя, которому принадлежит API-ключ. get_role показывает точно, какие разрешения есть у\n роли.\n* Инструмент отвечает 404, хотя вы ожидаете, что он работает: несколько конечных точек\n (update_journal_note, update_news/delete_news,\n update_attachment) были добавлены в определенных версиях Redmine — см.\n docs/TOOLS.md для минимальной версии каждой из них.\n\n## Безопасность\n\nСм. SECURITY.md для полной модели. Короче говоря: API-ключ\nпредоставляет доступ, эквивалентный доступу пользователя, которому он принадлежит, поэтому создайте отдельного\nпользователя Redmine с ролью, ограниченной тем, что вы хотите, чтобы агент делал, и используйте\nключ этого пользователя — не пытайтесь ограничить агента, редактируя код этого сервера.\n\nЗагрузка файлов отключена, пока вы не установите REDMINE_UPLOAD_ROOTS.\nТри инструмента, которые загружают локальный файл (attach_file_to_issue,\nattach_file_to_wiki_page, upload_project_file), по умолчанию отказывают в любом пути,\nименно потому, что агент может быть направлен внедренным содержимым\n(комментарий к задаче, вики-страница) на загрузку файла, который он никогда не должен был\nчитать. См. SECURITY.md.\n\n## Вклад\n\nСм. CONTRIBUTING.md.\n\n## Лицензия\n\nMIT" }

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
3Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server providing 63 tools to interact with Redmine instances, covering issues, projects, time entries, and wiki pages. It utilizes streamable HTTP transport and supports per-client authentication for secure management of Redmine resources.
    20
  • A
    license
    Not graded
    quality
    A
    maintenance
    A stateless MCP server for Redmine that allows users to interact with issues, time entries, wiki, projects, and more via their own API keys.
    4
    MIT
  • 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
    8
    1
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

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/alsimoes/mcp-redmine-rest'

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