Skip to main content
Glama
zouyingcao

AgentSkills MCP

by zouyingcao

AgentSkills MCP: Bringing Anthropic's Agent Skills to Any MCP-compatible Agent

📖 Project Overview

Agent Skills is a new function recently introduced by Anthropic. By packaging specialized skills into modular resources, it allows Claude to transform on demand into a “tailored expert” suited to any scenario. AgentSkills MCP, built on the FlowLLM framework, unlocks Claude’s proprietary Agent Skills for any MCP-compatible agent. It implements the Progressive Disclosure architecture proposed in Anthropic’s official Agent Skills engineering blog, enabling agents to load necessary skills as needed, thereby efficiently utilizing limited context windows.

💡 Why Choose AgentSkills MCP?

  • Zero-Code Configuration: one-command install (pip install mcp-agentskills)

  • Out-of-the-Box: uses official Skill format and fully compatible with Anthropic’s Agent Skills

  • MCP Support: multiple transports (stdio/SSE/HTTP), works with any MCP-compatible agent

  • Flexible Skill Path: custom skill directories with automatic detection, parsing, and loading

Related MCP server: Finance MCP

🔥 Latest Updates

  • [2025-12] 🎉 Released mcp-agentskills v0.1.1

🚀 Quick Start

Installation

Install AgentSkills MCP with pip:

pip install mcp-agentskills

Or with uv:

uv pip install mcp-agentskills
git clone https://github.com/zouyingcao/agentskills-mcp.git
cd agentskills-mcp

conda create -n agentskills-mcp python==3.10
conda activate agentskills-mcp
pip install -e .

Load Skills

  1. Create a directory to store Skills, like:

mkdir skills
  1. Clone from open-source GitHub repositories, e.g.,

https://github.com/anthropics/skills
https://github.com/ComposioHQ/awesome-claude-skills
  1. Add the collected Skills into the directory created in step 1. Each Skill is a folder containing a SKILL.md file.


Run

{
  "mcpServers": {
    "agentskills-mcp": {
      "command": "uvx",
      "args": [
        "agentskills-mcp",
        "config=default",
        "mcp.transport=stdio",
        "metadata.skill_dir=\"./skills\""
      ],
      "env": {
        "FLOW_LLM_API_KEY": "xxx",
        "FLOW_LLM_BASE_URL": "https://dashscope.aliyuncs.com/compatible-mode/v1"
      }
    }
  }
}

- Step 1: Configure Environment Variables

Copy example.env to .env and fill in your API key:

cp example.env .env
# Edit the .env file and fill in your API key

- Step 2: Start the Server

Start the AgentSkills MCP server with SSE transport:

agentskills-mcp \
  config=default \
  mcp.transport=sse \
  mcp.host=0.0.0.0 \
  mcp.port=8001 \
  metadata.skill_dir="./skills"

The service will be available at: http://0.0.0.0:8001/sse

- Step 3: Connect from MCP Client

  • Add this configuration to your MCP client (Cursor, Gemini Code, Cline, etc.) to connect to the remote SSE server:

{
  "mcpServers": {
    "agentskills-mcp": {
      "type": "sse",
      "url": "http://0.0.0.0:8001/sse"
    }
  }
}
  • You can also use the FastMCP Python client to directly access the server:

import asyncio
from fastmcp import Client


async def main():
    async with Client("http://0.0.0.0:8001/sse") as client:
        tools = await client.list_tools()
        for tool in tools:
            print(tool)

        result = await client.call_tool(
            name="load_skill",
            arguments={
              "skill_name"="pdf"
            }
        )
        print(result)


asyncio.run(main())

One-Command Test

python tests/run_project_sse.py <path/to/skills>
or
python tests/run_project_http.py <path/to/skills>

Demo

After starting the AgentSkills MCP server with the SSE transport, you can run the demo:

# Enable Agent Skills for the Qwen model.
# Since Qwen supports function calling, you can implement Agent Skills by passing the MCP tools registered by the AgentSkills MCP service to the tools parameter.
cd tests
python run_skill_agent.py

🔧 MCP Tools

This service provides four tools to support Agent Skills:

  • load_skill_metadata_op — Loads the names and descriptions of all Skills into the agent context at startup (always called)

  • load_skill_op — When a specific skill is needed, loads the SKILL.md content by skill name (invoked when triggering the Skill)

  • read_reference_file_op — Reads specific files from a skill, such as scripts or reference documents (on demand)

  • run_shell_command_op — Executes shell commands to run executable scripts included in the skill (on demand)

For detailed parameters and usage examples, see the documentation.

⚙️ Server Configuration Parameters

Parameter

Description

Example

config

Configuration files to load (comma-separated). Default: default (core workflow)

config=default

mcp.transport

Transport mode: stdio (stdin/stdout, good for local), sse (Server-Sent Events, good for online apps), http (RESTful, good for lightweight remote calls)

mcp.transport=stdio

mcp.host

Host address (for sse/http transport only)

mcp.host=0.0.0.0

mcp.port

Port number (for sse/http transport only)

mcp.port=8001

metadata.skill_dir

Skills Directory (required)

metadata.skill_dir=./skills

For the full set of available options and defaults, refer to default.yaml.

Environment Variables

Variable Name

Required

Description

FLOW_LLM_API_KEY

✅ Yes

API key for OpenAI-compatible LLM Service

FLOW_LLM_BASE_URL

✅ Yes

Base URL for OpenAI-compatible LLM Service


🤝 Contributing

We welcome community contributions! To get started:

  1. Install the package in development mode:

pip install -e .
  1. Install pre-commit hooks:

pip install pre-commit
pre-commit run --all-files
  1. Submit a pull request with your changes.


📚 Learn More

⚖️ License

This project is licensed under the Apache License 2.0 — see LICENSE for details.


📈 Star History

Star History Chart

Available Tools

4 tools
load_skillC

Load one skill's instructions from the SKILL.md.

ParametersJSON Schema
NameRequiredDescriptionDefault
skill_nameYesskill name

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the tool loads instructions but doesn't disclose behavioral traits like error handling (e.g., what happens if the skill doesn't exist), file format expectations, or whether it's a read-only operation. This leaves significant gaps in understanding how the tool behaves beyond its basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with zero waste, efficiently conveying the core action and resource. It is appropriately sized and front-loaded, making it easy to understand at a glance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the loaded instructions look like (e.g., text content, structure), error scenarios, or dependencies. For a tool that likely returns instructional data, more context is needed to guide effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the single parameter 'skill_name' documented as 'skill name'. The description adds no additional meaning beyond this, such as format constraints or examples. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Load') and resource ('one skill's instructions from the SKILL.md'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'load_skill_metadata' or 'read_reference_file', which likely handle related but different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'load_skill_metadata' (which might load metadata instead of instructions) or 'read_reference_file' (which might read other files). The description implies usage for loading skill instructions but lacks explicit context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

load_skill_metadataB

Load metadata (name and description) for all available skills from the skills directory.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states what the tool does but doesn't disclose behavioral traits like whether this is a read-only operation, whether it requires specific permissions, what happens if the skills directory is empty, or what format the metadata is returned in. For a tool with zero annotation coverage, this is inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the purpose clearly with no wasted words. It's appropriately sized for a simple tool and front-loaded with the essential information. Every part of the sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no annotations, no output schema, and the description lacks behavioral details, it's incomplete. The agent knows what the tool does but not how it behaves (e.g., read-only vs. mutation, error handling, return format). For a tool that likely returns data, the absence of output schema or description of return values is a significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100% (though trivial since there are no parameters). The description doesn't need to add parameter semantics, so it meets the baseline of 4 for zero-parameter tools. No additional parameter context is required or provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Load metadata') and resource ('all available skills from the skills directory'), specifying what fields are included ('name and description'). It distinguishes from 'load_skill' (which likely loads skill content rather than metadata) but doesn't explicitly differentiate from 'read_reference_file' or 'run_shell_command'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. While the description implies it's for getting skill metadata, there's no mention of when to use this versus 'load_skill' (which might load the skill itself) or other siblings. The agent must infer usage from tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_reference_fileC

Read a reference file from a skill (e.g., forms.md, reference.md, ooxml.md)

ParametersJSON Schema
NameRequiredDescriptionDefault
skill_nameYesskill name
file_nameYesreference file name or file path

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the tool reads files but doesn't disclose behavioral traits such as error handling (e.g., what happens if the file doesn't exist), permissions required, rate limits, or output format. This leaves significant gaps for a tool that interacts with file systems.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words. It front-loads the core purpose and includes helpful examples, making it easy to parse quickly. Every element earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., file content, error messages) or address potential complexities like file paths or skill dependencies. For a file-reading tool, this lack of behavioral and output context is a significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters ('skill_name' and 'file_name'). The description adds minimal value by implying the file is from a skill context and providing examples (e.g., forms.md), but doesn't elaborate on parameter semantics beyond what the schema provides, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Read') and resource ('a reference file from a skill'), with examples provided. It distinguishes from sibling tools like 'load_skill' and 'load_skill_metadata' by focusing specifically on reading reference files rather than loading skills or metadata. However, it doesn't explicitly differentiate from 'run_shell_command', which might also read files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'load_skill' or 'run_shell_command'. It mentions examples of reference files (e.g., forms.md) but doesn't specify scenarios or prerequisites for usage, leaving the agent to infer context from tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_shell_commandC

run shell command in a subprocess. Here you need to fill in skill_name. This skill_name parameter allows you to navigate directly to the folder corresponding to skill_name, making it more convenient to use the scripts within that folder to execute commands. If you want to know the exact path, you can use pwd to get the absolute path.

ParametersJSON Schema
NameRequiredDescriptionDefault
skill_nameYesskill name
commandYesshell command

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions running commands in a subprocess and navigating folders, but fails to disclose critical behavioral traits such as security implications, error handling, output format, or execution environment. This leaves significant gaps for a tool that executes shell commands.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately concise but includes redundant advice (e.g., using 'pwd' to get the path) that may not be necessary. It is front-loaded with the main purpose, but the structure could be improved by eliminating less critical details to focus on core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of executing shell commands, no annotations, and no output schema, the description is incomplete. It lacks information on safety, permissions, error responses, and how results are returned, which are essential for proper tool usage in this context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds some context for 'skill_name' (navigating to a folder) but does not provide additional meaning beyond the schema, such as examples or constraints. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'run shell command in a subprocess,' which provides a clear verb+resource (run + shell command). However, it does not differentiate from sibling tools like 'load_skill' or 'read_reference_file,' leaving the specific role ambiguous. The purpose is clear but lacks sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions that 'skill_name' allows navigation to a folder for convenience, but it does not provide explicit guidance on when to use this tool versus alternatives. No context on prerequisites, exclusions, or comparisons to sibling tools is given, offering minimal usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.0.0
    • First observedload_skill
    • First observedload_skill_metadata
    • First observedread_reference_file
    • First observedrun_shell_command

TDQS

B3.2/5.0

Scored across 4 tools

Disambiguation4/5

The tools have mostly distinct purposes with clear boundaries: loading skill instructions, loading skill metadata, reading reference files, and running shell commands. However, there is some potential for confusion between load_skill and load_skill_metadata, as both involve loading skill-related data but target different aspects (full instructions vs. metadata).

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case throughout (load_skill, load_skill_metadata, read_reference_file, run_shell_command). The naming is predictable and readable without any deviations in style or convention.

Tool Count5/5

With 4 tools, the count is well-scoped for the server's purpose of managing agent skills. Each tool serves a distinct function (loading, reading, executing) that covers essential operations without being excessive or insufficient for the domain.

Completeness3/5

The tool set covers core operations like loading skills and running commands, but there are notable gaps. For example, there are no tools for creating, updating, or deleting skills, which limits full lifecycle management. The surface is functional for basic tasks but incomplete for comprehensive skill handling.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • -
    license
    B
    quality
    Not graded
    maintenance
    Enables LLMs to retrieve, analyze, and visualize stock prices and financial report data for quantitative trading research and investment analysis. Provides real-time and historical stock data, financial statement analysis, key metric calculations, and trading signal visualization.
    13
    -
  • A
    license
    C
    quality
    C
    maintenance
    Enables financial research and analysis through AI agents that combine web search, content crawling, entity extraction, and deep research workflows. Supports extracting stock/fund entities with security codes and conducting structured financial investigations.
    9
    25
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time quotes, fund flows, and corporate announcements for Chinese A-share stocks. It enables users to search for stocks, analyze financial indicators, and summarize quarterly reports through natural language.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides 11 MCP tools for querying A-share market data, financial reports, stock screening, hot topics, self-selected stocks, and LOF arbitrage using natural language, powered by East Money / Miaoxiang APIs.
    MIT