Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Redmine MCP Server

OCI · GHCR.IO/IGOROLV/REDMINE-MCP-SERVER

Redmine for AI agents: issues, projects, wiki, attachments, time entries and release analytics

+41 this week 51 Trust /100

Last scanned (12 hours ago)

Scores higher than 79% of OCI servers

Category Project Management

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security0
  • No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
  • Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
  • Install-script risk not yet assessed.Unverified
  • Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
Provenance & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 19 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability85
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 2592 tokens (~81/item across 32 items; 32 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management67
  • Stability observed for 20 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage87
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 56% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 32 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 32 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 17 Oct 26 +41
    • Injection markers: unverified → pass ▲ security
    • Stability: unverified → 0.63 ▲ functional
    • Tool coverage: unverified → 100 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • Schema quality: unverified → 100 ▲ functional
  • 9 Oct 26 −32
    • Tool safety: pass → unverified ▼ security
    • Stability: Stability not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no schema to compare. security
    • Tool coverage: 100 → unverified ▼ functional
    • Capabilities: pass → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
  • 28 Sept 26 42

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 18 Oct 2026 · Analysed oci/ghcr.io/igorolv/redmine-mcp-server@0.1.1

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem oci
Reason No attestation published

Background: How many MCP packages publish verified provenance →

MCP tools · 32 exposed · ~2,592 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
compareVersions ~95

Compare the issue scope and completion of two known versions/milestones in one project. Returns issues unique to each, shared issues and closure percentages; use listVersions to discover IDs.

NameTypeReqDescription
projectIdstringyesProject identifier or numeric ID
versionId1integeryesFirst version/milestone ID; from listVersions
versionId2integeryesSecond version/milestone ID; from listVersions
NameTypeReqDescription
first––Scope statistics for the first version.
inBotharray|null–Issues present in both versions.
onlyInFirstarray|null–Issues present only in the first version.
onlyInSecondarray|null–Issues present only in the second version.
projectIdstring|null–Project identifier the versions belong to.
second––Scope statistics for the second version.

No examples provided.

getAttachment ~129

Retrieve and inspect one known issue attachment by downloading it to the server's local snapshot and extracting text from supported documents or archives. Use getIssue to discover attachment IDs; images and unsupported binaries return metadata and a local path without extracted text. Text cut by the limits stays readable at each part's localPath.

NameTypeReqDescription
attachmentIdintegeryes–
issueIdintegeryes–
maxCharsinteger–Total character budget for extracted text across all parts
partLimitinteger–Per-part character cap, mainly for ZIP entries; defaults to maxChars when maxChars is set
NameTypeReqDescription
attachment–––
compressionNotesarray|null–Human-readable notes describing how this response was compressed to fit the response size budget. Null/empty when no compression was applied.
extractionTypestring|null–Detected document kind used for extraction (`image`, `pdf`, `docx`, `xlsx`, `pptx`, `text`, `zip`, ...).
fileUristring|null–RFC 3986 `file://` URI pointing at the downloaded file.
limits–––
localPathstring|null–Absolute filesystem path of the downloaded file.
localSizeintegeryesSize of the downloaded file on disk, in bytes (-1 if the size could not be determined).
notestring|null–Free-text note explaining the result, typically present when text extraction was skipped.
partsarray|null–Extracted parser output. Text parts carry content; images and unsupported binaries carry localPath/fileUri and an explanatory note.
textExtractedbooleanyesTrue when at least one part contains successfully extracted text.
truncatedbooleanyesTrue when at least one part's text was cut to fit response size limits.

No examples provided.

getBlockerChain ~55

Trace only blocks/blocked_by relations recursively in both directions, returning the full upstream and downstream blocking dependency chains. Use getIssueTree for parent/subtask hierarchy and other direct relation types.

NameTypeReqDescription
issueIdintegeryes–
NameTypeReqDescription
blockedByarray|null–Issues that block the root (recursively), each annotated with its depth from the root.
blocksarray|null–Issues that depend on the root (recursively), each annotated with its depth from the root.
chainDepthintegeryesEnd-to-end depth of the chain (upstream + 1 + downstream).
rootobject|null–The issue the chain is centred on.
totalIssuesintegeryesTotal number of distinct issues in the chain (including the root).

No examples provided.

getCurrentUser ~52

Retrieve the identity and user ID of the currently authenticated API-key user. Use the ID in assignee/user filters; getMyIssues, getMyTimeEntries and the default getUserWorkload do not require it.

Input schema present but exposes no named parameters.

NameTypeReqDescription
idintegeryes–
loginstring|null–Login name.
mailstring|null–Email address, may be absent if not visible to the API caller.
namestring|null–Display name (firstname + lastname).

No examples provided.

getIssue ~128

Retrieve complete context for one known issue ID: core and custom fields, subtasks, direct relations, journals, attachments and linked changesets, with focus modes controlling compression. Use getIssueTree for recursive structure, getIssueJournal for a journal omitted or shortened by compression, or getAttachment for file content.

NameTypeReqDescription
focusstring–Response focus: default, implementation (implementation-relevant text and all changeset revisions), timeline (who-did-what-and-when), changesets (issue identity fields and changesets only), or full (…
issueIdintegeryes–
NameTypeReqDescription
assignedTo––User currently assigned to the issue; null when unassigned.
attachmentsarray|null–Files attached to the issue.
author––Author who created the issue.
category––Issue category within the project.
changesetsarray|null–Linked VCS changesets/commits, when the Redmine repository integration exposes them.
compressionNotesarray|null–Human-readable notes describing how this response was compressed to fit the response size budget. Null/empty when no compression was applied.
createdOnstring|null–Creation timestamp in ISO-8601.
customFieldsarray|null–Project-defined custom field values, in display form.
descriptionstring|null–Long-form description of the issue, may contain Textile or Markdown markup depending on the Redmine instance.
doneRatiointegeryesCompletion percentage from 0 to 100.
dueDatestring|null–Planned due date in ISO-8601 (yyyy-MM-dd).
estimatedHoursnumber|null–Estimated effort in hours.
fixedVersion––Target version / milestone this issue is planned for.
focusNotesarray|null–Human-readable notes describing semantic focus shaping applied before response-size compression. Null/empty when no focus shaping was applied.
idintegeryesIssue identifier (the # shown in Redmine).
journalsarray|null–Chronological history entries — notes, status changes, field edits.
priority––Priority (e.g. Normal, High, Urgent).
project––Project the issue belongs to.
relatedarray|null–Enriched references to related issues (parent, siblings, children, relations) — id + subject/tracker/status + roles. Populated when the issue is loaded with related-issue enrichment; null otherwise.…
spentHoursnumber|null–Aggregated time already logged against the issue, in hours.
startDatestring|null–Planned start date in ISO-8601 (yyyy-MM-dd).
status––Current workflow status (e.g. New, In Progress, Closed).
subjectstring|null–Short title of the issue.
tracker––Tracker type (Bug, Feature, Task, ...).
updatedOnstring|null–Timestamp of the most recent change in ISO-8601.

No examples provided.

getIssueHistory ~66

Read an issue's chronological journal events and status intervals. Long text is shortened; use journalId with getIssueJournal for full text, and nextOffset to read any remaining events.

NameTypeReqDescription
issueIdintegeryes–
offsetinteger–Next page index from nextOffset
NameTypeReqDescription
compressionNotesarray|null–What text was shortened and how to retrieve it in full.
nextOffsetinteger|null–Pass this as offset to getIssueHistory for the next page; absent when complete.
offsetintegeryesIndex of this page's first event.
sourceUpdatedOnstring|null–Issue update timestamp; compare across pages to detect intervening edits.
statusDurationsarray|null–Status intervals beginning in this page's events.
timelinearray|null–Chronological timeline of creation and update events.
totalEventsintegeryesTotal creation and journal events available.

No examples provided.

getIssueJournal ~65

Retrieve one known issue journal entry in full, without response compression. Use a journal ID from getIssue or getIssueHistory when exact text is needed.

NameTypeReqDescription
issueIdintegeryes–
journalIdintegeryesJournal entry ID from getIssue or getIssueHistory
NameTypeReqDescription
createdOnstring|null–Timestamp the entry was recorded, ISO-8601.
detailsarray|null–Field-level changes recorded in this entry. Raw form — use issue history endpoints for resolved values.
idintegeryes–
notesstring|null–Free-text note. Empty when the entry only carries field changes.
user–––

No examples provided.

getIssueTree ~66

Explore one issue's parent chain and subtasks down to the requested depth. Root and ancestors are compact; use getIssue for full details or relations and getBlockerChain for blockers.

NameTypeReqDescription
depthinteger–How deep to traverse children
issueIdintegeryes–
NameTypeReqDescription
ancestorsarray|null–Compact parent chain in order parent → grandparent → ... up to the root-most ancestor.
fetchedCountintegeryesTotal issues fetched while building the tree (visibility into rate-limited traversal).
limitReachedbooleanyesTrue when traversal stopped at the safety limit and additional branches/depths exist.
root––Compact context for the target issue; call getIssue for full details and relations.
subtreeobject|null–The root issue plus its descendant subtree, expanded up to the requested depth.

No examples provided.

getMyIssues ~119

Browse issues assigned to the currently authenticated API-key user without first resolving their user ID. Use getUserWorkload for aggregated workload metrics or listIssues for another assignee.

NameTypeReqDescription
limitinteger––
offsetinteger––
projectIdstring–Project identifier or numeric ID
sortstring–Sort field and direction, e.g. 'updated_on:desc'
statusIdstring–Status filter: open (default), closed, * (all), or a numeric status ID from listStatuses
NameTypeReqDescription
page–––
user–––

No examples provided.

getMyTimeEntries ~97

Browse actual time-entry records logged by the currently authenticated API-key user without first resolving their user ID. Use listTimeEntries for another user or broader administrative filtering.

NameTypeReqDescription
fromstring–YYYY-MM-DD
issueIdinteger––
limitinteger––
offsetinteger––
projectIdstring–Project identifier or numeric ID
tostring–YYYY-MM-DD
NameTypeReqDescription
page–––
user–––

No examples provided.

getProject ~57

Inspect one known project's configuration and metadata, including description, trackers and enabled modules. Use getProjectSummary for aggregated issue metrics, listProjectMembers for people or listVersions for milestones.

NameTypeReqDescription
projectIdstringyesProject identifier or numeric ID
NameTypeReqDescription
descriptionstring|null–Project description (Textile/Markdown markup).
enabledModulesarray|null–Names of enabled Redmine modules (e.g. issue_tracking, wiki, repository).
homepagestring|null–Optional homepage URL configured for the project.
idintegeryes–
identifierstring|null–URL-safe project slug. Either this or the numeric id can be used as projectId for other tools.
isPublicbooleanyesTrue when the project is visible to anonymous users.
namestring|null–Display name shown in the UI.
parent––Parent project reference, null for top-level projects.
trackersarray|null–Trackers enabled for this project (Bug, Feature, ...).

No examples provided.

getProjectSummary ~96

Summarize one project's issue health, optionally scoped to a milestone: complete open/closed totals plus status, tracker, priority and assignee distributions, overdue work and estimated versus spent hours for the analyzed open-issue set. Use listIssues when issue records are needed instead of aggregates.

NameTypeReqDescription
projectIdstringyesProject identifier or numeric ID
versionIdinteger–Version/milestone ID; from listVersions
NameTypeReqDescription
analyzedOpenIssuesintegeryesNumber of open issues actually analyzed for the distributions below.
byAssigneearray|null–Per-assignee workload — total and overdue counts.
byPriority––Open-issue counts grouped by priority name.
byStatus––Open-issue counts grouped by status name.
byTracker––Open-issue counts grouped by tracker name.
counts–––
hours–––
overdueintegeryesNumber of open issues whose due date is in the past.
projectIdstring|null–Project identifier the summary was computed for.
truncatedbooleanyesTrue when the analyzed open issue set is a truncated slice of the full open set (analysis cap reached).
versionIdinteger|null–Version/milestone the summary was scoped to, null when unscoped.

No examples provided.

getReleaseRisks ~88

Assess readiness risks for one known version/milestone: open blockers, overdue work, high-priority unresolved issues and unassigned tasks, with a risk score. Use getVersionChangelog for the milestone issue breakdown rather than risk triage.

NameTypeReqDescription
projectIdstringyesProject identifier or numeric ID
versionIdintegeryesVersion/milestone ID; from listVersions
NameTypeReqDescription
analyzedIssuesintegeryesNumber of issues actually analyzed for risks.
categoriesarray|null–Risk categories that contain at least one issue.
highPriorityNamesarray|null–Priority names treated as 'high' by the heuristic (top third of the priority ladder, or just the highest one).
projectIdstring|null–Project identifier the version belongs to.
scoreobject|null–Aggregate risk score.
totalOpenIssuesintegeryesTotal open issues for the version across all pages.
truncatedbooleanyesTrue when the analyzed set is a truncated slice of the full open set.
version–––
versionIdintegeryesVersion/milestone identifier.

No examples provided.

getStaleIssues ~79

Identify neglected open issues in one project by last-update age, ordered most stale first. Use listIssues for general field or status filters; this tool is for inactivity triage.

NameTypeReqDescription
daysSinceUpdateinteger–Minimum days since last update
limitinteger––
projectIdstringyesProject identifier or numeric ID
NameTypeReqDescription
daysSinceUpdateintegeryesInactivity threshold in days that was applied.
issuesarray|null–Stale issues that crossed the threshold.
limitintegeryesMaximum number of results the search was capped at.
oldestDaysSinceUpdatedintegeryesHow many days the oldest returned issue has been untouched. 0 when the result set is empty.
projectIdstring|null–Project identifier the search was scoped to.

No examples provided.

getUserWorkload ~89

Analyze one user's open-issue workload by project and priority, including overdue count, estimated versus spent hours and top issues; omitting userId selects the API-key user. This returns aggregates, not issue records; use getMyIssues for the current user or listIssues for a specified user.

NameTypeReqDescription
projectIdstring–Project identifier or numeric ID
userIdinteger––
NameTypeReqDescription
analyzedIssuesintegeryesNumber of issues actually analyzed (may be smaller than totalOpenIssues when analysis was truncated).
byProjectarray|null–Per-project breakdown of the user's workload.
hours–––
overdueintegeryesNumber of analyzed issues whose due date is in the past.
projectIdstring|null–Project the workload was scoped to, null when scope is all projects.
topIssuesarray|null–Up to 10 most important open issues for the user, sorted by priority then by due date.
totalOpenIssuesintegeryesTotal number of open issues assigned to the user across all pages.
truncatedbooleanyesTrue when the analyzed set is a truncated slice of the full open set.
userIdintegeryesUser identifier the analysis is for.
userNamestring|null–Display name of the user. May be a placeholder like 'User #42' when only an id was provided.

No examples provided.

getVersionChangelog ~81

Summarize the issue scope of one known version/milestone as open and closed counts with issues grouped by tracker. Use getReleaseRisks for readiness risks or listVersions to discover the version ID.

NameTypeReqDescription
projectIdstringyesProject identifier or numeric ID
versionIdintegeryesVersion/milestone ID; from listVersions
NameTypeReqDescription
analyzedIssuesintegeryesNumber of issues actually analyzed for this changelog.
byTrackerobject|null–Issues grouped by tracker name (Bug, Feature, ...).
counts–––
hours–––
projectIdstring|null–Project identifier the version belongs to.
totalIssuesintegeryesTotal number of issues tied to this version across all pages.
truncatedbooleanyesTrue when the analyzed set is a truncated slice of the full issue set.
version–––
versionIdintegeryesVersion/milestone identifier.

No examples provided.

getWikiPage ~80

Read the complete markup content and current version of one known project wiki page. Use listWikiPages or searchWikiPages to discover its title; the returned version is required by updateWikiPage.

NameTypeReqDescription
pageTitlestringyesWiki page title (use 'Wiki' for the start page)
projectIdstringyesProject identifier or numeric ID
NameTypeReqDescription
attachmentsarray|null–Files attached to the page. Empty in index listings.
author––Author of the most recent revision.
commentsstring|null–Comment attached to the most recent revision.
createdOnstring|null–When the page was first created, ISO-8601.
textstring|null–Page body in Textile or Markdown markup depending on the Redmine instance. Null in index listings.
titlestring|null–Page title (URL-escaped form used as the path).
updatedOnstring|null–When the page was last edited, ISO-8601.
versioninteger|null–Monotonic revision number of the page. Null for a content-less page in index listings.

No examples provided.

listIssueCategories ~48

Discover issue category IDs and names configured for one known project. Reuse the IDs as categoryId in createIssue or updateIssue.

NameTypeReqDescription
projectIdstringyesProject identifier or numeric ID
NameTypeReqDescription
itemsarray|null–Entity references.

No examples provided.

listIssues ~234

Browse issue summaries with structured Redmine filters, saved queries, custom-field filters, sorting and pagination. Use searchIssues when only free text is known, or getIssue for one known issue's complete context.

NameTypeReqDescription
assignedToUserIdinteger––
customFieldFiltersstring–Custom field filters in query-string form, e.g. 'cf_10=rtk&cf_3=502167'
limitinteger––
offsetinteger––
priorityIdinteger–Priority ID; from listPriorities
projectIdstring–Project identifier or numeric ID
queryIdinteger–Saved query ID; from listQueries
sortstring–Sort field and direction, e.g. 'updated_on:desc'
statusIdstring–Status filter: open (default), closed, * (all), or a numeric status ID from listStatuses
trackerIdinteger–Tracker ID (issue type); from listTrackers
versionIdinteger–Version/milestone ID; from listVersions
NameTypeReqDescription
issuesarray|null–Issues on this page.
limitintegeryesMaximum number of issues that may appear on this page.
offsetintegeryesZero-based offset of the first issue on this page.
totalCountintegeryesTotal number of issues matching the query across all pages.

No examples provided.

listPriorities ~41

Discover valid issue priority IDs and names before filtering, creating or updating issues. Reuse the IDs as priorityId in listIssues, createIssue or updateIssue.

Input schema present but exposes no named parameters.

NameTypeReqDescription
itemsarray|null–Entity references.

No examples provided.

listProjectMembers ~74

Discover the users and groups that belong to one project, their IDs and assigned roles. Use when choosing or interpreting assignees; getUserWorkload analyzes a user's issues rather than membership.

NameTypeReqDescription
limitinteger––
offsetinteger––
projectIdstringyesProject identifier or numeric ID
NameTypeReqDescription
limitintegeryesMaximum number of memberships that may appear on this page.
membersarray|null–Memberships on this page.
offsetintegeryesZero-based offset of the first membership on this page.
totalCountintegeryesTotal number of memberships across all pages.

No examples provided.

listProjects ~55

Discover accessible Redmine projects and their valid identifiers before project-scoped operations when the target project is unknown. Returns project summaries; use getProject for one project's details.

NameTypeReqDescription
limitinteger––
offsetinteger––
NameTypeReqDescription
limitintegeryesMaximum number of projects that may appear on this page.
offsetintegeryesZero-based offset of the first project on this page.
projectsarray|null–Projects on this page.
totalCountintegeryesTotal number of projects across all pages.

No examples provided.

listQueries ~57

Discover saved Redmine issue queries (stored filters), especially filters involving custom fields. Returns query IDs and names rather than issue results; pass a selected queryId to listIssues.

NameTypeReqDescription
limitinteger––
offsetinteger––
NameTypeReqDescription
limitintegeryesMaximum number of queries that may appear on this page.
offsetintegeryesZero-based offset of the first query on this page.
queriesarray|null–Queries on this page.
totalCountintegeryesTotal number of queries across all pages.

No examples provided.

listStatuses ~41

Discover valid Redmine issue status IDs and names for structured issue filtering or mutation. Reuse the IDs as statusId in listIssues, createIssue or updateIssue.

Input schema present but exposes no named parameters.

NameTypeReqDescription
itemsarray|null–Entity references.

No examples provided.

listTimeEntries ~114

Browse actual Redmine time-entry records using project, issue, user and date-range filters. Use getMyTimeEntries for the API-key user without looking up an ID; getUserWorkload returns aggregates instead.

NameTypeReqDescription
fromstring–YYYY-MM-DD
issueIdinteger––
limitinteger––
offsetinteger––
projectIdstring–Project identifier or numeric ID
tostring–YYYY-MM-DD
userIdinteger––
NameTypeReqDescription
limitintegeryesMaximum number of entries that may appear on this page.
offsetintegeryesZero-based offset of the first entry on this page.
timeEntriesarray|null–Time entries on this page.
totalCountintegeryesTotal number of time entries across all pages.

No examples provided.

listTimeEntryActivities ~46

Discover valid time-entry activity IDs and names for interpreting logged hours or creating a time entry. Reuse an ID as activityId in createTimeEntry when the default activity is unsuitable.

Input schema present but exposes no named parameters.

NameTypeReqDescription
itemsarray|null–Entity references.

No examples provided.

listTrackers ~44

Discover valid tracker (issue type) IDs and names before filtering, creating or updating issues. Reuse the IDs as trackerId in listIssues, createIssue or updateIssue.

Input schema present but exposes no named parameters.

NameTypeReqDescription
itemsarray|null–Entity references.

No examples provided.

listVersions ~63

Discover versions/milestones of one project and the IDs used by issue filters and release analytics. Returns milestone metadata, not issue scope or risk; use getVersionChangelog or getReleaseRisks for those.

NameTypeReqDescription
projectIdstringyesProject identifier or numeric ID
NameTypeReqDescription
versionsarray|null–Project versions.

No examples provided.

listWikiPages ~56

Discover wiki page titles in one known project without loading every page body. Use getWikiPage to read a selected title or searchWikiPages when only content terms are known.

NameTypeReqDescription
projectIdstringyesProject identifier or numeric ID
NameTypeReqDescription
pagesarray|null–Wiki pages.

No examples provided.

searchAll ~117

Search by free text across mixed Redmine content such as issues, wiki pages, news, documents, changesets, messages and projects. Use searchIssues for richer issue-only results or searchWikiPages for wiki-only discovery.

NameTypeReqDescription
limitinteger––
offsetinteger––
projectIdstring–Project identifier or numeric ID
searchQuerystringyes–
typesstring–Comma-separated content types to include: issues, wiki_pages, news, documents, changesets, messages, projects
NameTypeReqDescription
limitintegeryesMaximum number of hits that may appear on this page.
offsetintegeryesZero-based offset of the first hit on this page.
resultsarray|null–Hits on this page.
totalCountintegeryesTotal number of hits across all pages.

No examples provided.

searchIssues ~79

Find issue summaries by full-text query, optionally within one project. Use listIssues for exact field, saved-query or custom-field filtering, then getIssue to inspect a selected result.

NameTypeReqDescription
limitinteger––
offsetinteger––
projectIdstring–Project identifier or numeric ID
searchQuerystringyes–
NameTypeReqDescription
issuesarray|null–Issues on this page.
limitintegeryesMaximum number of issues that may appear on this page.
offsetintegeryesZero-based offset of the first issue on this page.
totalCountintegeryesTotal number of issues matching the query across all pages.

No examples provided.

searchWikiPages ~81

Find project wiki pages by full-text content query, optionally across all accessible projects. Use getWikiPage to read a selected result or searchAll when non-wiki content should also match.

NameTypeReqDescription
limitinteger––
offsetinteger––
projectIdstring–Project identifier or numeric ID
searchQuerystringyes–
NameTypeReqDescription
limitintegeryesMaximum number of hits that may appear on this page.
offsetintegeryesZero-based offset of the first hit on this page.
resultsarray|null–Hits on this page.
totalCountintegeryesTotal number of hits across all pages.

No examples provided.

Install

How do I install the Redmine MCP Server server?

Redmine MCP Server runs locally as a container image, launched with docker run --rm -i -e REDMINE_URL -e REDMINE_API_KEY -e REDMINE_MCP_WRITE_ENABLED ghcr.io/igorolv/redmine-mcp-server:0.1.1. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

oci · ghcr.io/igorolv/redmine-mcp-server

# add to Claude Code
claude mcp add igorolv-redmine-mcp-server -- docker run --rm -i -e REDMINE_URL -e REDMINE_API_KEY -e REDMINE_MCP_WRITE_ENABLED ghcr.io/igorolv/redmine-mcp-server:0.1.1

This image reads REDMINE_URL, REDMINE_API_KEY and REDMINE_MCP_WRITE_ENABLED. Set them in your client's env block for this server; docker run -e passes each one through to the container.

Common questions

What is the Redmine MCP Server server?

Redmine MCP Server is listed in the public MCP registry as io.github.igorolv/redmine-mcp-server. Redmine for AI agents: issues, projects, wiki, attachments, time entries and release analytics. This page covers its container image (ghcr.io/igorolv/redmine-mcp-server).

Is the Redmine MCP Server server safe to use?

Redmine MCP Server scores 51 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Redmine MCP Server server expose?

Redmine MCP Server exposes 32 tools: getAttachment, getBlockerChain, getStaleIssues, getIssueHistory, getIssueTree, and 27 more. Their descriptions and schemas cost roughly 2,592 tokens of context every time the server is loaded.

Is the Redmine MCP Server server still maintained?

Redmine MCP Server is still listed as active in the MCP registry. We last reached this channel on 18 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Redmine MCP Server server under?

Redmine MCP Server declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.