[FEATURE] Auto-discover skills from MCP servers via skill:// resource protocol
Summary
When an MCP server exposes skills via the skill:// resource URI scheme (as implemented by FastMCP's SkillProvider), Claude Code should automatically discover and register them as native $skill-name / /skill-name skills — without requiring the user to copy SKILL.md to ~/.claude/skills/ locally.
Problem
Currently, skills in Claude Code are resolved only from local directories (~/.claude/skills/, .claude/skills/, --add-dir). MCP servers can expose skill resources via the skill:// protocol, and Claude Code can read them through ListMcpResourcesTool / ReadMcpResourceTool, but they are not registered as invocable $ / / skills.
This creates a gap for HTTP-transport MCP servers: there is no installation step on the client, so no post-install hook can copy the skill locally. The user must manually download and place the file — which defeats the purpose of a zero-install HTTP MCP connection.
Proposed behavior
- On MCP server connection, Claude Code calls
list_resources()and looks for resources matchingskill://<name>/SKILL.md. - For each discovered skill resource, Claude Code reads the content and parses the YAML frontmatter (
name,description). - The skill becomes available as
$<name>(inline) and/<name>(slash command), same as a local skill — with the MCP server name shown as the source. - If a local skill with the same name exists, local takes precedence (consistent with current priority: project > personal > plugin).
Use case
We run an internal documentation RAG service as an HTTP MCP server. It exposes a skill://fmk-docs/SKILL.md resource that describes how to search the knowledge base. Today, users must manually copy this file to ~/.claude/skills/fmk-docs/SKILL.md after connecting the MCP server — an unnecessary friction point.
Prior art
- FastMCP already standardizes the
skill://URI scheme viaSkillProvider - The
_manifestresource provides a file listing with SHA256 hashes, enabling cache invalidation - MCP prompts are already partially surfaced as commands — skills are a natural extension
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗