Claudeとの会話・ディスカッションから直接タスク化!ForgejoへIssueを自動起票するMCP環境の構築(npx・Docker対応)

AI開発自動化日記 #1

Claudeとの会話・ディスカッションから直接タスク化!ForgejoへIssueを自動起票するMCP環境の構築(npx・Docker対応)

アイデアの整理からタスク起票までをClaudeとのやり取りだけで完結。安全なアクセス権限設計と、選べる2つのセットアップ手順を解説します。

1. はじめに:タスク起票の手間をゼロにする

弊社ではセルフホスティングのForgejoのIssueでタスク管理をしています。日々サービスの改善や新規機能の開発を進める中で、以下のような悩みを抱えたことはないでしょうか?

  • アイデアや修正指示を開発タスク(Issue)に文章化して整理する時間が取れない
  • Git(Forgejo / GitHub)の管理画面を開いてフォーマット通りに入力するのが手間
  • AIとディスカッションして良い修正案が出たのに、結局手動でGitにコピペして起票している

この手動の手間をなくすため、今回は「Claudeと対話やブレストをするだけで、Forgejoに安全にIssue(タスク)が自動作成される環境」を構築しました。今回はその権限設計と、npxDocker 双方を使った具体的な設定手順を解説します。

2. 今回構築するフローの全体像

今回の取り組みは、将来的な「完全自動開発パイプライン」の第1歩となる**Issue自動起票フェーズ**です。

【ユーザー】Claude Desktopで課題や改善案についてディスカッション

★【今回構築】Claude MCPが会話文脈から要件定義してIssue化
【Forgejo】Issueが自動起票される

(次回構築予定)AIエージェントがIssueを検知して自動でコード修正・テスト
【プレビュー環境】発行された確認用URLで画面動作をチェックして完了!

3. セキュリティ設計:事故を防ぐ「最小権限」の原則

メインアカウントの特権(管理者権限)トークンをAIに渡すのは非常に危険です。AIの誤動作やプロンプトインジェクションによって、「リポジトリ全体が削除される」「メインブランチが書き換わる」リスクがあるためです。

そこで、Forgejoの詳細権限(Fine-grained permissions)を活用し、Issue作成に必要な最小限の権限のみを与えます。

⚠️ 権限設定の重要ポイント

Issue起票用のトークンは admin を「No access」にし、repository も「Read」までに留めます。コード修正権限(Write)を持たせないことで、誤ってメインコードが破壊されるリスクを回避できます。

権限項目 設定値 設定する理由
issue Read and write 会話内容から要件をまとめ、Issueを作成・編集するため
repository Read 構造やコードを参照するが、直接変更はさせない(書き換え不可)
user / organization Read API連携時のユーザー識別エラーを防ぐため
admin No access リポジトリ削除などの破壊的操作を物理的に遮断する

4. 構築手順:選べる2つの実行パターン(npx / Docker)

Forgejo MCP サーバーを Claude Desktop で動かすには、軽量な npx 方式 と、コンテナで独立して動く Docker 方式 の2種類があります。お好みの環境に合わせて設定ファイルを記述してください。

ステップ 1:ForgejoでAPIトークンを発行

Forgejoの「設定」➔「アプリケーション」➔「アクセストークンの生成」から、上記の権限表通りに設定したトークンを発行します。

ステップ 2:Claude Desktopの設定ファイルを編集

Claude Desktopのメニュー「Settings…」➔「Developer」➔「Edit Config」を開き、claude_desktop_config.json に以下のいずれかのパターンを追加します。

パターン A:npx方式(Dockerを入れずに動かしたい場合・推奨)

Node.jsが入っていればDocker不要で軽快に動作します。

{
  "mcpServers": {
    "forgejo-issue": {
      "command": "npx",
      "args": [
        "-y",
        "@ric_/forgejo-mcp"
      ],
      "env": {
        "FORGEJO_URL": "https://your-forgejo-domain.com",
        "FORGEJO_TOKEN": "発行したトークン"
      }
    }
  }
}
パターン B:Docker方式(標準的なコンテナ実行)

Docker Desktopが起動している環境で実行します。GUIアプリからのパスエラーを防ぐため docker の絶対パスを指定します。

{
  "mcpServers": {
    "forgejo-issue": {
      "command": "/usr/local/bin/docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "FORGEJO_URL=https://your-forgejo-domain.com",
        "-e", "FORGEJO_TOKEN=発行したトークン",
        "ghcr.io/raohwork/forgejo-mcp"
      ]
    }
  }
}

ステップ 3:Claude Desktopを完全再起動

設定ファイルを保存後、Claude Desktopを完全再起動(Command + Q)します。「Developer」設定画面で forgejo-issue : Running(青色マーク)が表示されれば完了です!

5. 動作確認:対話からのタスク起票テスト

設定完了後、Claudeに以下のように話しかけてみました。

ユーザー
「ECサイトのスマホ表示について議論したい。ログインボタンが小さくて誤タップが多い問題があるんだけど、修正仕様をまとめてForgejoにタスク作成しておいて」
Claude(AI)
「対話内容から要件をまとめ、対象のリポジトリに以下のIssueを作成しました。
タイトル: [UI改善] スマホ表示時のログインボタンサイズおよびタップ領域の拡大
要件: タップ領域を48px以上に拡大し、視認性・操作性を向上
URL: https://git.example.com/org/repo/issues/12

ブラウザでForgejoを開くことなく、AIとディスカッションした文脈から適切なタイトル・要件がセットされたIssueが自動作成されました。

まとめと次回予告

  • 手動でタスクを整理・入力しなくていい:会話やディスカッションの流れでそのまま開発指示が出せる環境が完成
  • 最小権限設計(Readメイン):誤操作やコード破壊のリスクを物理的に遮断
  • 柔軟な起動環境:npx でも Docker でも好みの環境で動作可能

次回(第2回)は、今回作成されたIssueを検知して「AIエージェントが自動でコード修正・PR作成を行い、動作確認用のプレビューURLを発行する自動化パイプライン(Forgejo Actions連携)」の構築に挑みます!


Recruit

ディーメイクでは各ポジションで一緒に働く仲間を募集中! エンジニア、デザイナー、ディレクターなど、多彩な職種があります。
一緒に成長していきましょう!

  • URLをコピーしました!

コメント

コメントする