Expand description
Seed the global MCP Servers catalog (db_mcp_servers, per-channel) with a
curated, credential-free starter set on fresh install.
Runs exactly once per channel, tracked in that channel’s db_migrations
table — NOT gated on “is the catalog currently empty,” for the same
reason m0015_seed_starter_skills isn’t: that gate can’t distinguish
“never seeded” from “seeded then the user deleted every starter server on
purpose,” which would silently resurrect the defaults on the next restart
after a full deletion. The migration framework’s once-ever-per-channel
tracking fixes this at the root: once 0016_seed_starter_mcp_servers is
marked applied, it never runs again for that channel regardless of what
the user does to the catalog afterward.
up() checks for an existing name collision first (same self-heal as
m0015) and treats it as “already seeded” rather than inserting — guards
against any future retired startup-seed path leaving the six starter
names present before this migration ever ran.
See docs/specs/SPEC_ARMORY_MCP_SERVER_DEFAULT_SEED_CATALOG_2026_07_13.md for why only credential-free, fully local servers are in this manifest.