feat(server): add release, tag, and package tools #14

Merged
David merged 1 commit from feat/releases-tags-packages-tools-fjmcp-13 into main 2026-06-14 21:06:08 +02:00
Owner

Expose every fj_core::release (11 ops), fj_core::tag (4 ops), and fj_core::packages (4 ops) operation as MCP tools, completing phase 3 of the tool-surface expansion. Each tool carries its FJMCP-10 permission tier: READ runs unconditionally, EDIT tools (create_release, edit_release, create_release_attachment, create_tag) call require(Tier::Edit), and DELETE tools (delete_release, delete_release_by_tag, delete_release_attachment, delete_tag, delete_package) call require(Tier::Delete).

The byte-returning reads (get_release_archive, download_release_attachment) write the payload to a local file (an optional dest_path, else a temp file) and return { path, bytes, filename } rather than streaming bytes through the MCP text channel, so large archives never blow up the result. The path shape is documented as only useful when the server shares a filesystem with the caller (stdio transport).

list_packages maps its type filter to ListPackagesQueryType via the same serde-based parse the fj packages CLI uses, keeping the accepted set in sync with the API. get_info instructions and the README tool tables/notes are updated for all 19 tools.

The fj-core / fj-client git dependency is repinned from tag v0.8.1 to rev 32312ee because the packages module landed on main after that tag and has no release tag yet; CLAUDE.md notes the temporary rev pin and the condition to move back to a tag.

#FJMCP-13

Expose every fj_core::release (11 ops), fj_core::tag (4 ops), and fj_core::packages (4 ops) operation as MCP tools, completing phase 3 of the tool-surface expansion. Each tool carries its FJMCP-10 permission tier: READ runs unconditionally, EDIT tools (create_release, edit_release, create_release_attachment, create_tag) call require(Tier::Edit), and DELETE tools (delete_release, delete_release_by_tag, delete_release_attachment, delete_tag, delete_package) call require(Tier::Delete). The byte-returning reads (get_release_archive, download_release_attachment) write the payload to a local file (an optional dest_path, else a temp file) and return { path, bytes, filename } rather than streaming bytes through the MCP text channel, so large archives never blow up the result. The path shape is documented as only useful when the server shares a filesystem with the caller (stdio transport). list_packages maps its type filter to ListPackagesQueryType via the same serde-based parse the fj packages CLI uses, keeping the accepted set in sync with the API. get_info instructions and the README tool tables/notes are updated for all 19 tools. The fj-core / fj-client git dependency is repinned from tag v0.8.1 to rev 32312ee because the packages module landed on main after that tag and has no release tag yet; CLAUDE.md notes the temporary rev pin and the condition to move back to a tag. #FJMCP-13
feat(server): add release, tag, and package tools
All checks were successful
Check / fmt + clippy + build + tests (pull_request) Successful in 36s
Create release / Create release from merged PR (pull_request) Has been skipped
7d0e18a875
Expose every fj_core::release (11 ops), fj_core::tag (4 ops), and fj_core::packages (4 ops) operation as MCP tools, completing phase 3 of the tool-surface expansion. Each tool carries its FJMCP-10 permission tier: READ runs unconditionally, EDIT tools (create_release, edit_release, create_release_attachment, create_tag) call require(Tier::Edit), and DELETE tools (delete_release, delete_release_by_tag, delete_release_attachment, delete_tag, delete_package) call require(Tier::Delete).

The byte-returning reads (get_release_archive, download_release_attachment) write the payload to a local file (an optional dest_path, else a temp file) and return { path, bytes, filename } rather than streaming bytes through the MCP text channel, so large archives never blow up the result. The path shape is documented as only useful when the server shares a filesystem with the caller (stdio transport).

list_packages maps its type filter to ListPackagesQueryType via the same serde-based parse the fj packages CLI uses, keeping the accepted set in sync with the API. get_info instructions and the README tool tables/notes are updated for all 19 tools.

The fj-core / fj-client git dependency is repinned from tag v0.8.1 to rev 32312ee because the packages module landed on main after that tag and has no release tag yet; CLAUDE.md notes the temporary rev pin and the condition to move back to a tag.

#FJMCP-13
David merged commit 83f7d6277d into main 2026-06-14 21:06:08 +02:00
David deleted branch feat/releases-tags-packages-tools-fjmcp-13 2026-06-14 21:06:08 +02:00
Commenting is not possible because the repository is archived.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
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/forgejo-mcp!14
No description provided.