feat(mcp): adopt the shared mcp-web crate for the generic web layer #127

Merged
David merged 1 commit from feat/YT-73-adopt-mcp-web into main 2026-07-18 04:07:58 +02:00
Owner

What

Adopt the shared mcp-web crate for youtrack-mcp's product-agnostic web layer (the second half of the YT-73 / MCPWEB-1 extraction). youtrack-mcp keeps only its YouTrack-specific parts and depends on mcp-web = "0.1" from the pandoras-box Forgejo Cargo registry.

Changes

  • Delete the relocated generic modules: crypto, password, totp, and web/{session,oauth_as,auth_mw,sweep,admin,accounts,templates} plus the generic HTML templates and the 0001-0005 migrations. Their clean equivalents live in mcp-web.
  • Keep the product parts and wire the seams: client_for_account (per-account YouTrack client from the stored instance), the UpstreamDirectory impl over the instance table, and the instance-management UI (web/instance.rs), handed to mcp_web::build_router as extra routes with /mcp gated by the re-exported require_bearer.
  • Ship the instance table as a single migration at version 1000, chained after mcp-web's generic set (1..=999) via mcp_web::db::open_with (one _sqlx_migrations table).
  • Keep the YOUTRACK_MCP_* env var names; yt mcp stdio is untouched.
  • Add .cargo/config.toml defining the pandoras-box-cargo registry (sparse index) so the dep resolves; the org is public, so the build reads it anonymously (no token).

Verification

just pre-commit green (fmt, clippy -D warnings, build, tests) with mcp-web 0.1.0 resolved from the registry inside the docker container. Cargo.lock pins mcp-web to sparse+https://dev.a8n.run/api/packages/pandoras-box/cargo/ with the published checksum.

Closes the last acceptance criterion of MCPWEB-1 (just pre-commit green in both repositories).

#MCPWEB-1

## What Adopt the shared `mcp-web` crate for youtrack-mcp's product-agnostic web layer (the second half of the YT-73 / MCPWEB-1 extraction). youtrack-mcp keeps only its YouTrack-specific parts and depends on `mcp-web = "0.1"` from the pandoras-box Forgejo Cargo registry. ## Changes - Delete the relocated generic modules: `crypto`, `password`, `totp`, and `web/{session,oauth_as,auth_mw,sweep,admin,accounts,templates}` plus the generic HTML templates and the `0001`-`0005` migrations. Their clean equivalents live in `mcp-web`. - Keep the product parts and wire the seams: `client_for_account` (per-account YouTrack client from the stored instance), the `UpstreamDirectory` impl over the instance table, and the instance-management UI (`web/instance.rs`), handed to `mcp_web::build_router` as extra routes with `/mcp` gated by the re-exported `require_bearer`. - Ship the instance table as a single migration at version `1000`, chained after `mcp-web`'s generic set (`1..=999`) via `mcp_web::db::open_with` (one `_sqlx_migrations` table). - Keep the `YOUTRACK_MCP_*` env var names; `yt mcp stdio` is untouched. - Add `.cargo/config.toml` defining the `pandoras-box-cargo` registry (sparse index) so the dep resolves; the org is public, so the build reads it anonymously (no token). ## Verification `just pre-commit` green (fmt, clippy `-D warnings`, build, tests) with `mcp-web 0.1.0` resolved from the registry inside the docker container. `Cargo.lock` pins `mcp-web` to `sparse+https://dev.a8n.run/api/packages/pandoras-box/cargo/` with the published checksum. Closes the last acceptance criterion of MCPWEB-1 (`just pre-commit` green in both repositories). #MCPWEB-1
feat(mcp): adopt the shared mcp-web crate for the generic web layer
All checks were successful
Check / fmt + clippy + build + tests (pull_request) Successful in 27s
Create release / Create release from merged PR (pull_request) Has been skipped
47de5f5adb
Replace youtrack-mcp's in-crate copy of the product-agnostic MCP web layer with a dependency on the published `mcp-web` crate (extracted in YT-73), keeping only the YouTrack-specific parts. mcp-web resolves from the pandoras-box Forgejo Cargo registry (`mcp-web = "0.1"`, alias in .cargo/config.toml); the org is public so the build reads it anonymously.

- Delete the relocated generic modules: crypto, password, totp, and web/{session,oauth_as,auth_mw,sweep,admin,accounts,templates} plus the generic HTML templates and the 0001-0005 migrations. Their clean equivalents now live in mcp-web.
- Keep the product parts and wire the seams: `client_for_account` (per-account YouTrack client from the stored instance), the `UpstreamDirectory` impl over the instance table, and the instance-management UI (web/instance.rs, the one page this crate still renders), handed to `mcp_web::build_router` as extra routes with `/mcp` gated by the re-exported `require_bearer`.
- Ship the instance table as a single migration at version 1000, chained after mcp-web's generic set (1..=999) via `mcp_web::db::open_with`, so both live under one _sqlx_migrations table.
- Keep the YOUTRACK_MCP_* env var names; `yt mcp stdio` is untouched.

Whole workspace green (fmt, clippy -D warnings, tests) with mcp-web resolved from the registry inside the docker pre-commit.

#MCPWEB-1
David merged commit 14ae33bd9b into main 2026-07-18 04:07:58 +02:00
David deleted branch feat/YT-73-adopt-mcp-web 2026-07-18 04:07:58 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
pandoras-box/youtrack-cli!127
No description provided.