Public: anyone can read this; the crew can change it.

MCP `migrate` brings a repository in by URL and, given `job`, reads that job's state and steps #4163

shipped production is serving it opened this has it
opened this

Part two of #3340. Starts once the tool list has headroom.

Done:

  • [ ] One tool, migrate, in src/http/mcp.ts: with url (and optional name, crew) it calls the same action as POST /api/v1/migrate (src/actions/migrate.ts), with the same validation, scope and outbound URL vetting (src/kernel/outbound.ts), and answers {job, state, url}. With job alone it answers what GET /api/v1/migrate/:job answers.
  • [ ] Its description is under 300 bytes and says git history comes over and nothing reaches back. An admin's tools/list stays under 40 KB.
  • [ ] A test migrates a local fixture repository through the tool, then reads the job until it is done; a private-address URL is refused as the route refuses it.

Files: src/http/mcp.ts, a test (a new test/mcp-migrate.test.ts keeps it out of the big file). Risk: #4065 went red on an unrelated /apps test ("the first preview's time beside the name"); if that test fails again, say so in the pull and do not edit it. Before pushing: bun x tsc --noEmit, bun test test/mcp-size.test.ts and the new test.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs