npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@thelabnyc/redmine-mcp

v0.3.0

Published

An MCP (Model Context Protocol) server that allows AI agents like Claude to interact with Redmine project management data.

Readme

@thelabnyc/redmine-mcp

An MCP (Model Context Protocol) server that allows AI agents like Claude to interact with Redmine project management data.

Features

  • Fetch issue details by ID, including subject, description, status, priority, and assignee
  • Update issues: change status, assign users, add notes, and more
  • Log time spent on issues with integrated time tracking
  • List project members to find user IDs for assignments
  • List available issue statuses to find valid status IDs
  • Retrieve change history (journals) with every request
  • Optionally include attachments, watchers, relations, and child issues

Installation

npm install @thelabnyc/redmine-mcp

Or clone and build from source:

git clone https://gitlab.com/thelabnyc/redmine-mcp.git
cd redmine-mcp
npm install
npm run build

Configuration

The server requires two environment variables:

| Variable | Description | Example | | ----------------- | --------------------------------- | --------------------------- | | REDMINE_URL | Base URL of your Redmine instance | https://mycompany.plan.io | | REDMINE_API_KEY | Your Redmine API key | abc123def456... |

Getting your Redmine API Key

  1. Log into your Redmine instance
  2. Go to My Account (click your name in the top right)
  3. In the right sidebar, find API access key
  4. Click Show to reveal your key, or Reset to generate a new one

Usage with Claude Code

Add the server to your Claude Code configuration:

Project-level configuration

Create or edit .claude/settings.json in your project:

{
    "mcpServers": {
        "redmine": {
            "command": "npx",
            "args": ["@thelabnyc/redmine-mcp"],
            "env": {
                "REDMINE_URL": "https://your-instance.plan.io",
                "REDMINE_API_KEY": "your-api-key-here"
            }
        }
    }
}

User-level configuration

Add to ~/.claude/settings.json to make available across all projects:

{
    "mcpServers": {
        "redmine": {
            "command": "npx",
            "args": ["@thelabnyc/redmine-mcp"],
            "env": {
                "REDMINE_URL": "https://your-instance.plan.io",
                "REDMINE_API_KEY": "your-api-key-here"
            }
        }
    }
}

Using a local build

If you've cloned the repository:

{
    "mcpServers": {
        "redmine": {
            "command": "node",
            "args": ["/path/to/redmine-mcp/dist/cli.js"],
            "env": {
                "REDMINE_URL": "https://your-instance.plan.io",
                "REDMINE_API_KEY": "your-api-key-here"
            }
        }
    }
}

Available Tools

get-issue

Fetch details about a Redmine issue by ID.

Parameters:

| Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------ | | issueId | string | Yes | Issue ID (e.g., #12345 or 12345) | | includeAttachments | boolean | No | Include file attachments | | includeWatchers | boolean | No | Include watchers list | | includeRelations | boolean | No | Include related issues | | includeChildren | boolean | No | Include child issues |

Note: Change history (journals) is always included by default.

Example usage in Claude:

"Look up Redmine issue #12345 and summarize the recent activity"

Or:

"What's the status of issue 6789? Include any attachments."

update-issue

Update a Redmine issue. Can change fields, add notes, and log time spent.

Parameters:

| Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ---------------------------------------------------- | | issueId | string | Yes | Issue ID (e.g., #12345 or 12345) | | subject | string | No | New issue subject/title | | description | string | No | New issue description | | statusId | number | No | Status ID to set | | priorityId | number | No | Priority ID to set | | assignedToId | number | No | User ID to assign (use 0 to unassign) | | trackerId | number | No | Tracker ID to set | | parentIssueId | number | No | Parent issue ID | | startDate | string | No | Start date (YYYY-MM-DD format) | | dueDate | string | No | Due date (YYYY-MM-DD format) | | doneRatio | number | No | Percent done (0-100) | | estimatedHours | number | No | Estimated hours for the issue | | notes | string | No | Comment/note to add to the issue journal | | privateNotes | boolean | No | Make the notes private | | logHours | number | No | Hours to log as a time entry | | logActivityId | number | No | Activity ID for time entry (uses default if omitted) | | logComments | string | No | Comments for the time entry | | logSpentOn | string | No | Date for time entry (YYYY-MM-DD, defaults to today) |

Example usage in Claude:

"Update issue #12345 to status 2 and assign to user 5"

Or:

"Add a note to issue #6789 saying 'Fixed the bug' and log 1.5 hours"

Or:

"Mark issue #12345 as 75% done and log 2 hours of development time"

list-project-members

List all members of a Redmine project. Use this to find user IDs for assigning issues.

Parameters:

| Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------- | | projectId | string | Yes | Project ID or identifier (e.g., my-project or 1) | | limit | number | No | Maximum number of members to return (default 25) | | offset | number | No | Number of members to skip for pagination |

Example usage in Claude:

"List all members of the 'my-project' project"

Or:

"Who can I assign issues to in project #1?"

list-issue-statuses

List all available issue statuses. Use this to find valid status IDs when updating issues.

Parameters: None

Example usage in Claude:

"What statuses can I set for issues?"

Or:

"List the available issue statuses so I can update issue #123"

Development

# Install dependencies
npm install

# Run tests
npm test

# Run tests in watch mode
npm run test:watch

# Build
npm run build

# Lint
npm run lint

License

ISC