mcpField
S
Swipr

Swipr

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

Swipr について

SwiPR はスワイプ式の GitHub プルリクエストレビュー画面と、エージェントに PR のコンテキストを提供する MCP サーバーを備えています。ヒューリスティックなリスクスコアに加え、要約、類似変更、貢献者の履歴、テスト検索を扱います。

主な機能

  1. 01スワイプ式 PR レビュー
  2. 02ヒューリスティックなリスクスコア
  3. 03AI 要約と PR コンテキスト
  4. 04類似変更の検索
  5. 05貢献者履歴とテスト検索
  6. 06レビュー判断の記録

活用シーン

  1. 01未処理の GitHub プルリクエストの選別
  2. 02マージ前のリスクと関連変更の確認
  3. 03変更ファイルを対象とするテストの検索
  4. 04Claude Desktop または Cursor から PR の情報を確認

MCP 対応

MCP サーバーは、PR データ、リスクスコア、関連変更、貢献者履歴、ファイル、テストを読み取る 12 個のツールを公開し、レビュー判断とセッション要約の記録にも対応します。

設定

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

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

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

パッケージ
npmsupergateway

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

SwiPR

AI コンテキストを活用し、スワイプで GitHub PR をレビューできます。Claude MCP プラグインとして動作します。

ライブデモを試す → · Claude Desktop に追加 ↓ · smithery.ai に掲載


このプロジェクトの背景

Resend CEO の Zeno Rocha 氏が X で述べています。

「PR を作成するコストはゼロになりました。今では、限りある(そして非常に貴重な)リソースである注意を待つドラフト PR が山ほどあります。ボトルネックはもはや作成ではなく、レビューだということです。」 — 2026年2月

「以前、メインリポジトリで開いている PR は、どの日も平均して約20〜40件でした。今では、平均して約130〜200件が開いています。」 — 2026年5月

PR レビューの課題はコンテキストにあります。メンテナーが優先順位を判断する場合でも、AI エージェントがマージするかどうかを決める場合でも、問われることは同じです。これを安全にリリースできるか? 適切に答えるには、変更行を読むだけでなく、リスクレベル、コントリビューターの履歴、過去の類似変更、差分をカバーするテストを把握する必要があります。

SwiPR はこのコンテキストを、人間向けのスワイプ UI と、エージェント向けの MCP サーバーとして提供します。


仕組み

  1. 公開 GitHub リポジトリを貼り付けると、SwiPR がオープン PR を取得し、埋め込みベクトルとともに保存します
  2. 右にスワイプして承認、左にスワイプして変更をリクエスト、下にスワイプしてスキップします。または J/F/Space を使います
  3. 右側のパネルには、リスクスコア、AI による要約、過去の類似 PR、コントリビューターの履歴が表示されます
  4. 「Why is this risky?」、「Show me callers」、「What tests cover this?」 をクリックすると、必要に応じて詳しいコンテキストを確認できます
  5. チャットで何でも質問できます。AI は完全な差分とコードベースのコンテキストを利用できます

AI コンテキストは PR ごとにキャッシュされるため、カードを表示するたびに API を呼び出すことはありません。


MCP サーバー

SwiPR は同じ PR コンテキストを MCP サーバーとして公開します。Claude Desktop または Cursor に追加すれば、ブラウザーを使わず、チャットから直接 PR をレビューできます。

~/Library/Application Support/Claude/claude_desktop_config.json に追加します。

{
  "mcpServers": {
    "swipr": {
      "command": "npx",
      "args": ["-y", "supergateway", "--streamableHttp", "https://v0-swipr-build.vercel.app/api/mcp"]
    }
  }
}

次に Claude に質問します。

  • 「resend/resend-node の PR #1247 を調べてください。リスクは何ですか?過去に類似した変更はありますか?」
  • 「vercel/next.js のオープン PR のうち、ルーターに触れているものはどれですか?」
  • 「PR #892 で変更されたファイルをカバーするテストを探してください。」

12個の MCP ツールはすべてデータベースの読み取り専用です。ホスト型サーバーの利用時に AI クレジットは一切消費されません。

SwiPR は smithery.ai と mcp.so に掲載されています。

利用可能なツール
ツール返される内容
lookup_prowner/repo#number を内部 ID に解決
analyze_prPR の全データ:ファイル、パッチ、リスクスコア、コントリビューターの統計、キャッシュ済みの AI 要約
risk_score理由付きの0〜100のヒューリスティックスコア
find_similar_changes同じリポジトリ内にある、意味的に類似した過去の PR
get_contributor_historyPR 件数、マージ率、初回コントリビューション日
inspect_fileHEAD 時点のファイルの生の内容
find_callers関数名の使用箇所をパッチから検索
find_related_tests変更されたコードをカバーしている可能性が高いテストファイル
git_blame_summaryファイルパスに対する最近のコントリビューター
compare_with任意の Git ref 時点のファイル内容
record_decision承認/変更/スキップの記録
summarize_sessionセッション終了時の統計

AI キーを持ち込む

チャット機能は、以下の無料プランを提供するプロバイダーで利用できます。ヘッダーの ⌘ ボタンをクリックし、キーを貼り付けてください。キーはブラウザーの localStorage にのみ保存され、サーバーに送信されることはありません。

プロバイダーキーの形式無料プラン
Groqgsk_...はい — Llama 3.3 70B
Google GeminiAIza...はい — Gemini 2.0 Flash
Anthropicsk-ant-...有料 — Claude Sonnet 4.6

リスクスコアのカスタマイズ

リスクを推定するヒューリスティックは、すべて lib/scoring.ts にあります。プレーンな TypeScript で、機械学習も外部呼び出しもありません。チームの基準に合わせて編集してください。

デフォルトのルール:

シグナルスコア
差分が大きい(500 行超)+20
差分が中程度(200~500 行)+10
変更ファイルが多い(20 個超)+15
設定/ロックファイル/CI ファイルに変更がある+20
テストファイルの変更がない+10
PR の説明が空+10
初めてのコントリビューター+15
新しいコントリビューター(過去の PR が 3 件未満)+8
過去のマージ率が低い(40% 未満)+10

ルールを追加するには、computeRiskScore に if ブロックを追加します。

const touchesAuth = files.some((f) => f.filename.includes("lib/auth"));
if (touchesAuth) {
  score += 25;
  reasons.push("Touches auth module — requires security review");
}

スコアの上限は 100 です。色のしきい値(緑/黄/赤)は 40 と 70 です。調整するには app/swipe/_components/view-helpers.ts を編集してください。


セルフホスト

3 つのサービスが必要です。いずれも無料プランがあります。

1. クローンしてインストール
git clone https://github.com/nochinxx/SwiPR.git
cd SwiPR
pnpm install
2. アカウントを作成
サービス用途無料プラン
NeonPostgres + pgvector512 MB
Vercel AI GatewayClaude + 埋め込み$5 分のクレジット
GitHub PAT(任意)API レート制限の緩和無料
3. 環境を設定
cp .env.example .env.local
DATABASE_URL=postgresql://...      # Neon pooled connection string
AI_GATEWAY_API_KEY=...             # Vercel AI Gateway key
GITHUB_TOKEN=...                   # Optional — raises GitHub rate limit to 5000/hr
4. データベースを初期化
-- Run in Neon SQL editor
CREATE EXTENSION IF NOT EXISTS vector;
pnpm db:push
-- Add HNSW indexes for fast similarity search
CREATE INDEX IF NOT EXISTS prs_embedding_idx ON prs USING hnsw (embedding vector_cosine_ops);
CREATE INDEX IF NOT EXISTS pr_files_embedding_idx ON pr_files USING hnsw (embedding vector_cosine_ops);
5. 実行してデプロイ
pnpm dev          # local dev
pnpm build        # verify before deploying
pnpm precache     # pre-load repos for a demo

GitHub にプッシュし、Vercel プロジェクトに接続して、Vercel の設定で同じ環境変数を設定します。Claude Desktop の設定で、独自のデプロイ URL を指定してください。


ストレージの上限

Neon の無料プランでは約 512 MB を利用できます。取り込む PR 1 件あたり約 100 KB を使用します。アップグレードが必要になる前に、約 5,000 件の PR、または中規模リポジトリ 40~50 個を扱えます。取り込み対象は、リポジトリごとにオープン中の PR 100 件までです。


技術スタック

  • Next.js 16 — App Router、React 19
  • Tailwind v4 + shadcn/ui — スタイリング
  • Framer Motion — カードのアニメーション
  • Neon Postgres + pgvector — PR の保存と類似検索
  • Drizzle ORM — スキーマとクエリ
  • Vercel AI Gateway — Claude Sonnet 4.6(分析)、text-embedding-3-small(ベクトル)
  • @ai-sdk/anthropic · @ai-sdk/google · @ai-sdk/groq — BYOK チャット対応
  • mcp-handler — /api/mcp の MCP サーバー

コントリビューション

Issue と PR を歓迎します。

  • 技術スタックは Next.js App Router + Drizzle + Neon + Vercel AI SDK です。それ以外の抽象化は使用しません。
  • リスクスコアは lib/scoring.ts で計算します。ヒューリスティックの改善を特に歓迎します。
  • GitHub OAuth や PR の実際の投稿機能は追加しないでください。意図的に読み取り専用にしています。
  • PR を作成する前に pnpm build を実行してください。

コメント

MCP は初めてですか?

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

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