APM 管理対象として MCP サーバー 4 つと Claude Code プラグイン 2 つを追加#375
Merged
Conversation
…理下に追加 - 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 の事前インストール不要)
Owner
Author
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
There was a problem hiding this comment.
Pull request overview
APM マニフェスト(apm.yml)を Source of Truth として、プロジェクトで利用する MCP サーバー(semgrep / chrome-devtools / serena / context7)を一元管理し、apm install で各 IDE/CLI 向け設定へ自動展開できるようにする変更です。あわせて MCP 運用ルールのドキュメント化と、生成物の追跡除外(.gitignore)を整備しています。
Changes:
apm.ymlにdependencies.mcpを追加し、4 つの MCP サーバーを self-defined 形式で宣言(target→targetsも更新)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 関連を追記する |
- 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 に置く
- 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 環境で再現性が一致する。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
apm.ymlのdependenciesを Source of Truth として、以下 2 種類のプリミティブを APM 管理下に追加。dependencies.mcp(MCP サーバー 4 つ、self-defined・バージョン固定)semgrepuvx semgrep-mcpchrome-devtoolsnpx -y chrome-devtools-mcp@1.0.1serenauvx --from git+https://github.com/oraios/serena@c3a8d5a9c5 serena start-mcp-servercontext7npx -y @upstash/context7-mcpdependencies.apm(Claude Code プラグイン 2 つ、SHA pin 済み)code-reviewplugins/code-reviewsuperpowersapm 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対象apm.ymlのみ という既存方針 (PR #366) を MCP / APM プリミティブにも拡張dependencies.apmの各エントリは#<sha>で必ずピン (apm installのunpinned -- 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 にしたか
apm mcp install <registry-name>) の解決結果が不正な場合がある (例:oraios/serenaがuvx 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 mcpがUnknown target 'vscode'で失敗するため必要なリネーム。semgrep の構成選択
semgrep mcp(Semgrep CLI のサブコマンド) を使うが、本 PR ではuvx semgrep-mcp(Semgrep 公式 PyPI 版semgrep/mcp) を採用uvとnodeだけ に統一。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 種類あり、互いに別概念:
dependencies.mcp): IDE に提供するツール群 (今回の semgrep / chrome-devtools / serena / context7)dependencies.apm): Skills / commands / prompts / hooks のバンドル (今回の code-review / superpowers)--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)chrome-devtoolsの npx 起動が対話プロンプトに依存しうるargsに-yを追加chrome-devtools-mcp@latestは再現性が落ちるchrome-devtools-mcp@1.0.1にバージョン固定git+https://.../oraios/serenaがブランチ HEAD を引く@c3a8d5a9c54622c8ce771a54e5feffd6efda8749(v1.5.1 相当) で SHA pinmcp-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 installでunpinned -- add #tag or #sha to prevent drift警告が出ないことapm compile後のCLAUDE.mdに新規mcp-servers/apm-pluginsセクションが反映されること