Skip to content

Comments

Add MCP server deduplication to spec#9

Merged
zircote merged 11 commits intomainfrom
feat/mcp-dedup
Feb 16, 2026
Merged

Add MCP server deduplication to spec#9
zircote merged 11 commits intomainfrom
feat/mcp-dedup

Conversation

@zircote
Copy link
Owner

@zircote zircote commented Feb 15, 2026

Summary

Adds MCP server deduplication to the ccpkg specification, addressing duplicate processes, config bloat, and context waste when multiple packages bundle the same MCP server.

Fixes #8

Changes

  • Design Principle Design principles incorrect #7: MCP server deduplication added to design principles
  • Server Identity Model: (key_name, origin) tuple for identifying duplicate servers, with version resolution rules and user override mechanisms
  • Lockfile shared_mcp_servers: New top-level field tracking which packages declare each server, active source, and dedup state
  • Install Step 10 revised: Dedup logic (a-f substeps) checks for duplicates before writing MCP config
  • Uninstall Step 3 revised: Reassignment logic re-extracts from archive cache when active source is removed
  • Archive Cache section: Formalizes cache location and retention rules for re-extract support
  • Design Decision 16: Documents the install-time dedup strategy and alternatives considered

Files modified

  • spec/specification.md (source of truth)
  • src/content/docs/specification/overview.mdx
  • src/content/docs/specification/component-types.mdx
  • src/content/docs/specification/install-lifecycle.mdx
  • src/content/docs/specification/lockfile.mdx
  • src/content/docs/design/rationale.mdx
  • docs/plans/2026-02-14-ccpkg-design.md

Test plan

  • Website builds successfully after each commit (7/7 builds passed)
  • No AI-telltale characters in new content
  • All 16 pages generated

Design for installer-level MCP server deduplication to
address Issue #8. Key decisions:
- Identity model: key_name + origin tuple
- Lockfile: new shared_mcp_servers section
- Highest version wins by default
- User override via --no-dedup or per-server config
- Re-extract from cached archives on uninstall
- No manifest or archive format changes
8-task plan covering design principles, server identity model,
lockfile schema, install/uninstall lifecycle changes, archive
cache, and design rationale updates.
Copilot AI review requested due to automatic review settings February 15, 2026 23:45
@zircote
Copy link
Owner Author

zircote commented Feb 15, 2026

@copilot review

Copy link

Copilot AI commented Feb 15, 2026

@zircote I've opened a new pull request, #10, to work on those changes. Once the pull request is ready, I'll request review from you.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the ccpkg specification (and its website-rendered MDX copies) to introduce installer-level MCP server deduplication, including an identity model, lockfile tracking via shared_mcp_servers, lifecycle updates for install/uninstall, and an archive cache requirement to support reassignment.

Changes:

  • Add a new design principle for MCP server deduplication and define an identity + version resolution model with user overrides.
  • Extend the lockfile format with shared_mcp_servers and specify an installer archive cache for uninstall reassignment.
  • Revise install/uninstall lifecycle steps to perform deduplication on install and reassignment on uninstall; document the design decision in rationale/plans.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 13 comments.

Show a summary per file
File Description
spec/specification.md Source-of-truth spec updates: dedup rules, lifecycle steps, lockfile + archive cache additions.
src/content/docs/specification/overview.mdx Mirrors the new design principle on the website docs.
src/content/docs/specification/component-types.mdx Adds “Server Deduplication” subsection for MCP servers in website docs.
src/content/docs/specification/install-lifecycle.mdx Mirrors install/uninstall dedup + reassignment logic in website docs.
src/content/docs/specification/lockfile.mdx Documents shared_mcp_servers and archive cache in website docs.
src/content/docs/design/rationale.mdx Adds a rationale/design decision section for install-time dedup.
docs/plans/2026-02-15-mcp-dedup-plan.md New implementation plan doc for the spec changes.
docs/plans/2026-02-15-mcp-dedup-design.md New design doc describing the dedup approach and alternatives.
docs/plans/2026-02-14-ccpkg-design.md Adds the MCP dedup design decision to the existing design plan/doc.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Fix Mode 1 origin to use full args array instead of args[0]
- Add deterministic null version comparison rules
- Define non-interactive conflict resolution (fail with error)
- Specify package-scoped keying for dedup:false entries
- Clarify uninstall reassignment for linked packages
- Align cache paths in lockfile.mdx with Astro docs convention
- Update merged_mcp_servers field description in spec
@zircote zircote merged commit 4733260 into main Feb 16, 2026
@zircote zircote deleted the feat/mcp-dedup branch February 16, 2026 00:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Design principles

2 participants