Skip to main content

agentskills-mcp-server

PyPI Python 3.12 | 3.13 License: MIT

MCP server integration for the Agent Skills SDK - expose a skill registry as an MCP server.

Creates a Model Context Protocol server from a SkillRegistry, exposing skills as MCP tools and resources. Works with any MCP-compatible client (Claude Desktop, VS Code, custom clients, etc.).

Installation

pip install agentskills-mcp-server

With provider extras:

pip install agentskills-mcp-server[fs]    # filesystem provider
pip install agentskills-mcp-server[http]  # HTTP provider

With Agent Framework integration:

pip install agentskills-mcp-server[agentframework]  # MCP context provider for Agent Framework

Requires Python 3.12 or newer. Installs agentskills-core, mcp, and pydantic as dependencies.

Quick Start (CLI)

Create a server.json config file:

{
    "name": "My Skills Server",
    "skills": [
        {
            "id": "incident-response",
            "provider": "fs",
            "options": {"root": "./skills"}
        }
    ]
}

Start the server:

python -m agentskills_mcp_server --config server.json

With Streamable HTTP transport:

python -m agentskills_mcp_server --config server.json --transport streamable-http

The server listens on http://127.0.0.1:8000/mcp.

MCP Client Integration

Any MCP-compatible client (Claude Desktop, VS Code, etc.) can connect to the server.

Stdio (local):

{
    "command": "python",
    "args": ["-m", "agentskills_mcp_server", "--config", "server.json"]
}

Streamable HTTP (remote):

{
    "url": "http://127.0.0.1:8000/mcp"
}

Config Reference

The server.json file supports the following structure:

Field Type Required Description
name str Yes Display name shown to MCP clients
instructions str No Server-level instructions sent during handshake
skills list Yes One or more skill definitions (see below)

Each skill entry:

Field Type Required Description
id str Yes Skill identifier
provider str Yes Provider type: "fs" or "http"
options dict No Provider-specific options

Provider options:

  • fs: root (path to skills directory, default ".")
  • http: base_url (required), headers (optional), params (optional query string parameters)

Only "fs" and "http" are supported as provider types.

Environment Variable Substitution

String values in the config file may contain ${VAR} placeholders that are resolved from environment variables at load time:

{
    "name": "My Skills Server",
    "skills": [
        {
            "id": "cloud-runbooks",
            "provider": "http",
            "options": {
                "base_url": "https://cdn.example.com/skills",
                "headers": { "Authorization": "Bearer ${API_TOKEN}" },
                "params": { "sig": "${SAS_TOKEN}" }
            }
        }
    ]
}

Unset variables resolve to an empty string and a warning is logged.

Programmatic Usage

For custom providers or advanced setups, use the Python API directly:

from agentskills_core import SkillRegistry
from agentskills_mcp_server import create_mcp_server

registry = SkillRegistry()
await registry.register("incident-response", my_custom_provider)  # any SkillProvider

server = create_mcp_server(registry, name="My Skills Server")
server.run()  # stdio by default

Agent Framework Context Provider

If you're using Microsoft Agent Framework, AgentSkillsMcpContextProvider bridges an MCP session into the Agent Framework lifecycle. It reads the skills catalog and usage-instruction resources from the MCP server and injects them as session instructions on every agent.run() call.

Note: This adapter only injects instructions, not tools. Agent Framework's MCP tool classes (MCPStdioTool, MCPStreamableHttpTool, etc.) handle tool registration natively.

pip install agentskills-mcp-server[agentframework]
from agent_framework import Agent, MCPStdioTool
from agentskills_mcp_server import AgentSkillsMcpContextProvider

mcp_skills = MCPStdioTool(
    name="skills",
    command="python",
    args=["-m", "agentskills_mcp_server", "--config", "server.json"],
)

async with mcp_skills:
    skills_context = AgentSkillsMcpContextProvider(
        session=mcp_skills.session,
    )
    agent = Agent(
        client=client,  # any Agent Framework chat client
        name="SREAssistant",
        instructions="You are an SRE assistant.",
        tools=mcp_skills,
        context_providers=[skills_context],
    )
    response = await agent.run("What severity is a full DB outage?")

See examples/agent-framework/ for full working demos including client setup.

Parameter Default Description
session (required) An MCP ClientSession, typically from mcp_tool.session
skills_instruction_prompt Built-in template Custom prompt template. Must contain {skills_catalog} and {tools_usage_instructions} placeholders.
skills_catalog_format "xml" Skills catalog format — "xml" or "markdown".
source_id "agentskills_mcp" Unique identifier for this provider instance.

Tools

The server exposes tools that let the LLM agent access skill content:

Tool Parameters Description
get_skill_metadata skill_id Read frontmatter (name, description, etc.)
get_skill_body skill_id Load full skill instructions
list_skill_resources skill_id List bundled references, scripts and assets
get_skill_reference skill_id, name Read a reference document
get_skill_script skill_id, name Read a script
get_skill_asset skill_id, name Read an asset

list_skill_resources returns a JSON object keyed by resource kind. Not every backend can enumerate resources — a plain static HTTP host cannot. Rather than surfacing an exception, the tool returns {"supported": false, "note": "..."} in that case: "this cannot be listed" is something the model can act on by falling back to the names in the skill body, not an error worth retrying.

Resources

The server provides resources for system-prompt context:

URI Description
skills://catalog/xml XML catalog of all registered skills
skills://catalog/markdown Markdown catalog of all registered skills
skills://tools-usage-instructions Workflow instructions for using the tools
skills://{skill_id}/resources Resource listing for a single skill

The MCP client reads these resources and injects them into the system prompt, giving the agent both what skills exist and how to interact with them.

API

AgentSkillsMcpContextProvider(session, *, skills_instruction_prompt=None, skills_catalog_format="xml", source_id=None)

A ContextProvider that reads the skills catalog and tools-usage-instructions from an MCP session and injects them as session instructions via before_run(). Requires the [agentframework] extra.

create_mcp_server(registry, *, name, instructions=None, max_inline_binary_bytes=65536) -> FastMCP

Parameter Type Description
registry SkillRegistry The registry whose skills are exposed
name str Display name for the MCP server (required)
instructions str | None Optional server-level instructions sent to clients
max_inline_binary_bytes int Size ceiling for inlining binary resources as base64

Returns a configured FastMCP instance ready for server.run().

Supported transport modes: stdio (default), streamable-http.

Binary Resources

Skill resources may be arbitrary files. Valid UTF-8 is returned as-is; anything else is returned as a JSON envelope, so a binary payload is never silently mangled into replacement characters:

{
  "name": "architecture.png",
  "media_type": "image/png",
  "size_bytes": 20481,
  "encoding": "base64",
  "content": "iVBORw0KGgo..."
}

Base64 costs roughly 1.37 characters per byte, so binaries above 64 KiB are described rather than inlined - "encoding": "none" plus a note explaining the omission. Adjust the ceiling with create_mcp_server(..., max_inline_binary_bytes=256 * 1024).

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentskills_mcp_server-0.3.0.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentskills_mcp_server-0.3.0-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file agentskills_mcp_server-0.3.0.tar.gz.

File metadata

  • Download URL: agentskills_mcp_server-0.3.0.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for agentskills_mcp_server-0.3.0.tar.gz
Algorithm Hash digest
SHA256 03aae93a20578254f5805e07ba292e81d476d4c4a7194f17d290d10cfea65ec7
MD5 7d35ae3b4665b804ea87e22bdfcd2932
BLAKE2b-256 e26179e36a8b9a6f88ee0949831f1f89c24b0d32e1c91e1f5c0dbe2f8b2ce36c

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentskills_mcp_server-0.3.0.tar.gz:

Publisher: publish.yml on pratikxpanda/agentskills-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agentskills_mcp_server-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for agentskills_mcp_server-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 828353e8666581a821709c4f502ce626f7b94cc6f16b7cd5881be9fc3c52a0a8
MD5 e7760e23c791942b1b8238042b05f40a
BLAKE2b-256 f5b379f2fe6c16fb66802da013ff0c14de7962b4c460220f46b6e6eba4b55a79

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentskills_mcp_server-0.3.0-py3-none-any.whl:

Publisher: publish.yml on pratikxpanda/agentskills-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page