mcpField
D
devflow-mcp

devflow-mcp

ローカル
github.com/cocaxcodeバージョン管理130 週間前に更新

devflow-mcp について

devflow-mcpは、JiraとGitHub/GitLabを接続し、課題や開発ワークフローを扱うチーム向けのMCPサーバーです。プロジェクトごとの設定、YAMLフロー、重要な操作の確認やルールによる制御に対応します。

主な機能

  1. 01Jiraの課題とステータス管理
  2. 02ブランチ作成、プッシュ、PR/MR作成
  3. 03ディレクトリに応じた設定選択
  4. 04YAMLフローと安全ルールの定義
  5. 05認証情報と設定のローカル保存

活用シーン

  1. 01Jira課題からコードブランチを作成
  2. 02課題を確認して状態やコメントを更新
  3. 03変更をプッシュしてPRまたはMRを作成
  4. 04プロジェクト別の定型ワークフローを実行

MCP 対応

このMCPサーバーは、Jira、GitHub、GitLabの課題やコード作業を操作するツールをMCPクライアントに提供します。課題、ブランチ、コミット、PR/MRを管理できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cocaxcode-devflow": {
"command": "npx",
"args": [
"-y",
"@cocaxcode/devflow-mcp"
]
}
}
}
起動コマンドnpx -y @cocaxcode/devflow-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@cocaxcode/devflow-mcp0.1.8

ツール

32

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
namestringはいプロジェクト名
gitUrlstringいいえセルフホスト型 GitLab のベース URL(例:https://gitlab.empresa.com)。指定されていない場合は、remote から取得します。
jiraPatstringいいえJira Server 用のパーソナルアクセストークン
jiraUrlstringはいJira の URL(例:https://myteam.atlassian.net)
gitTokenstringはいGitHub または GitLab のトークン
jiraEmailstringいいえJira Cloud 用のメールアドレス
jiraTokenstringいいえJira Cloud 用の API トークン
gitProjectstringいいえGitLab のプロジェクトの完全なパス(例:grupo/subgrupo/repo)。remote がフォークで、メインプロジェクトにリンクしたい場合に便利です。
jiraProjectKeystringはいJira のプロジェクトキー(例:PROJ、DEV、BACK)

詳細

@cocaxcode/devflow-mcp

Jira と GitHub/GitLab のワークフローを、AI アシスタントに任せましょう。
1 つの MCP サーバー。32 個のツール。必要なことを伝えるだけで、実行されます。

npm のバージョン ダウンロード数 ツール数 テスト数 node ライセンス

概要 · 話しかけるだけ · インストール · プロジェクトスコープ · ツール · フロー · ルール · ストレージ · 互換性 · アーキテクチャ


概要

開発者のワークフローを自動化する、最も包括的な MCP サーバーです。32 個のツールで Jira(Cloud + Server)と GitHub/GitLab(クラウド + セルフホスト)を連携し、ブラウザーを開かずに AI アシスタントから課題、ブランチ、PR、デプロイを管理できます。

Jira のバージョンと Git プロバイダーを自動検出し、設定可能な安全ルールを適用します。また、繰り返し使えるワークフローのために、カスタム YAML フロープレイブックを定義できます。プロジェクトは一度設定すれば記憶されます。それぞれに独自の Jira インスタンス、Git プロバイダー、ブランチ規約、認証情報、ディレクトリスコープを設定できます。現在のディレクトリに一致するプロジェクトが自動で有効になります(デフォルト)。または、セッション中に別のプロジェクトへ切り替えることもできます(アクティブ)。認証情報はすべてローカルの ~/.devflow-mcp/ に保存されます。同期も、追跡もされず、マシンの外部に送信されることもありません。


話しかけるだけ

ツール名を覚える必要はありません。自然に話しかけると、アシスタントが適切なツールを選びます。

「Jira + GitHub 用のプロジェクトを設定して」

> df_project_setup with:
    name: "my-backend"
    jiraUrl: "https://myteam.atlassian.net"
    jiraEmail: "[email protected]"
    jiraToken: "ATATT3x..."
    jiraProjectKey: "PROJ"
    gitToken: "ghp_..."

Auto-detects:
  - Jira Cloud (API v3)
  - GitHub (org/my-backend)
  - Base branch: main
  - Scope: C:/repos/my-backend (your CWD, auto-added)

「プロジェクトの一覧を表示して」

Projects:
  my-backend    [default] [active]   scopes: C:/repos/my-backend
  my-frontend                        scopes: C:/repos/my-frontend

「このセッションでは my-frontend に切り替えて」

Active project switched to: my-frontend (session only)
Default remains: my-backend (based on your current directory)

「PROJ-123 に取り組もう」

> Reading PROJ-123...
  Title: Add OAuth login
  Status: To Do | Priority: High

> Branch feat/PROJ-123 not found. Creating...
  branch: feat/PROJ-123-add-oauth-login
  base: main
  Confirm? (confirm: true to execute)

> Moved PROJ-123 → In Progress
> Assigned to you

「ACME プロジェクトのタスクを表示して」

ACME-45  Fix OAuth login             In Progress  High
ACME-52  Dashboard refactor          To Do        Medium
ACME-61  Update dependencies         To Do        Low

「変更をプッシュして」

Preview:
  branch: feat/PROJ-123-add-oauth-login
  pending commits:
    - a1b2c3d feat: add login component
    - d4e5f6g feat: add auth service

Confirm? (confirm: true to execute)

「現在のブランチに main をマージして」

Conflict detected:
  - src/auth/login.ts
  - src/config/routes.ts

Resolve the files and commit to complete the merge.

「'feat: add OAuth login' というタイトルで PR を作成して」

PR created:
  url: https://github.com/org/repo/pull/42
  title: feat: add OAuth login
  provider: github

「PROJ-123 に、PR のレビュー準備ができたとコメントして」

Preview:
  issue: PROJ-123
  comment: "PR ready for review: https://github.com/org/repo/pull/42"

Confirm? (confirm: true to publish)

「説明を fix-oauth-redirect として、PROJ-456 用の修正ブランチを作成して」

Preview:
  branch: fix/PROJ-456-fix-oauth-redirect
  base: main
  actions: checkout main → pull → create branch

Confirm? (confirm: true to execute)

インストール

Claude Code(推奨)
# Global — available across all your projects
claude mcp add --scope user devflow -- npx -y @cocaxcode/devflow-mcp@latest

# Per-project
claude mcp add devflow -- npx -y @cocaxcode/devflow-mcp@latest
Claude Desktop
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "devflow": {
      "command": "npx",
      "args": ["-y", "@cocaxcode/devflow-mcp@latest"]
    }
  }
}
Windows:%APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "devflow": {
      "command": "npx",
      "args": ["-y", "@cocaxcode/devflow-mcp@latest"]
    }
  }
}
Cursor / Windsurf
// .cursor/mcp.json or .windsurf/mcp.json
{
  "mcpServers": {
    "devflow": {
      "command": "npx",
      "args": ["-y", "@cocaxcode/devflow-mcp@latest"]
    }
  }
}
VS Code / Codex / Gemini CLI
{
  "mcpServers": {
    "devflow": {
      "command": "npx",
      "args": ["-y", "@cocaxcode/devflow-mcp@latest"]
    }
  }
}

プロジェクトのスコープ

各プロジェクトにはパス(スコープ)があります。これは、そのプロジェクトに属するディレクトリです。1つのディレクトリを複数のプロジェクトのスコープにすることはできません。

これにより、次の2つの概念が生まれます。

  • デフォルトプロジェクト:現在の作業ディレクトリとスコープが一致するプロジェクトです。自動的に設定され、維持されます。C:/repos/my-backend 内にいて、そのディレクトリが my-backend のスコープなら、my-backend がデフォルトプロジェクトです。操作は必要ありません。

  • アクティブプロジェクト:現在作業しているプロジェクトです。デフォルトではデフォルトプロジェクトと同じですが、現在のセッション中に df_project_switch で手動で切り替えられます。再起動するとデフォルトプロジェクトに戻ります。

df_project_list ではデフォルトとアクティブの両方の表示を確認できるため、現在の状態をいつでも把握できます。

実用例
"Set up a project called my-backend"
  → CWD (C:/repos/my-backend) is auto-added as scope

"Set up another called my-frontend"
  → Run from C:/repos/my-frontend, that directory becomes its scope

"List projects"
  → my-backend   [default] [active]    scopes: C:/repos/my-backend
     my-frontend                        scopes: C:/repos/my-frontend

"Switch to my-frontend"
  → Session switches. Now my-frontend is active for checking issues, etc.

"List projects"
  → my-backend   [default]             scopes: C:/repos/my-backend
     my-frontend  [active]              scopes: C:/repos/my-frontend

Close and reopen → my-backend is active again (matches CWD = default)

つまり、異なる Jira インスタンスや Git プロバイダーを使う複数のプロジェクトをまたいで作業できます。現在の場所に基づいて適切な認証情報が常に選択され、必要な場合はセッション中にいつでも上書きできます。


ツール

5つのカテゴリに整理された32個のツールです。

プロジェクト(5)
ツール説明
df_project_setup新しいプロジェクトを設定します(Jira + Git。すべてを自動検出します)
df_project_updateプロジェクトの設定を変更します
df_project_list設定済みのすべてのプロジェクトを一覧表示します(デフォルト + アクティブを表示)
df_project_switch現在のセッションでアクティブプロジェクトを切り替えます
df_project_deleteプロジェクトを削除します
例:プロジェクトの設定
df_project_setup with:
  name: "my-project"
  jiraUrl: "https://myteam.atlassian.net"
  jiraEmail: "[email protected]"
  jiraToken: "ATATT3x..."
  jiraProjectKey: "PROJ"
  gitToken: "ghp_..."

Auto-detects:
  - Jira Cloud (API v3)
  - GitHub (org/my-project)
  - Base branch: main
  - Scope: your CWD (auto-added)
Jira(6)
ツール説明確認
df_issues自分に割り当てられた課題を一覧表示します(プロジェクトで絞り込み)--
df_issue課題の詳細全体を表示します--
df_statuses課題で利用可能なステータス遷移を表示します--
df_transition課題を別のステータスに移動しますはい
df_assign課題を現在のユーザーに割り当てます--
df_comment課題にコメントしますはい
Git(7)
ツール説明確認
df_branchベースからブランチ(feat/ または fix/)を作成しますはい
df_find_branch課題キーでブランチを検索します--
df_checkoutブランチを切り替えます(安全チェック付き)--
df_pull現在のブランチをリモートからプルします--
df_push現在のブランチをリモートにプッシュしますはい
df_mergeブランチを現在のブランチにマージしますはい
df_prPR(GitHub)またはMR(GitLab)を作成します--

重要: df_branch、df_checkout、df_push は実行前に作業ディレクトリを確認します。未コミットのファイルや未プッシュのコミットがある場合は処理をブロックし、対応が必要な項目を正確に表示します。これにより、誤って作業を失うことを防ぎます。

フロー(5)
ツール説明
df_flow_createカスタムフローを作成します
df_flow_listすべてのフローを一覧表示します
df_flow_getフローの詳細を表示します
df_flow_update既存のフローを変更します
df_flow_deleteフローを削除します(start-task は保護されます)
ルール(9)
ツール説明レベル
df_rule_createグローバルルールを作成しますグローバル
df_rule_listすべてのルールを一覧表示しますグローバル
df_rule_getルールの詳細を表示しますグローバル
df_rule_updateルールを変更しますグローバル
df_rule_toggleルールを有効化/無効化しますグローバル
df_rule_deleteルールを削除しますグローバル
df_rule_project_overrideプロジェクトに対してグローバルルールを有効化/無効化しますプロジェクト
df_rule_project_addプロジェクト専用のルールを作成しますプロジェクト
df_rule_project_removeプロジェクトルールまたはオーバーライドを削除しますプロジェクト

フロー

フローは、手順のシーケンスを定義する YAML プレイブックです。自動では実行されません。使用するタイミングはアシスタントに指示します。

デフォルト:start-task

「PROJ-123 に取り組みましょう」のように伝えると起動します。

name: start-task
trigger: "when the user says 'let's work on', 'start task', 'new task' + issue ID"
steps:
  - tool: df_issue
    note: "Read issue detail and summarize the task"
  - tool: df_find_branch
    note: "Check if a branch already exists for this issue"
  - tool: df_branch
    confirm: true
    note: "Only if no existing branch was found"
  - tool: df_statuses
    note: "Get transitions to find the 'In Progress' transition ID"
  - tool: df_transition
    target: "In Progress"
    confirm: true
  - tool: df_assign
    note: "Assign the issue if it has no assignee"
カスタムフロー

自然な言葉で依頼して、自分だけのフローを作成できます。

「finish-taskというフローを作成して、プッシュし、PRを作成して、Jiraにコメントしてください」

name: finish-task
trigger: "when the user says 'finish task', 'wrap up' + issue ID"
steps:
  - tool: df_push
    confirm: true
    note: "Push pending commits"
  - tool: df_pr
    note: "Create PR/MR to base branch"
  - tool: df_comment
    confirm: true
    note: "Comment on the issue with the PR link"

start-taskフローは変更できますが、削除はできません。df_flow_updateを使用して、フローのステップ、トリガー、または名前を変更できます。


ルール

ルールは設定可能なガードで、アクションをブロックまたは警告します。グローバルとプロジェクトごとの2つのレベルがあります。

デフォルトルール
ルールスコープアクション機能
no-merge-to-basegitblockmain/masterへの直接のプッシュやマージを防止します
no-merge-from-devgitblockdev/develop/intのブランチを他のブランチへマージすることを防止します
no-close-issuesjirablock課題をクローズすること(Done、Closed、Resolvedなど)を防止します
only-own-issuesjirablock他のユーザーに割り当てられた課題の変更を防止します
プロジェクトごとのオーバーライド

各プロジェクトでは、グローバルルールをオーバーライドしたり、独自のルールを定義したりできます。

# Disable a global rule for one project
df_rule_project_override: name="no-close-issues", enabled=false

# Add a project-only rule
df_rule_project_add: name="no-push-friday", scope="git", action="warn"

# Remove an override or project rule
df_rule_project_remove: name="no-close-issues"
カスタムルール
df_rule_create:
  name: "no-push-friday"
  description: "Warn when pushing on Fridays"
  scope: "git"       # git | jira | all
  action: "warn"     # block | warn

注: **ルールの解決順序:**最初にグローバルルールが読み込まれ、次にプロジェクトのオーバーライドが適用されます(プロジェクト側が優先)。その後、プロジェクト固有のルールが追加されます。評価の前に、スコープと有効状態に基づいてルールが絞り込まれます。


ストレージ

すべてのデータは~/.devflow-mcp/(ホームディレクトリ)に保存され、gitリポジトリ内に置かれることはありません。Jiraトークン、GitHub PAT、GitLabトークンはすべて、600権限(所有者のみ読み書き可能)でローカルに保存されます。コミットもプッシュもされず、マシンの外部に送信されることもありません。

~/.devflow-mcp/
├── projects/              # Project configs (.json) — credentials included
│   ├── my-project.json    # Jira URL, token, GitHub PAT, branch rules, scopes
│   └── other-project.json
├── flows/                 # Flow definitions (.yaml)
│   └── start-task.yaml
├── rules/                 # Global rules (.json)
│   ├── no-merge-to-base.json
│   ├── no-merge-from-dev.json
│   ├── no-close-issues.json
│   └── only-own-issues.json
├── active-project         # Current active project (plain text)
└── config.json            # Server configuration

プロジェクトの解決は自動で行われます。devflow-mcpは、現在の作業ディレクトリと各プロジェクトのpaths(スコープ)を照合します。一致したプロジェクトがデフォルトになります。df_project_switchを使用すれば、セッション中にアクティブなプロジェクトを切り替えられます。再起動すると、アクティブなプロジェクトはCWDに対するデフォルトのプロジェクトにリセットされます。一致するプロジェクトが見つからず、アクティブなプロジェクトも設定されていない場合は、df_project_setupで設定するよう求められます。


互換性

Jira
タイプAPI認証
Jira CloudREST API v3メールアドレス + API Token(Basic)
Jira Server / Data CenterREST API v2Personal Access Token(Bearer)

/rest/api/2/serverInfoを使用して自動検出されるため、手動での設定は不要です。

Gitプロバイダー
プロバイダーAPI
GitHub(クラウド)REST API v3
GitHub EnterpriseREST API v3(カスタムURL)
GitLab(クラウド)REST API v4
GitLab self-hostedREST API v4(カスタムURL)

リポジトリのリモートURLを解析して自動検出します。


アーキテクチャ

src/
├── index.ts              # Entry point (stdio transport)
├── server.ts             # Factory: createServer() + instructions
├── lib/
│   ├── types.ts          # Interfaces, defaults, valid tool names
│   ├── storage.ts        # CRUD: projects, flows, rules, config
│   ├── git-exec.ts       # Git CLI wrapper (execFile)
│   ├── jira/
│   │   ├── client.ts     # JiraClient (Cloud v3 + Server v2)
│   │   └── types.ts      # Raw Jira API response shapes
│   └── git/
│       ├── detect.ts     # parseRemoteUrl (SSH/HTTPS, GitHub/GitLab)
│       ├── github.ts     # GitHubClient (REST API v3)
│       ├── gitlab.ts     # GitLabClient (REST API v4)
│       ├── factory.ts    # createGitProviderClient()
│       └── types.ts      # Git provider interfaces
└── tools/
    ├── project.ts        # 5 tools: setup, update, list, switch, delete
    ├── jira.ts           # 6 tools: issues, issue, statuses, transition, assign, comment
    ├── git.ts            # 7 tools: branch, find_branch, checkout, pull, push, merge, pr
    ├── flow.ts           # 5 tools: create, list, get, update, delete
    └── rule.ts           # 9 tools: CRUD global + 3 project-level

**スタック:**TypeScript · MCP SDK · Zod · YAML · tsup

**テスト:**4スイート · 51テスト(Vitest + InMemoryTransport)


MIT · cocaxcodeによって構築

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。