agentskills-mcp-server
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03aae93a20578254f5805e07ba292e81d476d4c4a7194f17d290d10cfea65ec7
|
|
| MD5 |
7d35ae3b4665b804ea87e22bdfcd2932
|
|
| BLAKE2b-256 |
e26179e36a8b9a6f88ee0949831f1f89c24b0d32e1c91e1f5c0dbe2f8b2ce36c
|
Provenance
The following attestation bundles were made for agentskills_mcp_server-0.3.0.tar.gz:
Publisher:
publish.yml on pratikxpanda/agentskills-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentskills_mcp_server-0.3.0.tar.gz -
Subject digest:
03aae93a20578254f5805e07ba292e81d476d4c4a7194f17d290d10cfea65ec7 - Sigstore transparency entry: 2298810745
- Sigstore integration time:
-
Permalink:
pratikxpanda/agentskills-sdk@8c402728312bf75b0a4457f4adf917cc18651a70 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/pratikxpanda
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8c402728312bf75b0a4457f4adf917cc18651a70 -
Trigger Event:
push
-
Statement type:
File details
Details for the file agentskills_mcp_server-0.3.0-py3-none-any.whl.
File metadata
- Download URL: agentskills_mcp_server-0.3.0-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
828353e8666581a821709c4f502ce626f7b94cc6f16b7cd5881be9fc3c52a0a8
|
|
| MD5 |
e7760e23c791942b1b8238042b05f40a
|
|
| BLAKE2b-256 |
f5b379f2fe6c16fb66802da013ff0c14de7962b4c460220f46b6e6eba4b55a79
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentskills_mcp_server-0.3.0-py3-none-any.whl -
Subject digest:
828353e8666581a821709c4f502ce626f7b94cc6f16b7cd5881be9fc3c52a0a8 - Sigstore transparency entry: 2298810798
- Sigstore integration time:
-
Permalink:
pratikxpanda/agentskills-sdk@8c402728312bf75b0a4457f4adf917cc18651a70 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/pratikxpanda
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8c402728312bf75b0a4457f4adf917cc18651a70 -
Trigger Event:
push
-
Statement type: