Skip to main content
Glama
README.md
# redmine-mcp

Redmine のチケットを操作する MCP(Model Context Protocol)サーバーです。Cursor や Claude Desktop などから、チケットの取得・一覧・作成・更新ができます。

## 要件

- Node.js 18.0.0 以上
- Redmine で REST API が有効であること
- Redmine の API アクセスキー(個人設定で取得)

## セットアップ

クローンやビルドは不要で、次の 2 ファイルを置くだけです。

1. **`.cursor/redmine.json`** を作成する。次のいずれかに配置する。
   - **ワークスペースのルート**(推奨): プロジェクトごとに設定を変えたい場合
   - **`~/.cursor/redmine.json`**(ホーム): 複数プロジェクトで同じ設定を使う場合。ワークスペースに設定が無いときにフォールバックとして読まれる

```json
{
  "redmineUrl": "https://your-redmine.example.com",
  "apiKey": "your-api-access-key"
}
```

2. **`.cursor/mcp.json`** に本サーバーを追加する。

```json
{
  "mcpServers": {
    "redmine": {
      "command": "npx",
      "args": ["-y", "github:ytakeuchi0222/redmine-mcp"]
    }
  }
}
```

初回実行時はリポジトリの取得とビルドが走るため、少し時間がかかります。MCP サーバーは起動時の**カレントディレクトリ**を基準に `.cursor/redmine.json` を探します(Cursor で MCP を起動する場合、カレントディレクトリは通常「開いているフォルダ」=ワークスペースのルートに設定されます)。

**注意**: `redmine.json` には API キーが含まれるため、git で管理する場合は`.gitignore` に含めてリポジトリにコミットしないでください。

## 提供ツール

| ツール名 | 説明 |
|----------|------|
| `get_issue` | チケット 1 件を取得(`issue_id` 必須) |
| `list_issues` | チケット一覧を取得(`project_id`, `status_id`, `assigned_to_id`, `limit`, `offset` で絞り込み可能。`limit` は最大 100) |
| `create_issue` | チケットを新規作成(`project_id`, `subject` 必須) |
| `update_issue` | チケットを更新(`issue_id` 必須。`subject`, `description`, `status_id`, `assigned_to_id` は任意) |

## 具体的な使い方

### 1. 準備の確認

- **Redmine の API キー**: Redmine にログイン → 個人設定 → API アクセスキーで「表示」し、キーをコピーする。
- **設定ファイル**: このリポジトリを開いた状態で、`.cursor/redmine.json` に以下を保存する(値は自分の環境に合わせる)。

```json
{
  "redmineUrl": "https://あなたのRedmineのURL",
  "apiKey": "ここにAPIキーを貼る"
}
```

### 2. Cursor で使う

このリポジトリをワークスペースで開いた状態で、**チャット(Composer や Chat)**で次のように話しかけると、AI が Redmine MCP のツールを呼び出します。

| やりたいこと | チャットで入力する例 |
|--------------|----------------------|
| チケット 1 件を見る | 「チケット #123 の内容を教えて」 |
| 一覧を取得する | 「プロジェクト 5 のチケット一覧を 10 件出して」 |
| 担当チケットだけ | 「自分にアサインされているチケット一覧を出して」 |
| 未完了だけ | 「ステータスが open のチケットを 20 件」 |
| チケットを作成 | 「プロジェクト 1 に『〇〇の不具合』という件名でチケットを作成して」 |
| チケットを更新 | 「チケット #456 のステータスを『対応済み』に変更して」 |

ツール名を指定せず、**やりたいことを日本語で書く**だけで、AI が `get_issue` / `list_issues` / `create_issue` / `update_issue` を選んで実行します。

### 3. 各ツールのパラメータ(参考)

- **get_issue**: `issue_id`(例: 123)
- **list_issues**: `project_id`, `status_id`(数値 or `open` / `closed` / `*`), `assigned_to_id`(数値 or `me`), `limit`, `offset`(いずれも任意)
- **create_issue**: `project_id`, `subject`(必須), `description`, `tracker_id`, `status_id`, `priority_id`, `assigned_to_id`(任意)
- **update_issue**: `issue_id`(必須), `subject`, `description`, `status_id`, `assigned_to_id`(任意)

### 4. うまく動かないとき

- **「No server info found」**: MCP サーバーが起動していない。`.cursor/mcp.json` の設定が正しいか確認し、MCP を再起動する。
- **「設定ファイルが見つかりません」**: MCP は (1) ワークスペースの `.cursor/redmine.json`、(2) `~/.cursor/redmine.json` の順で探します。どちらかに `redmine.json` を置いているか確認してください。両方無い場合は「ワークスペースの .cursor/redmine.json と ~/.cursor/redmine.json のどちらも見つかりません」と表示されます。
- **4xx / 5xx エラー**: Redmine の URL・API キー、REST API 有効化、プロジェクト ID やチケット ID が正しいか確認する。

---

## 参照

- 要求定義・要件定義・実装方針: `docs/` 配下の Markdown
- [Redmine REST API (Issues)](https://www.redmine.org/projects/redmine/wiki/rest_issues)

TDQS

A3.5/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct operation on the issue resource: fetching one, listing many, updating, and creating. There is no overlap or ambiguity between the four tools.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern: get_issue, list_issues, update_issue, create_issue. The naming is predictable and easy to infer.

Tool Count5/5

Four tools is well-scoped for a Redmine issue-focused MCP server. Each tool provides a necessary and distinct capability without unnecessary bloat.

Completeness4/5

The core issue lifecycle is covered: create, read single, read list, and update. The only notable gap is the absence of a delete_issue operation, though this can often be worked around via update_issue.

Maintenance

ActivityInactive
ResponsivenessNo issues