fabro/lib
Scott Werner 20cde16b59 feat(server): mcp-servers HTTP API — handlers, type reuse, TS client
Implement the server-managed MCP server catalog HTTP API on top of the
OpenAPI spec and the `fabro-mcp-store` foundation, mirroring the
automations feature end to end.

- fabro-api: reuse the domain model as the wire contract via
  `with_replacement` instead of parallel DTOs — `McpServer` →
  `McpServerDefinition`, `CreateMcpServerRequest` → `McpServerDraft`,
  `ReplaceMcpServerRequest` → `McpServerReplace`. The transport types
  (`McpTransport`, `McpHttpProtocol`) are already mapped to the domain
  `u64`/`u16` widths, so the spec's signed integer formats never leak.
  Add identity + JSON-parity tests.
- fabro-types: derive serde on `McpServerDefinition` so it can serve as
  the public response type.
- fabro-server: wire the `McpServerStore` into `AppState` (load from the
  active config's `mcps/` directory) and add the
  `list/create/get/replace/delete` handlers with ETag-on-201, required
  `If-Match` on PUT/DELETE, and the same store-error → status mapping
  automations uses (404/409/422/500). Register the routes.
- Regenerate the TypeScript Axios client against the merged spec.

Credential-literal validation (warn vs hard-reject for credential-looking
literal env/header values) is left intentionally unenforced behind a TODO;
that decision is still open.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 13:04:01 -04:00
..
crates feat(server): mcp-servers HTTP API — handlers, type reuse, TS client 2026-06-30 13:04:01 -04:00
packages/fabro-api-client feat(server): mcp-servers HTTP API — handlers, type reuse, TS client 2026-06-30 13:04:01 -04:00