mcpField
S
standup-mr

standup-mr

リモート
github.com/Jubstaaaバージョン管理11 週間前に更新
リポジトリ

standup-mr について

standup-mr は、ローカルのコミット履歴ではなく GitLab や GitHub のマージリクエスト状況から、スタンドアップ用の情報をまとめます。レビュー状況やブロッカーを追うチーム向けで、失敗したパイプラインのジョブログからエラー行も取得できます。

主な機能

  1. 01GitLab と GitHub のマージリクエスト状況を取得
  2. 02レビュー待ちとブロッカーを集約
  3. 03失敗したジョブログのエラー行を取得
  4. 04JSON または Markdown のダイジェストを出力
  5. 05チャット Webhook にノートを投稿
  6. 06ローカルとホステッドの MCP サーバーを提供

活用シーン

  1. 01進行中のマージリクエストから報告内容を準備
  2. 02レビュー待ちと作業のブロッカーを確認
  3. 03ジョブログからパイプラインの失敗を調査
  4. 04Slack や Discord にスタンドアップノートを投稿

MCP 対応

スタンドアップデータの取得、ノート作成ルールの取得、チャット Webhook への投稿を行う 3 つの MCP ツールを提供します。HTTPS とサインインに対応したホステッド MCP サーバーもあります。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://standup.ilkerbalcilar.com/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

パッケージ
npmstandup-mr1.1.1

ツール

詳細

standup-mr

standup-mr MCP server Listed on mcpservers.org smithery badge mcprush grade

コミットログではなく、マージリクエストの状態からスタンドアップミーティング用のメモを作成します。

ほとんどのスタンドアップツールは、ローカルの git log を読み取ります。それで分かるのは「何を入力したか」であり、スタンドアップミーティングで聞かれる内容とは異なります。このツールは GitLab または GitHub を読み取り、マージ可能なもの、ブロックされているもの、あなたの対応待ちのものを確認します。パイプラインが失敗している場合は、ジョブのログを開いて原因を伝えます。

GitLab プロジェクトを読み取る standup-mr:マージ可能、ブロック中、ドラフト、および失敗したジョブのエラー行

特長

コミットログツールstandup-mr
情報源ローカルの git logGitLab または GitHub API
マージリクエストの状態✗マージ可能/ブロック中/ドラフト/古い
レビューキュー✗保留中のみ。承認済みは除外
パイプラインの失敗✗ジョブトレースまたは Actions ジョブログのエラー行
セルフホスト(GitLab CE/EE、GitHub Enterprise)さまざま標準で対応

使い方

npx standup-mr fetch                            # JSON, provider auto-detected
npx standup-mr fetch --provider github          # GitHub
npx standup-mr fetch --provider gitlab          # GitLab
npx standup-mr fetch --markdown                 # structured digest
npx standup-mr fetch --lang tr                  # Turkish date labels
npx standup-mr fetch --markdown | npx standup-mr post --google-chat "$URL"
認証情報
GitHubGitLab
フラグ--host / --token--host / --token
環境変数GITHUB_HOST / GITHUB_TOKENGITLAB_HOST / GITLAB_TOKEN
CLI セッションgh の認証設定glab の認証設定

ホストを指定しない場合、GitHub は github.com をデフォルトとして使用します。GitLab にはデフォルトがありません。セルフホストが一般的なため、ホストはフラグ、環境変数、または glab 自体の設定から指定する必要があります。

プロバイダーは、次の順序で選択されます。

  1. 指定されている場合は、--provider github / --provider gitlab
  2. 識別可能な --host(github.com、gitlab.com、または github/gitlab を含むホスト名)
  3. STANDUP_PROVIDER、または設定されている GITHUB_* / GITLAB_* 環境変数のペア
  4. ログイン済みの gh / glab

いずれの方法でも特定できない場合、または両方に該当して判断できない場合は、推測せず、明確なエラーを表示してコマンドを終了します。

そのため、すでに gh または glab を使用している場合、設定は不要です。

チャットに投稿する
npx standup-mr fetch --markdown | npx standup-mr post --slack "$SLACK_WEBHOOK_URL"

ホスト型コネクター:あらゆる AI アシスタントに対応

トークンも設定ファイルも不要です。代わりにサインインしてください。ホスト型サーバーは標準の MCP OAuth フローに対応しているため、リモート MCP サーバーをサポートするあらゆるアシスタントで使用できます。URL を追加すると、サインイン用のブラウザーページが開きます。

https://standup.ilkerbalcilar.com/mcp

Cursor に追加 VS Code にインストール

アシスタント方法
claude.ai(ウェブ、モバイル、デスクトップ)Settings → Connectors → Add custom connector → URL を貼り付け → Connect
Claude Codeclaude mcp add --scope user --transport http standup https://standup.ilkerbalcilar.com/mcp を実行し、その後 /mcp でサインイン
Cursor上のボタンを使うか、~/.cursor/mcp.json に "standup": { "url": "https://standup.ilkerbalcilar.com/mcp" } を追加
VS Code(Copilot)上のボタンを使うか、mcp.json に "standup": { "type": "http", "url": "https://standup.ilkerbalcilar.com/mcp" } を追加
Gemini CLIgemini extensions install https://github.com/Jubstaaa/standup-mr を実行し、その後 /mcp auth standup を実行
Codex CLIcodex mcp add standup --url https://standup.ilkerbalcilar.com/mcp を実行し、その後 codex mcp login standup を実行
ChatGPT開発者モードを有効にして、Settings → Apps → Create → URL を貼り付け、OAuth

claude.ai と Claude Code はエンドツーエンドでテスト済みです。それ以外も同じ 標準的な手順を使用します。いずれかでサインインできない場合は、 issue を作成してください。

サインインページでアカウントを連携すると、メモには次の内容が表示されます。

  • GitHub — standup-mr GitHub App を通じてサインインします。このアプリはインストール先の リポジトリのみを参照するため、組織にもインストールしてください。組織が承認しない場合は、 代わりにきめ細かなトークンを使って github.com を追加してください。
  • gitlab.com — GitLab でサインインします。
  • 会社の GitLab または GitHub Enterprise — ホストを入力します。会社の誰かがすでに サインインを設定している場合は、「Sign in with …」ボタンが表示されます。 まだ設定されていない場合は、一度だけ設定してください。ページに、ホスト上で OAuth アプリケーションを作成するための正確なリダイレクト URI とスコープが表示されるので、 その ID とシークレットを貼り付けます。以降、そのホストを利用する全員がサインインできます。 読み取り専用トークンも使用できます。
  • チャットの Webhook (任意) — Slack、Discord、または Google Chat を連携すると、依頼したときに アシスタントが完成したメモを投稿できます。

好きなだけ連携できます。たとえば、個人プロジェクトには GitHub、仕事には会社の GitLab を使い、「自分の standup」または「仕事の standup」と依頼できます。 複数のアカウントを連携している場合は、どのアカウントを指しているのかアシスタントが尋ねます。

Claude や ChatGPT など、モバイルアプリのあるアシスタントに追加すれば、スマートフォンからも使えます。 会議に向かう途中に standup を尋ねてみてください。

保存される内容。 プロバイダートークンと Webhook URL は AES-256-GCM で暗号化され、 マージリクエストの読み取りとメモの投稿にのみ使用されます。アシスタントが保持する アクセストークンはハッシュとして保存されます。連携を解除するとすべて削除され、 30 日間使用されていない連携も削除されます。サーバーのコードは remote/ にあります。

代わりにローカルサーバーを使う場合。 VPN の背後やプライベートネットワーク上にある GitLab には、 ホスト型サーバーからアクセスできません。以下の stdio サーバーをご自身のマシンで実行してください。 トークンが外部に出ることはありません。

4 つの利用形態

CLI — 中核です。JSON を出力し、実行時の依存関係はありません。

MCP サーバー(mcp/)— Claude Desktop、Claude Code、Cursor、またはローカルプロセスを実行する任意の MCP クライアント向けの 3 つのツールです。mcp/README.md をご覧ください。

リモート MCP サーバー(remote/)— サインイン機能を備え、HTTPS 経由で同じツールを提供します。ウェブアプリやモバイルアプリを含む、リモート MCP サーバーに対応した任意のアシスタントで利用できます。上記をご覧ください。

Claude Code プラグイン — standup スキルとして提供される、メモ作成の手順です。Claude Code 内で次を実行します。

/plugin marketplace add Jubstaaa/standup-mr
/plugin install standup@standup-mr

次に /standup と入力します。/plugin marketplace update standup-mr で更新を取得できます。

Cursor、Codex、または別のアシスタントからの利用

Claude Code を使用していない場合は、ライブデータを取得するために MCP サーバーを設定し、メモ作成ルールを別途貼り付けてください。

Cursor — ~/.cursor/mcp.json(グローバル)または .cursor/mcp.json(プロジェクトローカル)に追加します。

{
    "mcpServers": {
        "standup": {
            "command": "npx",
            "args": ["-y", "standup-mr", "mcp"],
            "env": {
                "GITHUB_TOKEN": "ghp_..."
            }
        }
    }
}

Codex — ~/.codex/config.toml に追加します。

[mcp_servers.standup]
command = "npx"
args = ["-y", "standup-mr", "mcp"]

[mcp_servers.standup.env]
GITHUB_TOKEN = "ghp_..."

両クライアントとも、正確な設定キーとファイルパスはバージョンによって異なります。上記のスニペットが動作しない場合は、このファイルを鵜呑みにせず、Cursor の MCP ドキュメントまたは Codex 独自の設定ドキュメントで、現在の形式を確認してください。

サーバーは 3 つのツールを公開します。

ツール機能
get_standup_dataプロバイダーからデータを読み込み、レポートを JSON で返します。provider、host、lang は省略可能です。
get_note_instructionsメモ作成ルールを返すため、アシスタントはスキルと同じ方法でメモを作成できます。
post_standup_note完成したメモを Slack、Discord、または Google Chat の Webhook に投稿します。

post_standup_note は Webhook URL を STANDUP_WEBHOOK_URL から読み込み、引数として受け取ることはありません。この URL を持っている人なら誰でもチャンネルに投稿できるため、トランスクリプトではなくトークンと一緒に管理する必要があります。ペイロードの形式は URL のホストから推測されます。プロキシによってホストが隠されている場合にのみ、kind が必要です。

実装されている形式は 3 種類です。slack と google-chat はどちらも {"text"} を投稿し、discord は {"content"} を投稿します。

Slack と Google Chat は標準 Markdown をレンダリングしないため、投稿時にメモを書き換えます。**太字** は *太字* に、## 見出しは太字の行になります。インラインコード、フェンス付きコードブロック、およびその内容はそのままです。Discord は Markdown にネイティブ対応しているため、変更せずに送信します。Mattermost、Rocket.Chat、n8n や Zapier のエンドポイントなど、Slack 形式の本文を受け付けるその他のサービスは、kind: "slack" または CLI の --slack URL を指定すれば、現在利用できます。

MCP 以外でも、同じルールを stdout で利用できます。

npx standup-mr instructions >> AGENTS.md

--markdown は文章化されたメモではなく、ダイジェストです

--markdown は生の素材を読みやすいセクションに整理します。テーマごとにイベントをまとめたり、ブロッカーを診断したりはしません。それはモデルの役割であり、MCP クライアントのプロンプト、または Claude Code スキルで行います。

  • AI なし:構造化されたダイジェストです。
  • AI あり:そのまま読み上げられるメモになります。

ダイジェストの内容

実際の月曜日の実行結果を匿名化したものです。金曜日と土曜日がそれぞれ独立したセクションになっている点と、GitLab がまだ評価していないマージリクエストを「準備完了」としていない点に注目してください。

# Monday, 31 August — dev

_Structured digest — not a written note._

## Previous working day: Friday, 28 August

- `acme/ui` pushed to — fix(keyboard): scale keys to viewport (4 commits)
- `acme/ui` accepted — chore(deps): bump @acme/ui to 0.5.18
- `acme/api` opened — feat: package subscription sales

## Previous working day: Saturday, 29 August

- `acme/ui` pushed to — fix(keyboard): close the autofill bar (1 commit)

## Ready to merge (2)

- `acme/api` !196 fix: normalise the +90 trunk prefix
- `acme/web` !194 refactor: loading state — **no pipeline ran**

## Blocked (1)

- `acme/terminal` !49 fix: relative date chips — **1 unresolved comment(s)**

## Reviews (2 pending)

- `acme/mobile` !501 chore: upgrade to RN 0.87 — Teammate

## Blockers

- `acme/mobile` !6 — job `quality`
    - `npm ERR! code E404`
    - `npm ERR! 404 Not Found - GET https://registry.example.com/@acme%2fui`

最後のセクションこそ、このツールの要点です。他のスタンドアップツールではパイプラインが失敗していることしかわかりませんが、このツールは失敗したジョブのログを開き、404 を示します。403 ではなく 404 になる場合、通常はパッケージが存在しないのではなく、トークンのスコープが誤っています。

安定性

1.0.0 以降、CLI コマンドとフラグ、fetch と get_standup_data が返す JSON、MCP ツール名と引数、環境変数には セマンティックバージョニングを採用しています。既存の設定に影響する変更は、メジャーリリースまで行いません。 JSON の新しいフィールドはマイナーリリースで追加される場合があるため、位置ではなく名前で読み取ってください。ホスト型サーバー standup.ilkerbalcilar.com は継続的に更新され、npm のバージョンには連動しません。

既知の制限

  • GitHub のイベントフィードは浅いです。 過去 90 日間でおよそ 300 件のイベントに制限されているため、非常にアクティブなアカウントや古い期間の空白がある場合、最も古いイベントが気付かないうちに失われることがあります。GitLab には、同等の公表済み上限はありません。
  • GitHub のアクティビティを確認できるのは、同じアカウントに属するトークンだけです。 また、プライベートリポジトリのイベントは、他のユーザーのトークンでは、必要なスコープが揃っていても表示されません。
  • GitHub では、従来の commit-statuses API 経由でしか結果を報告しない CI(一部のベンダーでは今もこの方式で連携しています)は、pipelineMissing として表示されます。チェックの状態は check-runs からのみ読み取られます。
  • 診断情報を取得できなかったブロッカーも報告されます。 job: "unknown" と、diagnosis unavailable: … というエラー行が表示されます。どちらの場合もマージリクエストはブロックされ、説明だけが欠落します。サーバーエラーは先に 2 回再試行されますが、拒否されたトークンでは実行も失敗します。

0.1.x からのアップグレード

0.2.0 では、JSON 出力、ライブラリ API、MCP オプションが変更されています。standup fetch の出力を何かにパイプしている場合や、パッケージをインポートしている場合は、アップグレード前に CHANGELOG.md をお読みください。要点は次のとおりです。

  • previous と previousEvents は previousDays[] に置き換わります。アクティブな日ごとに 1 つのエントリが作成されるため、週末によって金曜日のデータが失われることはなくなります。jq .previous はエラーではなく null を返すようになります。
  • MergeRequest、Review、Blocker には必須の provider フィールドが追加され、Provider.getReviews は数値 ID ではなく Identity を受け取ります。
  • MCP の CollectOptions.provider はプロバイダーの 名前 になりました。providerImpl を通じて Provider インスタンスを渡してください。

Claude Code プラグインをお使いの場合は、/plugin marketplace update standup-mr を実行してください。レポート形式の変更に伴い、standup スキルも変更されています。

要件

Node 20 以降。CLI コア(fetch、post、instructions)は実行時依存関係を読み込みません。MCP サーバー(mcp コマンド)には、@modelcontextprotocol/sdk という依存関係が 1 つあります。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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