gabriel / musehub public
feat BREAKING feat/repo-crud-completeness #1 / 1
gabriel · 165 days ago · Apr 13, 2026 · Diff

feat: add musehub_get_repo and musehub_list_repos MCP tools with full field coverage

- Add execute_get_repo and execute_list_repos to musehub_mcp_executor - Add musehub_get_repo and musehub_list_repos to MUSEHUB_READ_TOOLS - Wire both tools in the MCP dispatcher - Add default_branch, updated_at, pushed_at to RepoResponse and _to_repo_response - Add TestExecuteGetRepo (8 tests) and TestExecuteListRepos (9 tests) - Add execute_update_repo tests to test_mcp_write_tools - Fix dispatcher test assertions to match actual result envelope format

sha256:b528411327019cd73c5137341a0812f3f71b50d4260daf5849af0144f347a7ee sha
+26 ~5 symbols
sha256:961081ec50f139ddd6f820e9864460f7e9f9b7456edc6e79a8a0227570874b0e snapshot
+26
symbols added
~5
symbols modified
0
dead code introduced
Semantic Changes 31 symbols
~ musehub/mcp/dispatcher.py .py 1 symbol modified
~ musehub/models/musehub.py .py 1 symbol modified
+ execute_get_repo function async_function execute_get_repo L1294–1359
+ execute_list_repos function async_function execute_list_repos L1362–1424
~ tests/test_mcp_read_tools.py .py 19 symbols added
+ TestExecuteGetRepo class class TestExecuteGetRepo L910–1014
+ test_get_repo_by_owner_slug method async_method test_get_repo_by_owner_slug L926–936
+ test_get_repo_by_repo_id method async_method test_get_repo_by_repo_id L913–924
+ test_get_repo_missing_args_returns_invalid method async_method test_get_repo_missing_args_returns_invalid L960–966
+ test_get_repo_not_found_returns_error method async_method test_get_repo_not_found_returns_error L952–958
+ test_get_repo_private_accessible_by_owner method async_method test_get_repo_private_accessible_by_owner L968–976
+ test_get_repo_returns_expected_fields method async_method test_get_repo_returns_expected_fields L938–950
+ test_get_repo_via_mcp_dispatcher method async_method test_get_repo_via_mcp_dispatcher L978–995
+ test_get_repo_via_mcp_owner_slug_dispatch method async_method test_get_repo_via_mcp_owner_slug_dispatch L997–1014
+ TestExecuteListRepos class class TestExecuteListRepos L1020–1135
+ test_list_repos_does_not_return_other_users_repos method async_method test_list_repos_does_not_return_other_users_repos L1105–1118
+ test_list_repos_empty_for_unknown_user method async_method test_list_repos_empty_for_unknown_user L1037–1044
+ test_list_repos_next_cursor_when_more method async_method test_list_repos_next_cursor_when_more L1082–1092
+ test_list_repos_no_cursor_on_last_page method async_method test_list_repos_no_cursor_on_last_page L1094–1103
+ test_list_repos_requires_actor method async_method test_list_repos_requires_actor L1046–1052
+ test_list_repos_respects_limit method async_method test_list_repos_respects_limit L1070–1080
+ test_list_repos_returns_expected_fields method async_method test_list_repos_returns_expected_fields L1054–1068
+ test_list_repos_returns_owned_repos method async_method test_list_repos_returns_owned_repos L1023–1035
+ test_list_repos_via_mcp_dispatcher method async_method test_list_repos_via_mcp_dispatcher L1120–1135
~ tests/test_mcp_write_tools.py .py 5 symbols added, 1 symbol modified
+ test_update_repo_description method async_method test_update_repo_description L1970–1982
+ test_update_repo_forbidden_for_non_owner method async_method test_update_repo_forbidden_for_non_owner L1998–2010
+ test_update_repo_not_found method async_method test_update_repo_not_found L2026–2035
+ test_update_repo_requires_auth method async_method test_update_repo_requires_auth L2012–2024
+ test_update_repo_visibility method async_method test_update_repo_visibility L1984–1996
← Older Oldest on feat/repo-crud-completeness
All commits
Newer → Latest on feat/repo-crud-completeness

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:b528411327019cd73c5137341a0812f3f71b50d4260daf5849af0144f347a7ee --body "your comment"