Skip to content

APM 管理対象として MCP サーバー 4 つと Claude Code プラグイン 2 つを追加#375

Merged
ROhta merged 3 commits into
mainfrom
worktree-apm-skills-mcp
May 23, 2026
Merged

APM 管理対象として MCP サーバー 4 つと Claude Code プラグイン 2 つを追加#375
ROhta merged 3 commits into
mainfrom
worktree-apm-skills-mcp

Conversation

@ROhta

@ROhta ROhta commented May 23, 2026

Copy link
Copy Markdown
Owner

Summary

apm.ymldependencies を Source of Truth として、以下 2 種類のプリミティブを APM 管理下に追加。

dependencies.mcp (MCP サーバー 4 つ、self-defined・バージョン固定)

名前 起動コマンド 用途
semgrep uvx semgrep-mcp 静的解析 (SAST)
chrome-devtools npx -y chrome-devtools-mcp@1.0.1 Chrome DevTools 経由のブラウザ自動化
serena uvx --from git+https://github.com/oraios/serena@c3a8d5a9c5 serena start-mcp-server LSP ベースのコード探索
context7 npx -y @upstash/context7-mcp ライブラリ公式ドキュメント取得

dependencies.apm (Claude Code プラグイン 2 つ、SHA pin 済み)

プラグイン リポジトリ 用途
code-review anthropics/claude-code plugins/code-review PR の自動コードレビュー
superpowers obra/superpowers TDD・デバッグ・コラボの汎用 Skill 群 (14 スキル)

apm install 一発で Claude Code (.mcp.json + .claude/skills/ + .claude/commands/ + .claude/hooks/) / GitHub Copilot in VS Code (.vscode/mcp.json + .github/prompts/) / Codex CLI (.codex/config.toml) の全 IDE 設定が再現される。

ドリフト防止策

  • 生成物 (.mcp.json, .vscode/mcp.json, .codex/config.toml, .agents/skills/, .claude/skills/, .claude/commands/, .claude/hooks/, .claude/settings.json, .claude/apm-hooks.json, .github/prompts/, .github/hooks/, apm_modules/) はすべて .gitignore 対象
  • Source of Truth は apm.yml のみ という既存方針 (PR #366) を MCP / APM プリミティブにも拡張
  • dependencies.apm の各エントリは #<sha> で必ずピン (apm installunpinned -- add #tag or #sha to prevent drift 警告に従う)
  • dependencies.mcp でも 再現性確保のため @<version> または @<sha> で固定 (Copilot Review .github配下を整理する #2 github pages公開対応 #3 を反映)
  • npx 起動時は -y を必ず付ける (npx の対話プロンプトが CI 等の非対話環境でハングするリスクを排除。Copilot Review Everything update #1 を反映)

なぜ APM レジストリ経由ではなく self-defined / 直接 GitHub にしたか

  • MCP: APM 公式レジストリ (apm mcp install <registry-name>) の解決結果が不正な場合がある (例: oraios/serenauvx ide-assistant という別物に展開される)。-- <command> [args...] 形式の self-defined なら各 IDE 設定に意図したコマンドがそのまま展開される
  • プラグイン: <owner>/<repo>[/<path>]#<sha> 形式は GitHub から直接解決されるため、apm marketplace add (global config への書き込み) は不要。チームメイトは clone 後 apm install するだけで再現可能 (marketplace 未登録環境で検証済み)

副次変更: target: (単数) → targets: (複数) リネーム

APM 0.14.1 の MCP デプロイロジックは targets: (複数形) を要求する。target: のままだと apm install --only mcpUnknown target 'vscode' で失敗するため必要なリネーム。

semgrep の構成選択

  • 公式 Claude Code プラグインは semgrep mcp (Semgrep CLI のサブコマンド) を使うが、本 PR では uvx semgrep-mcp (Semgrep 公式 PyPI 版 semgrep/mcp) を採用
  • 理由: 開発者の前提条件を uvnode だけ に統一。Semgrep CLI の事前インストール不要 (semgrep バイナリも uvx semgrep-mcp 初回起動時に自動ダウンロード)

.claude/settings.json を ignore する理由

APM がプラグインのフック有効化のため .claude/settings.json絶対パス (/home/$USER/...) を書き込む。リポジトリで共有しても各環境でパスが食い違って機能しないため、generated artifact として扱う。
個人の Claude Code 設定は ~/.claude/settings.json.claude/settings.local.json (Claude Code の慣習で per-user 扱い) に置く。

用語の整理 (MCP / APM パッケージ / APM スキル)

APM のプリミティブは 3 種類あり、互いに別概念:

  1. MCP サーバー (dependencies.mcp): IDE に提供するツール群 (今回の semgrep / chrome-devtools / serena / context7)
  2. APM パッケージ (dependencies.apm): Skills / commands / prompts / hooks のバンドル (今回の code-review / superpowers)
  3. APM スキル (--skill フラグ): SKILL_BUNDLE から個別の SKILL.md を選択インストール (本 PR では未使用)

ユーザー要望の「skill として管理」は (1) MCP サーバーと (2) APM パッケージ の混在解釈で、本 PR では両者を APM 管理下にした。mcp-servers.instructions.md / apm-plugins.instructions.md で各プリミティブを文書化。

Copilot Code Review 対応 (commit afb6ac8)

# 指摘 対応
1 chrome-devtools の npx 起動が対話プロンプトに依存しうる args-y を追加
2 chrome-devtools-mcp@latest は再現性が落ちる chrome-devtools-mcp@1.0.1 にバージョン固定
3 git+https://.../oraios/serena がブランチ HEAD を引く @c3a8d5a9c54622c8ce771a54e5feffd6efda8749 (v1.5.1 相当) で SHA pin

mcp-servers.instructions.md にもバージョン固定方針と npx -y 必須化のルールを追記。

Smoke test

  • uvx semgrep-mcp --help / npx -y @upstash/context7-mcp --help / npx -y chrome-devtools-mcp@1.0.1 --help: 正常
  • apm install を marketplace 未登録環境で実行 → 直接 GitHub 経由でプラグイン取得成功
  • apm install の冪等性確認 (2 回目以降は "already configured" / "files unchanged" / 更新後は "updated")
  • apm compile で CLAUDE.md に新規 instructions セクション (mcp-servers, apm-plugins) が反映されることを確認

Test plan

  • apm install が 4 MCP + 2 APM プラグインを冪等にデプロイすること
  • .mcp.json / .vscode/mcp.json / .codex/config.toml / .agents/skills/ / .claude/skills/ / .claude/commands/ / .claude/hooks/ / .github/prompts/ が git status に出ない (.gitignore 効いている)
  • apm installunpinned -- add #tag or #sha to prevent drift 警告が出ないこと
  • apm compile 後の CLAUDE.md に新規 mcp-servers / apm-plugins セクションが反映されること

…理下に追加

- apm.yml の dependencies.mcp に self-defined 形式で 4 サーバーを宣言
- apm install で Claude Code (.mcp.json) / VS Code Copilot (.vscode/mcp.json) / Codex CLI (.codex/config.toml) に自動展開
- 生成物 3 ファイルは .gitignore に追加 (apm.yml が唯一の Source of Truth)
- 運用ルールを .apm/instructions/mcp-servers.instructions.md に集約
- apm-workflow.instructions.md の管理表と手順に MCP 関連エントリを追記

副次変更:
- apm.yml の target: (単数) を targets: (複数) にリネーム
  APM の MCP デプロイロジックは targets: を要求するため。
  そのまま残すと apm install --only mcp が "Unknown target 'vscode'" で失敗する。

semgrep の構成選択:
- semgrep CLI の mcp サブコマンドではなく uvx semgrep-mcp (Semgrep 公式 PyPI 版) を採用
- 開発者の前提条件を uv と node だけに統一するため (Semgrep CLI の事前インストール不要)
Copilot AI review requested due to automatic review settings May 23, 2026 04:06
@ROhta

ROhta commented May 23, 2026

Copy link
Copy Markdown
Owner Author

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
Code Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

APM マニフェスト(apm.yml)を Source of Truth として、プロジェクトで利用する MCP サーバー(semgrep / chrome-devtools / serena / context7)を一元管理し、apm install で各 IDE/CLI 向け設定へ自動展開できるようにする変更です。あわせて MCP 運用ルールのドキュメント化と、生成物の追跡除外(.gitignore)を整備しています。

Changes:

  • apm.ymldependencies.mcp を追加し、4 つの MCP サーバーを self-defined 形式で宣言(targettargets も更新)
  • apm install が生成する MCP 設定ファイル(.mcp.json / .vscode/mcp.json / .codex/config.toml)を .gitignore 対象に追加
  • MCP サーバーの運用ルールを .apm/instructions/mcp-servers.instructions.md に集約し、APM 運用表にも反映

Reviewed changes

Copilot reviewed 3 out of 4 changed files in this pull request and generated 3 comments.

File Description
apm.yml MCP サーバー定義の追加と targets へのリネームで、一括デプロイを可能にする
.gitignore MCP 設定の生成物を追跡対象外にして SoT を apm.yml に固定する
.apm/instructions/mcp-servers.instructions.md MCP サーバーの追加・削除・生成物など運用ルールを明文化する
.apm/instructions/apm-workflow.instructions.md APM の SoT/生成物の管理表に MCP 関連を追記する

Comment thread apm.yml
Comment thread apm.yml Outdated
Comment thread apm.yml Outdated
- apm.yml の dependencies.apm に anthropics/claude-code/plugins/code-review と obra/superpowers を SHA pin 付きで追加
- apm install で .agents/skills/ / .claude/skills/ / .claude/commands/ / .github/prompts/ / .claude/hooks/ などにスキル・コマンド・フックが展開される
- 展開先 9 箇所をすべて .gitignore に追加 (apm.yml が唯一の SoT)
- 運用ルールを .apm/instructions/apm-plugins.instructions.md として新規追加
- mcp-servers.instructions.md の "他のプリミティブとの違い" 節を MCP / APM パッケージ / APM スキル 3 種に整理
- apm-workflow.instructions.md の管理表に dependencies.apm 行と展開先一覧を追記

実装方針:
- marketplace は global config (~/.apm/marketplaces.json) のみ依存。apm.yml には書かない。
  apm.yml の <owner>/<repo>/<path>#<sha> 形式は GitHub から直接解決されるため、
  チームメイトは clone 後 apm install するだけで再現可能 (検証済み)
- SHA pin は drift 防止方針 ([[apm_workflow]]) に従い必須
- .claude/settings.json は APM がフック有効化に絶対パスを書き込むため ignore。
  個人設定は ~/.claude/settings.json か .claude/settings.local.json に置く
@ROhta ROhta changed the title 4 つの MCP サーバー (semgrep / chrome-devtools / serena / context7) を APM 管理下に追加 APM 管理対象として MCP サーバー 4 つと Claude Code プラグイン 2 つを追加 May 23, 2026
- chrome-devtools の args に -y を追加 (npx 初回実行時の対話プロンプト回避)
- chrome-devtools-mcp@latest を chrome-devtools-mcp@1.0.1 にバージョン固定
- serena の git URL を @c3a8d5a9c54622c8ce771a54e5feffd6efda8749 (v1.5.1 相当) で SHA pin
- mcp-servers.instructions.md にバージョン固定方針と npx -y 必須化のルールを追記
- smoke test: npx -y chrome-devtools-mcp@1.0.1 --help が正常起動を確認

これにより apm install のたびに上流の最新が引かれる挙動を排除。
チームメイト間と CI 環境で再現性が一致する。
@ROhta
ROhta merged commit f329e5e into main May 23, 2026
7 checks passed
@ROhta
ROhta deleted the worktree-apm-skills-mcp branch May 23, 2026 11:54
@ROhta ROhta self-assigned this May 23, 2026
@ROhta ROhta added the enhance-2 新機能 後方互換性を切らない変更・機能追加 label May 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhance-2 新機能 後方互換性を切らない変更・機能追加

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants