redmine-mcp-workflows
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| REDMINE_URL | Yes | Redmine base URL. Default: http://127.0.0.1:8281 | http://127.0.0.1:8281 |
| REDMINE_API_KEY | No | API key for authentication. | |
| REDMINE_HEADERS | No | Extra HTTP headers, comma-separated. Default: empty | |
| REDMINE_OAUTH_TOKEN | No | OAuth2 bearer token (takes precedence over API key). | |
| REDMINE_MCP_CACHE_DIR | No | Override for the SQLite cache location. Default: platform user-cache dir | |
| REDMINE_MCP_CACHE_TTL | No | Per-entry TTL in seconds. Default: 86400 | 86400 |
| REDMINE_MCP_LOG_LEVEL | No | Stdlib logging level. Default: INFO | INFO |
| REDMINE_MCP_READ_ONLY | No | Set 'true' to disable write tools. Default: false | false |
| REDMINE_MCP_ENABLE_PASSTHROUGH | No | Set 'true' to enable the redmine_request passthrough tool. Default: false | false |
| REDMINE_MCP_ALLOWED_DIRECTORIES | No | Comma-separated paths that redmine_upload_attachment may read from. Default: /tmp | /tmp |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| redmine_list_trackersA | List all trackers configured on the Redmine server. Returns a JSON document describing each tracker (id, name, default status, description). Cached entries are populated as a side effect for use by future schema-validation tools. |
| redmine_describe_trackerA | Return an enriched schema for one tracker. Args:
tracker: numeric id or name (e.g. Includes available statuses, priorities, and — when
|
| redmine_describe_projectA | Return a project description (trackers, modules, issue categories). Args:
project: numeric id or identifier slug (e.g. Cache-backed. First call populates the cache. |
| redmine_list_projectsA | List projects (paginated, optional substring filter). Args: query: optional case-insensitive substring filter on name/identifier/description (applied client-side after fetch). limit: page size, max 100. Defaults to 25. offset: skip the first N results. Defaults to 0. Returns a JSON document with |
| redmine_create_projectB | Create a new project. Args:
name: required project display name.
identifier: required URL slug (lowercase, hyphens, no spaces).
description: optional project description.
homepage: optional homepage URL.
is_public: whether the project is publicly visible (default True).
parent_id: optional parent project id ( Honors |
| redmine_update_projectA | Update a project. Partial — only supplied fields are sent. Args:
project_id: numeric id or identifier slug.
name: optional new display name.
description: optional new description.
homepage: optional new homepage URL.
is_public: project visibility.
parent_id: new parent project id ( Returns the refreshed project. Honors |
| redmine_delete_projectA | Permanently delete a project and all its data. Args: project_id: numeric id or identifier slug. Destructive — cannot be undone. Honors |
| redmine_archive_projectA | Archive a project (Redmine 5.0+). Reversible via unarchive. Args: project_id: numeric id or identifier slug. Honors |
| redmine_unarchive_projectA | Unarchive a previously archived project (Redmine 5.0+). Args: project_id: numeric id or identifier slug. Honors |
| redmine_invalidate_cacheA | Drop cached entries for a scope. No HTTP request is made. Args:
scope: one of:
- Use after Redmine config changes (new trackers, edited workflow, moved roles). The auth fingerprint is preserved so subsequent calls don't trigger a reconcile-wipe. |
| redmine_get_issueA | Fetch a single issue. Args:
issue_id: numeric Redmine issue id.
include: comma-separated includes (default
Read-only — no validation, no caching. |
| redmine_create_issueA | Create an issue with cache-aware id resolution. Args:
project: numeric id or identifier slug (e.g. Returns the created issue or a structured validation error.
Honors |
| redmine_update_issueA | Update an issue, with reactive workflow validation on status changes. Args:
issue_id: numeric Redmine issue id.
subject: optional new subject.
description: optional new description.
status: optional id or name (e.g. On a status change the cache pre-flight short-circuits any
previously-observed disallowed transition with a
:class: |
| redmine_close_issueA | Move an issue to its first Args: issue_id: numeric Redmine issue id. note: optional closing comment (becomes a journal entry). Use actual newline characters for multi-line notes, not backslash-n escape sequences. Redmine renders notes as Markdown (headings, bold, tables, lists all work). On a workflow-disallowed direct closure, the response is repackaged
with a closure-specific hint listing the allowed next states.
Honors |
| redmine_delete_issueA | Permanently delete an issue. Cannot be undone. Args:
issue_id: numeric Redmine issue id.
confirm_destructive: must be Returns the deleted issue's id and subject for confirmation.
Honors |
| redmine_search_issuesA | Search/list issues with optional filters and pagination. Args:
query: substring on issue subject (Redmine Returns |
| redmine_add_commentA | Append a comment (journal entry) to an existing issue. Args:
issue_id: numeric Redmine issue id.
note: comment body. Empty/whitespace-only notes are rejected
client-side. Use actual newline characters for multi-line
notes, not backslash-n escape sequences (literal Honors |
| redmine_get_journalsA | Return the structured journal entries for an issue. Args: issue_id: numeric Redmine issue id. Each journal entry has |
| redmine_update_journalA | Edit an existing journal entry's notes in place. Requires Redmine 5.0+. Use Args: journal_id: numeric journal id. notes: replacement note text. Pass an empty string to clear the note (deletes the journal if it has no field-change details). Use actual newline characters for multi-line notes, not backslash-n escape sequences. Redmine renders notes as Markdown. Honors |
| redmine_upload_attachmentA | Upload a file (path-restricted) and optionally attach it to an issue. Args:
file_path: absolute or Honors |
| redmine_download_attachmentA | Download an attachment by id to a path-restricted location. Args:
attachment_id: numeric Redmine attachment id (visible on issue
payloads at Validates downloaded byte count against Redmine's reported filesize
before writing — short reads are surfaced as
|
| redmine_create_time_entryA | Log a time entry against an issue or project. Args:
hours: required. Decimal (e.g. Honors |
| redmine_list_time_entriesA | List time entries with optional filters. Args:
issue_id, project_id, user_id: filter by reference id ( |
| redmine_update_time_entryB | Update a time entry. Partial — only supplied fields are sent. Honors |
| redmine_delete_time_entryA | Delete a time entry. Permanent — no soft-delete in Redmine. Honors |
| redmine_add_watcherA | Add a user as a watcher of an issue. Args: issue_id: numeric Redmine issue id. user_id: numeric user id to add to the watcher list. Idempotent on the Redmine side. Honors |
| redmine_remove_watcherA | Remove a user from an issue's watcher list. Args: issue_id: numeric Redmine issue id. user_id: numeric user id to remove. A 404 from Redmine means the watcher wasn't on the list (vs. issue
not found — distinguishable by status code on the underlying error
payload). Honors |
| redmine_list_watchersA | Return the current watcher list for an issue. Each watcher entry has |
| redmine_get_wiki_pageA | Fetch a wiki page (optionally a historical version). Args:
project: numeric id or identifier slug (e.g. Returns the page (text, version, author, timestamps) or
|
| redmine_create_wiki_pageA | Create a new wiki page; refuses to overwrite an existing one. Args: project: numeric id or identifier slug. title: new wiki page title (URL-encoded automatically). text: markdown body. Empty/whitespace-only is rejected client-side. parent_title: optional parent wiki page (for hierarchy). comments: optional revision comment. Pre-flight: GET first to confirm the page doesn't exist. If it does,
returns |
| redmine_update_wiki_pageA | Update an existing wiki page (with optional optimistic concurrency). Args:
project: numeric id or identifier slug.
title: target wiki page title.
text: new markdown body. Empty is rejected client-side.
version: if non-zero, included as the optimistic-lock version. A
mismatch surfaces as Returns the updated page (re-fetched after PUT for fresh metadata).
Honors |
| redmine_delete_wiki_pageA | Permanently delete a wiki page (and all its historical versions). Args: project: numeric id or identifier slug. title: wiki page title. Returns |
| redmine_list_relationsA | List all relations on an issue (both directions). Args: issue_id: numeric Redmine issue id. Each relation has |
| redmine_add_relationA | Create a relation between two issues. Args:
issue_id: source issue.
target_issue_id: the other end of the relation.
relation_type: one of Honors |
| redmine_remove_relationA | Delete a relation by its numeric id. Args:
relation_id: id from Honors |
| redmine_set_parent_issueA | Set or clear an issue's parent. Args:
issue_id: issue whose parent is being set.
parent_issue_id: numeric id of the new parent. Pass Parent/child is mechanically a field on the issue ( |
| redmine_bulk_create_issuesA | Bulk-create issues with subject idempotency. Args:
issues: list of issue spec dicts (≤ 100 per call). Each spec
requires Returns |
| redmine_bulk_update_issuesA | Apply the same field updates to many issues in one call. Args:
issue_ids: list of numeric issue ids (≤ 100 per call).
subject, description, status, priority, assigned_to_id, notes:
same semantics as Returns |
| redmine_bulk_closeA | Close many issues in one call (with optional shared note). Args: issue_ids: list of numeric issue ids (≤ 100 per call). note: optional shared closing comment (becomes a journal on each). stop_on_error: if True, halt on the first workflow-blocked or otherwise-failed closure. Returns |
| redmine_list_versionsA | List all versions / milestones defined on a project. Args: project: numeric id or identifier slug. Each version has |
| redmine_get_versionA | Fetch one version by id. Returns the version (name, status, due_date, sharing, ...) or
|
| redmine_create_versionA | Create a version on a project. Args:
project: numeric id or identifier slug.
name: required, must be unique within the project.
description: optional.
status: one of Honors |
| redmine_update_versionC | Update a version. Partial — only supplied fields are sent. Returns the refreshed version. Honors |
| redmine_delete_versionA | Delete a version by id. Permanent — no soft-delete. A 422 typically means the version is still referenced by issues; clear
those first via |
| redmine_assign_issue_to_versionA | Assign (or clear) an issue's target version. Args:
issue_id: numeric issue id.
version_id: numeric version id; pass Thin wrapper over |
| redmine_list_newsA | List news entries (global feed, or scoped to a project). Args: project: numeric id or identifier slug. Empty for the global feed across every project the API key can see. limit: page size (capped server-side at 100). offset: skip the first N results. Returns |
| redmine_list_messagesA | List forum messages on a board. Args:
board_id: numeric Redmine board id (visible in the project's
forums URL or via the web UI; Returns |
| redmine_list_boardsA | List forum boards for a project. Args: project_id: numeric id or identifier slug. Returns |
| redmine_create_messageA | Create a new forum topic on a board. Args: board_id: numeric board id. subject: required topic subject. content: optional message body. Honors |
| redmine_reply_messageA | Reply to an existing forum topic. Args: board_id: board the topic belongs to. topic_id: the parent message/topic id. content: required reply body. Honors |
| redmine_delete_messageB | Delete a forum message. Permanent. Honors |
| redmine_create_newsA | Create a news entry on a project. Args: project: numeric id or identifier slug. title: required news title. summary: optional short summary. description: optional full body. Honors |
| redmine_update_newsB | Update a news entry. Partial — only supplied fields are sent. Honors |
| redmine_delete_newsB | Delete a news entry. Permanent. Honors |
| redmine_list_membershipsA | List project members (paginated). Args: project_id: numeric id or identifier slug. limit: page size (capped at 100). offset: skip the first N results. Read-only. |
| redmine_add_membershipA | Add a member to a project. Args: project_id: project id or slug. user_id: user or group id to add. role_ids: list of role ids to assign (required, non-empty). Honors |
| redmine_update_membershipA | Update a membership's roles. Args:
membership_id: numeric membership id (from Honors |
| redmine_remove_membershipB | Remove a project membership. Inherited memberships can't be deleted. Honors |
| redmine_list_groupsA | List all groups (admin only). Read-only. |
| redmine_get_groupA | Fetch a group by id. Args:
group_id: numeric group id.
include: comma-separated includes: Read-only. |
| redmine_create_groupA | Create a group (admin only). Args: name: required group name. user_ids: optional list of user ids as initial members. Honors |
| redmine_update_groupC | Update a group's name. Honors |
| redmine_delete_groupA | Delete a group (admin only). Permanent. Honors |
| redmine_add_group_userC | Add a user to a group. Honors |
| redmine_remove_group_userC | Remove a user from a group. Honors |
| redmine_list_issue_categoriesA | List issue categories for a project. Args: project_id: numeric id or identifier slug. Read-only. |
| redmine_create_issue_categoryA | Create an issue category on a project. Args:
project_id: numeric id or identifier slug.
name: required category name.
assigned_to_id: optional default assignee. Honors |
| redmine_update_issue_categoryC | Update an issue category. Partial. Honors |
| redmine_delete_issue_categoryA | Delete an issue category. Permanent. Args:
category_id: numeric category id.
reassign_to_id: optional category id to reassign affected issues.
Honors |
| redmine_list_enumerationsA | List enumeration values for a given type. Args:
enum_type: one of Read-only reference data. |
| redmine_list_rolesA | List all roles. Read-only. |
| redmine_get_roleA | Fetch a role by id, including its permissions list. Read-only. |
| redmine_list_issue_statusesA | List all issue statuses with their Read-only reference data. |
| redmine_list_custom_fieldsA | List all custom field definitions (admin only). Returns id, name, field_format, customized_type, is_required, is_filter, possible_values, etc. Read-only. |
| redmine_list_queriesA | List available saved queries. Args: project_id: optional project id or slug to scope queries. Empty for all visible queries. Use the returned query ids with
|
| redmine_list_project_filesA | List files on a project's Files section. Args: project_id: numeric id or identifier slug. Read-only. |
| redmine_upload_project_fileA | Upload a file to a project's Files section. Args:
project_id: project id or slug.
file_path: path to file (path-restricted like attachment upload).
filename: optional override for the file name.
description: optional file description.
version_id: optional version to associate. Honors |
| redmine_get_userA | Fetch a user by id, or the current API user. Args:
user_id: numeric user id, or Read-only. |
| redmine_list_usersA | List users (admin only). Args:
name: filter by login, firstname, lastname, or mail.
group_id: filter by group membership. Read-only. Requires admin privileges. |
| redmine_searchA | Full-text search across all Redmine resource types. Searches issues, wiki pages, news, changesets, messages, projects,
and documents. Complements Args:
query: search string (required, non-empty).
project: optional project id or slug to scope the search.
Empty for global search.
resource_types: optional list of resource types to include
(e.g. Returns |
| redmine_requestA | ESCAPE HATCH — generic passthrough to any Redmine REST endpoint. Bypasses redmine-mcp's validation, workflow checks, and schema cache.
Every response carries Args:
method: HTTP verb. One of Honors |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Avicennasis/redmine-mcp-workflows'
If you have feedback or need assistance with the MCP directory API, please join our Discord server