Commit Graph
11 Commits
Author SHA1 Message Date
kolaente a8501c28e5 fix(mcp): hint at listing all actions when find_action matches nothing
An empty find_action result looked identical to "not authorized", so
agents guessing a wrong resource prefix (task_relations instead of
tasks_relations) concluded their token lacked permission.

Refs #4342
2026-11-05 13:34:47 +01:00
kolaente 4fa4e20a7c fix(mcp): allocate field projection map only when a field matches 2026-11-03 09:23:07 +01:00
kolaente d335888c89 fix(mcp): forward fields body argument on tools without projection
The fields projection argument was stripped from every tool's arguments,
including write tools like tasks_bulk_update where fields is part of the
request body, so bulk updates always failed with ErrBulkTaskFieldsRequired.

Fixes #4235
2026-10-23 14:51:17 +02:00
kolaente b3055f393c feat(mcp): point filter params, errors and instructions at filter_syntax 2026-10-19 13:25:00 +02:00
kolaente da2d3b01f0 feat(mcp): add filter_syntax tool and resource 2026-10-19 13:25:00 +02:00
kolaente 3557e172b4 feat(mcp): let read tools return only requested fields 2026-10-18 12:33:03 +02:00
kolaenteandTink d390a7c374 feat(mcp): expose connection settings and token presets
(cherry picked from commit a796db73475469bba18e3c20c8d7d1b818abcc5a)
(cherry picked from commit 0e47ccb001b8bf385f2688126bef8f4918917b45)
2026-09-15 11:41:34 +02:00
kolaenteandTink bba48e40bc feat(mcp): add the module and streamable-http transport
mcp.New builds the tool index from the v2 document and serves a stateless
per-request server: JWTs are rejected, mcp:access is required, tools/list is
filtered by the caller's token, and cross-origin browser requests are
refused unless the CORS configuration trusts the origin.
2026-09-15 11:41:34 +02:00
kolaenteandTink 4ccf95bf83 feat(mcp): add catalog discovery and execution meta-tools
find_action lists the catalog actions the token authorizes, with a
description generated per request; do_action invokes one.
2026-09-15 11:41:34 +02:00
kolaenteandTink 9d57de26d0 feat(mcp): dispatch tool calls through the v2 handlers
Each call is replayed as an internal HTTP request with the caller's API
token, so route scopes, expand scopes and the audit trail are the real ones.
2026-09-15 11:41:34 +02:00
kolaenteandTink e115c375f2 feat(mcp): derive tool specs from the v2 OpenAPI document
Tools are built from the finished document: path and query parameters plus
the JSON body become one input schema, update tools take their schema from
the sibling PUT because AutoPatch strips $ref, and an explicit allow-list
decides which operations are typed tools, catalog actions, or hidden.
2026-09-15 11:41:34 +02:00