Skip to content

[Feature] Expose enabled and available MCP toolsets from the default catalog #195

Description

@morluto

Motivation

GitContribute's small MCP catalogs are intentional, but the default catalog currently cannot explain whether a missing capability is unsupported or merely belongs to a disabled toolset. General routing instructions describe how to use the advertised tools; they do not expose the runtime version, selected toolsets, or other toolsets available in the installed build.

That ambiguity is especially visible with the default contribute registration: the source defines additional code, research, portfolio, and diagnostics catalogs, but a client cannot discover their availability from the active catalog alone. The current ownership map is visible in internal/mcpserver/catalog.go.

This complements #19 and #24. Those changes improve routing and initial discovery; this proposal makes the installed server's capability boundary inspectable without expanding the operational catalog.

Proposed Solution

Keep one compact, read-only capability description in the default catalog. This could be a tool such as system.get_capabilities or an MCP resource, depending on which form hosts expose most consistently.

It should report:

  • the installed GitContribute version;
  • enabled toolsets;
  • available but disabled toolsets;
  • a bounded summary of each toolset's side-effect classes, such as offline reads, network reads, local writes, Git-only writes, and process execution;
  • the exact configuration or restart action required to enable a disabled toolset.

The result should be deterministic and small. It should not expose all operational schemas, change toolsets at runtime, access the network, mutate local state, or execute a process.

Acceptance criteria:

  • The default contribute catalog can describe the installed build's enabled and disabled toolsets.
  • The response differentiates “disabled in this registration” from “not provided by this version.”
  • Enablement guidance matches the actual mcp serve --toolsets syntax.
  • Tests cover the default registration, a multi-toolset registration, and version reporting.

Alternatives Considered

  • Enable all toolsets by default. This removes the visibility problem at the cost of the small-catalog design.
  • Put a static map only in the generated skill. Static guidance cannot report the active registration or installed version and can drift from runtime configuration.
  • Infer capability from failed tool lookup. Absence is ambiguous and does not provide a corrective action.

Impact

This adds a small read-only MCP contract and related documentation/tests. It should not alter corpus schemas, GitHub mutations, network access, or the authority of existing tools.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions