logo

RedmineKanban

Login
Redmine MCP connecting an AI client to Redmine and its pluginsRedmine MCP connecting an AI client to Redmine and its plugins
Icon
09/15/2026

How to Connect Redmine to AI Without Fighting Every Plugin

WIP Limits in Kanban: Not Magic, but...

WIP Limits in Kanban: Not Magic, but...

Standard Redmine MCP covers the REST API. Real company Redmine lives in plugins.

A ready-made MCP server for Redmine usually exposes the standard REST API: projects, issues, comments and time entries.

That is enough until someone asks for an issue checklist, an Agile board column or data from an internal plugin. Then the model hits a wall: it only sees core Redmine.

Connecting Redmine to AI is easy. Connecting the Redmine your company actually runs is the hard part.

A mature Redmine install accumulates Agile, Helpdesk, CRM, checklist, reporting and custom plugins. Much of the real workflow and business data sits there, not in core Redmine.

Most MCP integrations only know the Redmine REST API. Plugin capabilities are not part of that contract unless you add them.

Why the Redmine REST API alone is not enough

Each plugin has its own API contract.
(1)
You must find whether a REST API exists, which endpoints and parameters it accepts, how responses look, and which permissions it enforces.

A generic request tool shifts the burden onto the model.
(2)
With only `request(url, params)`, the LLM has to invent endpoints, valid values and response shapes. Focused tools like `get_checklist` or `add_checklist_item` give it a fixed, testable contract.

Manual integration does not scale across plugins.
(3)
Every new plugin means another round of tool design, schemas, permissions, error handling and tests. The more plugins you have, the costlier that catalogue becomes to maintain.

What we changed: an extensible Redmine MCP

We first mapped each plugin API by hand and turned methods into MCP tools. It works for one plugin. It breaks down when you have many.

Redmine MCP runs inside Redmine and exposes a shared Registry. Other plugins register their own tools, resources, prompts and capabilities there. The MCP server does not need to know their business logic.

Instead of separate MCP servers for Redmine, Agile, Checklists and every internal module, the path is one: AI client → Redmine MCP → Redmine → the target plugin.

A plugin becomes an MCP extension, not a fork of the MCP server. If you can edit the plugin, put the integration in `lib/.../mcp.rb`, extend `RedmineMcp::ExtensionApi` and register tools. Names follow `redmine_<plugin>_<action>`.

If a third-party plugin cannot be patched, keep the adapter under `redmine_mcp/lib/redmine_mcp/extensions/`. You do not need to fork someone else's plugin only for MCP. Both paths use the same Extension API and Registry.

Part of that integration work can be done by an AI agent. Redmine MCP ships the `redmine-mcp-plugin-integration` skill: how to read plugin APIs, serializers and services; split features into tools; define input/output schemas; enforce permissions; and test the result.

Workflow: give the agent the plugin source, enable the skill, ask it to add MCP support. For a checklist plugin you may get `redmine_checklists_get_checklist`, `redmine_checklists_add_checklist_item`, `redmine_checklists_update_checklist_item` and `redmine_checklists_delete_checklist_item`.

After that, a user can ask: “Inspect issue #1234 and list incomplete checklist items.” The model picks a named tool instead of guessing the plugin's private API.

Agent-generated code is not production-ready by default. Validate against the real plugin API: permissions, schemas, success and failure paths. Tests should cover the full Registry path: validation → permission → handler → response.

Sometimes the agent is right on the first pass; sometimes it needs a plugin-specific hint. Either way is cheaper than designing every integration from scratch.

Permissions stay Redmine's. MCP authenticates with the user's API key. Access also requires the `Use MCP` permission. Projects and issues use standard visibility (`Project.visible`, `Issue.visible`). A global read-only mode is available when writes must be blocked.

Extensions should call Redmine permission checks or reuse an existing plugin REST endpoint as the current user. There is no AI superuser that bypasses Redmine ACL.

See the extension guide for implementation details and the project README for install and client setup.

Takeaway

We did not build an MCP that auto-discovers every Redmine plugin. That is the wrong target.

We built a Registry where plugins register their own tools, plus a skill detailed enough for an AI agent to draft much of the integration.

When the next plugin needs MCP support, we hand its code to an agent first. We only dig in manually if the agent fails.

Check out our other articles

5 Signs Your Team Needs Checklists in Kanban Tasks
Icon
12/18/2025

5 Signs Your Team Needs Checklists in Kanban Tasks

How a Kanban Board Accelerates Projects in Redmine: From Task Chaos to Transparent Flow
Icon
10/29/2025

How a Kanban Board Accelerates Projects in Redmine: From Task Chaos to Transparent Flow

WIP Limits in Kanban: Not Magic, but Managed Predictability
Icon
10/28/2025

WIP Limits in Kanban: Not Magic, but Managed Predictability