omnigraph/crates/omnigraph-server/tests
Ragnor Comerford c8e91c11f0
feat(mcp): per-query @mcp(...) annotation + per-param @description + @instruction folding
Wire the `.gq` authoring surface that controls how a stored query is projected
as an MCP tool. All of it rides in the query source (content-addressed,
re-parsed at boot), so there is no cluster.yaml / catalog / serving-snapshot
plumbing — and it is orthogonal to Cedar `invoke_query` (presentation, not
authorization).

- Per-parameter `@description("…")` (leading the variable) → carried on
  `Param.description`, mapped through `param_descriptor`, and emitted on the
  outer JSON-Schema property by `param_json_schema`, so it shows up in both the
  MCP tool input schema and the `GET /queries` catalog.
- Query `@mcp(expose: <bool>, tool_name: "<name>")` → parsed into
  `QueryDecl.mcp`; `StoredQuery::is_exposed()` / `effective_tool_name()` resolve
  from it. `expose: false` hides a query from the agent surface (`tools/list`,
  `stored_query_list`, run-by-name) while keeping it HTTP/service-callable.
- `@instruction` is folded into the MCP tool description (after `@description`),
  so the agent-facing how/when-to-use guidance reaches `tools/list`.
- Removes the now-dead `RegistrySpec.{expose, tool_name}` fields (server + CLI);
  `settings.rs` no longer hardcodes `expose: true`. Test helpers express
  exposure by injecting `@mcp(expose: false)` into the source (the real path).

openapi.json regenerated: `ParamDescriptor` gains an optional `description`.

Tests: compiler parser (param @description, @mcp parse + duplicate rejection),
api-types schema_equivalence (description on the outer property), server mcp
(folded description + param docs + @mcp tool rename, list==call). Full
workspace gate green.
2026-06-17 16:04:05 +02:00
..
support feat(mcp): per-query @mcp(...) annotation + per-param @description + @instruction folding 2026-06-17 16:04:05 +02:00
auth_policy.rs feat(server)!: cluster-only server — remove single-graph serving (RFC-011) (#250) 2026-06-15 20:17:25 +03:00
boot_settings.rs feat(server)!: cluster-only server — remove single-graph serving (RFC-011) (#250) 2026-06-15 20:17:25 +03:00
data_routes.rs [codex] fix RFC-011 follow-up regressions (#258) 2026-06-16 03:11:43 +03:00
mcp.rs feat(mcp): per-query @mcp(...) annotation + per-param @description + @instruction folding 2026-06-17 16:04:05 +02:00
multi_graph.rs Merge remote-tracking branch 'origin/main' into ragnorc/shaping-config-integration 2026-06-16 04:13:00 +03:00
openapi.rs feat(server)!: cluster-only server — remove single-graph serving (RFC-011) (#250) 2026-06-15 20:17:25 +03:00
s3.rs feat(server)!: cluster-only server — remove single-graph serving (RFC-011) (#250) 2026-06-15 20:17:25 +03:00
schema_routes.rs [codex] fix RFC-011 follow-up regressions (#258) 2026-06-16 03:11:43 +03:00
stored_queries.rs feat(server)!: cluster-only server — remove single-graph serving (RFC-011) (#250) 2026-06-15 20:17:25 +03:00