Skip to content

Add MCP skill registry install support#815

Draft
evalstate wants to merge 4 commits into
mainfrom
feat/sep2640-mcp-skill-registries
Draft

Add MCP skill registry install support#815
evalstate wants to merge 4 commits into
mainfrom
feat/sep2640-mcp-skill-registries

Conversation

@evalstate
Copy link
Copy Markdown
Owner

Summary

  • implement the first SEP-2640 Skills over MCP slice as MCP-server-backed skill registries for installation
  • add /skills registry selection, /skills add support, MCP provenance metadata, and MCP status/autocomplete updates
  • add docs page and regenerated tmux/asciinema demo showing registry selection and install

Scope

This PR intentionally does not expose MCP-served skill resources directly to the model. That deeper runtime work is split into the follow-up PR.

Tests

  • uv run pytest tests/unit/fast_agent/skills/test_mcp_registry.py tests/unit/fast_agent/commands/test_skills_mcp_registry_handlers.py tests/unit/fast_agent/commands/test_command_discovery.py tests/unit/fast_agent/skills/test_command_support.py tests/unit/fast_agent/commands/test_mcp_runtime_handlers.py tests/unit/fast_agent/ui/test_agent_completer.py tests/unit/fast_agent/ui/test_agent_info.py tests/unit/fast_agent/ui/test_mcp_display.py -q
  • uv run scripts/lint.py
  • uv run scripts/typecheck.py
  • uv run scripts/docs.py cast-check

Calfskin wallet

I would not use it; I would prefer a non-animal alternative.

@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented May 29, 2026

Deploying fast-agent with  Cloudflare Pages  Cloudflare Pages

Latest commit: fb7ecba
Status: ✅  Deploy successful!
Preview URL: https://690b8426.fast-agent.pages.dev
Branch Preview URL: https://feat-sep2640-mcp-skill-regis.fast-agent.pages.dev

View logs

@evalstate evalstate force-pushed the feat/sep2640-mcp-skill-registries branch from 840e486 to 37284da Compare May 29, 2026 23:30
Implements the first SEP-2640 Skills over MCP slice by treating capable MCP servers as install registries for skill-md entries. Adds registry discovery, installation with MCP provenance, slash-command selection, MCP status display, docs, and the tmux/asciinema demo.

Co-authored-by: olaservo <olahungerford@gmail.com>
@evalstate evalstate force-pushed the feat/sep2640-mcp-skill-registries branch from 37284da to 023b657 Compare May 29, 2026 23:37
@evalstate evalstate force-pushed the feat/sep2640-mcp-skill-registries branch from f3b10e1 to ce5d80f Compare May 29, 2026 23:48
Reset skills-repo to the commit used by main so Cloudflare can clone submodules during the docs build.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds initial SEP-2640 “Skills over MCP” support by treating connected MCP servers as installable skill registries (without exposing MCP-served skill resources directly to the model at runtime yet).

Changes:

  • Implement MCP-backed skill registry discovery + installation flow (/skills registry, /skills add) with MCP provenance metadata.
  • Update TUI surfaces (MCP status display, agent info, autocompletion) to reflect MCP skills/registries.
  • Add documentation + demo assets for “Skills over MCP”.

Reviewed changes

Copilot reviewed 23 out of 24 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/unit/fast_agent/ui/test_mcp_display.py Adds coverage asserting SEP-2640 hint placement in /mcp status output.
tests/unit/fast_agent/ui/test_agent_info.py New tests for MCP surface counting and child-agent summary ordering.
tests/unit/fast_agent/ui/test_agent_completer.py Adds tests for MCP registry completions in /skills registry.
tests/unit/fast_agent/skills/test_mcp_registry.py New tests for capability gating, registry scanning, and MCP install provenance.
tests/unit/fast_agent/commands/test_skills_mcp_registry_handlers.py New tests for listing/selecting MCP registries and browsing MCP skills.
tests/unit/fast_agent/commands/test_command_discovery.py Updates command usage text to mention mcp-server option.
src/fast_agent/ui/prompt/completer.py Adds MCP registry completion support for /skills registry.
src/fast_agent/ui/prompt/agent_info.py Refactors agent surface counts; uses MCP aggregator for MCP agents.
src/fast_agent/ui/mcp_display.py Adds “Sk” capability + a SEP-2640 hint line when MCP skills are enabled.
src/fast_agent/skills/provenance.py Extends skill provenance schema/formatting/parsing for MCP-installed skills.
src/fast_agent/skills/operations.py Treats MCP-sourced managed skills as non-comparable for updates.
src/fast_agent/skills/models.py Adds mcp to SkillSourceOrigin and MCP provenance fields.
src/fast_agent/skills/mcp_registry.py New MCP registry module: capability detection, index parsing, install.
src/fast_agent/skills/command_support.py Updates /skills usage help to mention MCP registry selection.
src/fast_agent/mcp/mcp_aggregator.py Exposes list_mcp_skill_registries() and records mcp_skills_enabled in status.
src/fast_agent/commands/handlers/skills.py Adds MCP-aware registry selection, marketplace listing, and install flow.
src/fast_agent/commands/handlers/mcp_runtime.py Extends attach/reconnect summaries to optionally show skill counts.
src/fast_agent/commands/command_catalog.py Updates usage string to include MCP server selection option.
scripts/docs_assets.py Adds a new terminal cast scenario and tweaks env cleanup for docs demos.
docs/zensical.toml Adds “Skills over MCP” doc page to MCP nav.
docs/social_cards/contact-sheet.html Updates social card sheet count + adds MCP skills card entry and adjusts xAI label.
docs/docs/mcp/skills-over-mcp.md New documentation page describing scope and usage.
docs/docs/assets/tui/skills-over-mcp.cast New asciinema cast demonstrating MCP registry selection and install.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 556 to +560
partial,
configured_urls=configured_urls,
display_formatter=format_marketplace_display_url,
)
yield from self._complete_mcp_skill_registries(partial, offset=len(configured_urls))
Comment on lines +140 to +151
async def list_mcp_skill_registries(
aggregator: McpSkillRegistryStatusClient, server_names: Iterable[str]
) -> list[McpSkillRegistry]:
registries: list[McpSkillRegistry] = []
for server_name in server_names:
server_version = await _server_version(aggregator, server_name)
registry = await scan_mcp_skill_registry(
aggregator, server_name, server_version=server_version
)
if registry is not None:
registries.append(registry)
return registries
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants