Skip to main content

title: agentskills-mcp-extension description: Native MCP Skills publication and origin-preserving client helpers.

Publish and consume the official MCP Skills extension with immutable, lossless resources.

Native Skills Only

The native Skills API requires MCP SDK >=2.2,<3. It serves the official io.modelcontextprotocol/skills extension on protocol 2026-07-28 through skills/list, skills/get, and canonical skill:// resources. Clients on older protocol revisions see the same skill:// files as ordinary resources and cannot call the Skills methods. See the breaking-change guide.

Install

pip install "agentskills-mcp-extension[fs]"

The [http] extra adds the HTTP provider. Publisher verification needs agentskills-core[verification] and OpenTelemetry export needs agentskills-core[telemetry]. Use an isolated server environment when a host framework pins a different MCP SDK version.

Serve a Folder

Prepare skills/incident-response/SKILL.md with valid name and description frontmatter. The filesystem guide includes a complete sample skill. The Python example publishes that folder over stdio:

import asyncio
from pathlib import Path

from agentskills_core import Skill
from agentskills_fs import LocalFileSystemSkillProvider
from agentskills_mcp_extension import create_mcp_server

provider = LocalFileSystemSkillProvider(Path("./skills"))
server = asyncio.run(create_mcp_server([Skill("incident-response", provider)]))
server.run(transport="stdio")

create_mcp_server is async and accepts a SkillRegistry or a sequence of raw Skill handles. Raw handles avoid imposing registry-specific parsing restrictions before publication. Discovery is metadata-only, including for a single skill.

The factory captures complete immutable file sets before serving. It preserves original SKILL.md bytes, frontmatter, supporting directories, and binary files. Each manifest contains raw-byte SHA-256 digests and sizes. A file whose bytes are valid UTF-8 without NUL is read as text and every other file as blob. Both forms return the exact captured bytes. Programmatic servers support await server.refresh() and server.health(). Server-provided hashes establish consistency, not publisher identity or safety. Programmatic callers own provider cleanup and must keep providers open for refresh. Optional publication_policy verifies detached signatures, pins content, and applies reject/redact/annotate hooks before manifests are generated. See the trust and operability guide for publisher configuration, token limits, verified stale policy, telemetry, and authenticated remote HTTP deployment.

Consume Skills

Save the configuration example below as server.json and prepare its filesystem skill folder. Activate the environment where this package is installed so agentskills-mcp is on PATH. This example uses the official SDK to start a stdio subprocess, create a session, and close it when finished. McpSkillsClient wraps that session and leaves transport ownership with the host:

import asyncio
import os

from mcp import Client, StdioServerParameters

from agentskills_mcp_extension import McpSkillsClient


async def main() -> None:
  parameters = StdioServerParameters(
    command="agentskills-mcp",
    args=["--config", "server.json"],
    env={"PYTHONPATH": os.environ.get("PYTHONPATH", "")},
  )
  async with Client(parameters) as connection:
    client = McpSkillsClient(connection.session, origin="incident-runbooks")
    skills = await client.list_skills()
    if not skills:
      print("No skills published")
      return
    skill = await client.get_skill(skills[0].identity.uri)
    print(await client.read_resource(skill, skill.identity.uri))


asyncio.run(main())

The example forwards PYTHONPATH so a subprocess can find checkout-based packages. With the package installed in the selected Python environment, that env argument can be omitted.

References retain both the supplied origin identity and canonical skill:// URI. Reads verify the manifest's size and SHA-256 digest. The client does not implement SkillProvider or insert remote content into a SkillRegistry, since registration validates by reading bodies eagerly. It also keeps no shared response cache, so separate server origins remain isolated.

To compose two sources, keep both SDK Client connections open using the pattern above and pass them to this helper. The caller creates and closes the connections:

from mcp import Client

from agentskills_mcp_extension import McpSkillReference, McpSkillsCollection, McpSkillsClient


async def collect_skills(runbooks: Client, security: Client) -> list[McpSkillReference]:
    catalog = McpSkillsCollection([
        McpSkillsClient(runbooks.session, origin="incident-runbooks"),
        McpSkillsClient(security.session, origin="security-guides"),
    ])
    return await catalog.list_skills()

Identity remains (origin, URI). The collection does not rehost or forward content, which avoids loops and keeps approval and session state with the application.

Prompt Shortcut

Hosts that support MCP prompts can opt in to one user-invoked use-skill prompt. It requires the canonical skill:// URI and reads the current published snapshot when requested. It is disabled by default and does not grant tool permissions:

server = await create_mcp_server(skills, skill_prompt_shortcuts=True)

Set "skill_prompt_shortcuts": true in server config to enable the same prompt. The host remains responsible for prompt approval and whether the returned skill content is used.

Configuration

{
  "name": "Skills Server",
  "skills": [
    {"id": "incident-response", "provider": "fs", "options": {"root": "./skills"}}
  ]
}
agentskills-mcp --config server.json --check
agentskills-mcp --config server.json
agentskills-mcp --config server.json --transport streamable-http

The distribution installs the short agentskills-mcp command. The Python module entry point is equivalent when you need to select an interpreter explicitly:

python -m agentskills_mcp_extension --config server.json --check

JSON and YAML are supported. ${VAR} placeholders resolve from the environment. Unknown top-level keys are rejected. The CLI closes owned provider clients after capture, including on failure.

Field Default Meaning
name Required Server display name
skills Required, nonempty IDs, provider types, and constructor options
instructions null Optional server-level instructions
skill_paths {} Registry ID to canonical publication path
listed_skill_ids null Optional listing subset, not authorization
page_size 100 Maximum entries per discovery page
max_skills 128 Publication skill-count ceiling
max_total_bytes 67108864 Total captured source byte ceiling

Filesystem options include root and max_file_bytes. HTTP options include base_url, headers, params, file_manifest, resource_manifest, and max_response_bytes. HTTP native publication requires file_manifest: true and a public destination by default. Internal destinations require explicit allow_private_network: true. Redirects are always rejected. Configure require_tls, timeout, and retry limits as needed. Publication requires a complete per-skill file index. See the HTTP provider.

The extension enforces 512 files and 16 MiB per skill. Directory reads are not advertised. Nested skills require explicit publication and separate host approval. Listed subsets never restrict direct lookup of a published skill. Supply only skills authorized for the server audience.

The package-specific --check option verifies local construction, manifests, and provider readiness without listening. It does not certify transport, authentication, or host behavior.

Client Support and Boundaries

Tests exercise MCP 2.2.0 Client in-process, over stdio, and over real loopback Streamable HTTP. CI also checks mcpc 0.7.0 discovery, aliases, pagination, and exact resource bytes. Use SDK 2 Client for extension negotiation, not its older ClientSession compatibility API. Ordinary tools/resources connectivity does not establish Skills support.

Hosts own selection, manifest verification, origin visibility, per-skill consent, context injection, session tracking, image rendering, and execution policy. Resource reads never execute scripts or grant allowed-tools.

Production HTTP deployments must supply TLS, MCP authorization, audience isolation, and appropriate origin/host validation. Do not pass client bearer tokens to upstream providers. Local tests are not production deployment certification.

Benchmarks

The benchmark guide describes native discovery and progressive reads over bounded synthetic catalogs. It does not measure model quality or production network performance.

Metadata

Release files for agentskills-mcp-extension 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agentskills-mcp-extension 0.8.0
File Size Uploaded Provenance Actions
agentskills_mcp_extension-0.8.0.tar.gz 19.7 kB With provenance Details for agentskills_mcp_extension-0.8.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for agentskills-mcp-extension 0.8.0
File Interpreter ABI Platform Actions
agentskills_mcp_extension-0.8.0-py3-none-any.whl Python 3 none any Details for agentskills_mcp_extension-0.8.0-py3-none-any.whl

Total release size: 40.3 kB

Release files / agentskills_mcp_extension-0.8.0.tar.gz

Download URL agentskills_mcp_extension-0.8.0.tar.gz
Size 19.7 kB
Tags Source
SHA-256 checksum
How to use checksums
237adf88a7cc682f3355f45d38b745f9c98ae3e4ca1ca9a1618b5c2187a3351f
BLAKE2b-256 checksum
How to use checksums
3d405bcf98ac7ec902c92d54048b7be7768c9b526f397fb48c62381511b4f26c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / agentskills_mcp_extension-0.8.0-py3-none-any.whl

Download URL agentskills_mcp_extension-0.8.0-py3-none-any.whl
Size 20.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
71fe36623d959f74db517ddcc488a372c8882769a18b3bd11c71b9fdd3d42538
BLAKE2b-256 checksum
How to use checksums
940d2a42bb383fc5e0aedbcbbd57b7363ebf5422c10018233d0137b01e38c7b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Security for agentskills-mcp-extension 0.8.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for agentskills_mcp_extension-0.8.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.8.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page