Skip to main content
Glama
GonzaloRando03

Redmine MCP Server

README.md
# Redmine MCP Server

MCP (Model Context Protocol) server for Redmine, built with TypeScript.

## Requirements

- Node.js 18+
- A Redmine instance with REST API enabled
- Redmine API Key

## Installation

```bash
npm install
npm run build
```

## Configuration

Environment variables:

| Variable          | Description                                           | Required |
| ----------------- | ----------------------------------------------------- | -------- |
| `REDMINE_URL`     | Redmine base URL (e.g. `https://redmine.example.com`) | Yes      |
| `REDMINE_API_KEY` | Redmine API Key                                       | Yes      |

## Usage with VS Code / Claude Desktop

Add to your MCP configuration file:

```json
{
  "mcpServers": {
    "redmine": {
      "command": "npx",
      "args": ["-y", "redmine-server-mcp@latest"]
      "env": {
        "REDMINE_URL": "https://redmine.example.com",
        "REDMINE_API_KEY": "your-api-key"
      }
    }
  }
}
```

## Available Tools

### Projects (7)

- `list_projects` — List projects
- `get_project` — Project details
- `create_project` — Create project
- `update_project` — Update project
- `archive_project` — Archive project
- `unarchive_project` — Unarchive project
- `delete_project` — Delete project

### Issues (7)

- `list_issues` — List issues with filters
- `get_issue` — Issue details
- `create_issue` — Create issue
- `update_issue` — Update issue
- `delete_issue` — Delete issue
- `add_watcher` — Add watcher
- `remove_watcher` — Remove watcher

### Users (8)

- `list_users` — List users
- `get_user` — User details
- `create_user` — Create user
- `update_user` — Update user
- `delete_user` — Delete user
- `get_current_user` — Current user
- `get_my_account` — My account
- `update_my_account` — Update my account

### Time Entries (5)

- `list_time_entries` — List time entries
- `get_time_entry` — Details
- `create_time_entry` — Create
- `update_time_entry` — Update
- `delete_time_entry` — Delete

### Groups (7)

- `list_groups`, `get_group`, `create_group`, `update_group`, `delete_group`
- `add_user_to_group`, `remove_user_from_group`

### Memberships (5)

- `list_project_memberships`, `get_membership`, `create_project_membership`, `update_membership`, `delete_membership`

### Versions (5)

- `list_project_versions`, `get_version`, `create_version`, `update_version`, `delete_version`

### Issue Categories (5)

- `list_issue_categories`, `get_issue_category`, `create_issue_category`, `update_issue_category`, `delete_issue_category`

### Issue Relations (4)

- `list_issue_relations`, `get_issue_relation`, `create_issue_relation`, `delete_issue_relation`

### Wiki (5)

- `list_wiki_pages`, `get_wiki_page`, `get_wiki_page_version`, `create_or_update_wiki_page`, `delete_wiki_page`

### News (5)

- `list_all_news`, `list_project_news`, `get_news`, `create_news`, `update_news`

### Attachments & Files (6)

- `get_attachment`, `update_attachment`, `delete_attachment`, `upload_file`
- `list_project_files`, `create_project_file`

### Search (2)

- `search`, `search_in_project`

### Enumerations (3)

- `list_issue_priorities`, `list_time_entry_activities`, `list_document_categories`

### Catalogs (4)

- `list_trackers`, `list_issue_statuses`, `list_custom_fields`, `list_queries`

### Roles (2)

- `list_roles`, `get_role`

### Journals (1)

- `update_journal`

### Agile Sprints — RedmineUP Agile plugin (7)

> Requires the [RedmineUP Agile plugin](https://www.redmineup.com/pages/plugins/agile) installed in your Redmine instance.

- `list_agile_sprints` — List sprints of a project
- `get_agile_sprint` — Sprint details
- `create_agile_sprint` — Create sprint
- `update_agile_sprint` — Update sprint
- `delete_agile_sprint` — Delete sprint
- `get_issue_agile_data` — Get sprint, story points and position of an issue
- `assign_issue_to_sprint` — Assign (or remove) an issue to a sprint

## Development

```bash
npm run dev # Run in development mode
npm test    # Run tests
npm run build # Production build
```

## Architecture

The project follows Clean Architecture:

```
src/
├── domain/         # Types, interfaces, errors
├── application/    # Services (interfaces) and use cases
└── infrastructure/ # Controllers (HTTP), MCP server, utils
```

## License

MIT

TDQS

B3.2/5.0

Scored across 89 tools

Disambiguation4/5

Most tools have clearly distinct purposes due to descriptive names and detailed descriptions. However, the large number (89) introduces some potential overlaps, such as multiple ways to list/filter issues (list_issues, list_issues_by_sprint, search, search_in_project) and get_issue_agile_data vs get_issue. These could cause misselection if descriptions are not carefully read.

Naming Consistency5/5

Tool names consistently follow a verb_noun pattern (e.g., create_issue, list_projects, update_user). The verbs are well-chosen and indicate the action clearly. There are very few deviations (e.g., create_or_update_wiki_page), and overall the pattern is predictable and uniform.

Tool Count3/5

With 89 tools, the count is high for a single server, but it reflects the broad scope of Redmine's functionality (multiple entities, CRUD, Agile plugin, etc.). While each tool serves a specific purpose, the server could benefit from consolidation (e.g., merging some list/get tools). The count is borderline excessive but not unreasonable for the domain.

Completeness4/5

The tool set covers CRUD operations for most Redmine entities (projects, issues, users, groups, versions, news, wiki, time entries, etc.) and includes specialized operations like agile sprints and file uploads. Minor gaps exist (e.g., no direct custom field value management, no workflow transitions), but overall the surface is comprehensive for typical use.

Maintenance

ActivityInactive
ResponsivenessNo issues