redmine-mcp
redmine-mcp
Stateless-сервер Model Context Protocol для Redmine. Разверните его перед любым экземпляром Redmine, и позвольте Claude (или любому MCP-совместимому LLM-клиенту) читать и создавать задачи, регистрировать время, просматривать вики и искать проекты от имени пользователя, используя API-ключ каждого пользователя.
Без состояния: нет базы данных, нет сессий, нет общих секретов. Сервер пересылает каждый запрос в Redmine, используя API-ключ, который поступил вместе с ним.
Один сервер, много пользователей: единственное, что настраивает оператор — это
REDMINE_URL. Каждый MCP-клиент предоставляет свой собственныйX-Redmine-API-Key. Права доступа определяются настройками Redmine.Покрытие: задачи (CRUD + заметки), проекты, членство, пользователи, записи времени, вики (PUT-upsert), вложения (загрузка + скачивание), полнотекстовый поиск, статусы, трекеры, категории, пользовательские поля, перечисления.
Быстрый старт
Локально (uv)
uv sync
REDMINE_URL=https://redmine.example.com uv run redmine-mcpТеперь MCP-эндпоинт доступен по адресу http://127.0.0.1:8080/mcp.
Контейнер (GHCR)
docker run --rm -p 8080:8080 \
-e REDMINE_URL=https://redmine.example.com \
ghcr.io/kalvadtech/redmine-mcp:latestОбраз основан на многоэтапной сборке Alpine, работает от имени пользователя без прав root и слушает порт 8080.
Related MCP server: Redmine MCP Server
Подключение к вашему MCP-клиенту
Найдите свой API-ключ Redmine в разделе Моя учетная запись > Ключ доступа к API. Оба клиента ниже взаимодействуют с одним и тем же MCP-эндпоинтом через Streamable HTTP; никакой другой настройки клиента не требуется.
Claude Code
Файл .mcp.json в корне вашего проекта:
{
"mcpServers": {
"redmine": {
"type": "http",
"url": "http://127.0.0.1:8080/mcp",
"headers": {
"X-Redmine-API-Key": "your-40-char-key"
}
}
}
}opencode
Файл opencode.json в корне вашего проекта (или в директории конфигурации opencode):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"redmine": {
"type": "remote",
"url": "http://127.0.0.1:8080/mcp",
"enabled": true,
"headers": {
"X-Redmine-API-Key": "{env:REDMINE_API_KEY}"
}
}
}
}opencode поддерживает интерполяцию {env:VAR} в headers, поэтому API-ключ не попадает в файл конфигурации: REDMINE_API_KEY=... opencode.
Конфигурация
Переменная | Обязательно | По умолчанию | Назначение |
| да | - | Базовый URL экземпляра Redmine (http или https) |
CLI-флаги для redmine-mcp:
--host bind address (default 127.0.0.1)
--port port (default 8080)
--log-level uvicorn log level (default info)Сервер немедленно завершает работу при запуске, если REDMINE_URL отсутствует или не является http(s).
Модель аутентификации
URL Redmine не предоставляется пользователем; он фиксируется для каждого развертывания через REDMINE_URL. Это исключает риск SSRF: клиенты не могут направить сервер на произвольные хосты.
Единственные учетные данные, которые отправляет клиент — это его собственный API-ключ Redmine в заголовке X-Redmine-API-Key. Сервер пересылает его как тот же заголовок в Redmine (чтобы он не попадал в логи доступа Redmine в виде строки запроса), использует его для выполнения одного запроса, а затем отбрасывает. Кэширование, общие сервисные учетные записи или олицетворение отсутствуют.
Инструменты
59 инструментов охватывают все семейства ресурсов, которые Redmine предоставляет через свой REST API. Инструменты списка возвращают {items, total_count, limit, offset} для удобной пагинации.
Задачи
list_issues(проект, статус, исполнитель, трекер, категория, версия, сохраненный запрос, произвольный текстовый запрос, сортировка, включение)get_issue(включение: журналы, вложения, связи, дочерние элементы, наблюдатели)create_issue(вкл. токеныuploads,custom_fields,watcher_user_ids)update_issue(вкл.notes,private_notes)add_issue_note(легкая обертка)delete_issue
Связи задач
list_issue_relations,get_relation,create_issue_relation(связывает / блокирует / предшествует / и т.д., сdelayдля предшествует/следует за),delete_relation
Журналы (заметки к задачам)
update_journal_note— редактирование текста или приватности существующей заметки. Используйтеadd_issue_noteдля добавления новой заметки.
Проекты и версии
list_projects,get_projectlist_versions,get_version,create_version,update_version,delete_version
Членство
list_memberships,get_membership,add_project_member(пользователь или группа),update_membership,remove_membership
Пользователи, моя учетная запись, группы, роли
list_users,get_user(принимает литеральную строку"current")get_my_account,update_my_accountlist_groups,get_group,create_group,update_group,delete_group,add_user_to_group,remove_user_from_grouplist_roles,get_role(с правами доступа)
Записи времени
list_time_entries(диапазоны дат, пользователь, проект, задача)create_time_entry(задача или проект, часы, активность, spent_on, комментарии)update_time_entry,delete_time_entry
Вики
list_wiki_pages,get_wiki_page(с версией)create_or_update_wiki_page(PUT-upsert)delete_wiki_page
Вложения и файлы
get_attachment,download_attachment(ограничено 25 МБ, вывод в base64)upload_attachment(возвращает токен для прикрепления черезuploadsпри create_issue / update_issue)list_files,upload_file(однократная загрузка + прикрепление к области файлов проекта, с опциональными version_id и описанием)
Новости, запросы, поиск и метаданные
list_news(межпроектные или по проектам)list_queries(сохраненные запросы; передайте id какquery_idвlist_issues)search(полнотекстовый поиск по задачам, новостям, документам, вики и т.д.)list_issue_statuses,list_trackers,list_issue_categories,list_custom_fieldslist_issue_priorities,list_time_entry_activities,list_document_categories
Развертывание
Для одного экземпляра Redmine запускайте один контейнер на среду:
docker run -d --name redmine-mcp \
--restart unless-stopped \
-p 8080:8080 \
-e REDMINE_URL=https://redmine.example.com \
ghcr.io/kalvadtech/redmine-mcp:latestРазместите его за вашим обычным обратным прокси-сервером с TLS-терминацией. Протокол MCP на стороне сервера работает только по HTTP; пользователи получают TLS через ваш прокси.
Для нескольких экземпляров Redmine запускайте по одному контейнеру на каждый экземпляр со своим REDMINE_URL и маршрутизируйте по имени хоста / пути на прокси-сервере.
Разработка
uv sync
uv run pytest
uv run ruff check .
uv run mypy srcНабор тестов полностью автономен и использует respx для имитации HTTP API Redmine. Интеграционные тесты против реального Redmine отсутствуют; используйте свой собственный.
Вклад в проект
Pull-запросы приветствуются. Пожалуйста:
следуйте Conventional Commits,
делайте изменения краткими и сфокусированными (одно логическое изменение на коммит),
добавляйте или обновляйте тесты для любых изменений поведения,
запускайте
pytest,ruffиmypyперед открытием PR.
Лицензия
MIT (c) 2026 Kalvad.
This server cannot be deployed
Maintenance
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
MCP server for Linear project management and issue tracking
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn 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.6 npm-
- 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.8911 npm1MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Redmine that enables interaction with issues, wiki pages, and time entries through natural language.ISC
- AlicenseAqualityDmaintenanceA local STDIO server that exposes Redmine REST API as MCP tools, allowing MCP clients to browse Redmine projects and tickets.6MIT