Skip to main content
Glama
Livus-AI
by Livus-AI

Skills MCP Server

License: MIT

A Model Context Protocol (MCP) server that enables AI agents to discover, load, and execute Agent Skills - organized folders of instructions, scripts, and resources that give agents additional capabilities.

Based on the Agent Skills specification.

What are Skills?

Skills are folders containing:

  • SKILL.md - Instructions and metadata (name, description)

  • scripts/ - Executable Python scripts

  • references/ - Additional documentation (loaded on demand)

  • assets/ - Static resources (templates, data files)

Skills use progressive disclosure to efficiently manage context:

  1. Level 1: Name + description always visible in the skill tool description

  2. Level 2: Full SKILL.md loaded when skill(name) is called

  3. Level 3: Scripts/references loaded when execute_skill_script() or get_skill_resource() is called

Related MCP server: AI Meta MCP Server

Features

  • Dynamic Skill Discovery: All skill names and descriptions are embedded in the skill tool description

  • Progressive Loading: Load skill instructions on demand

  • Script Execution: Run pre-built Python scripts from skills

  • Resource Access: Load reference docs and assets as needed

  • Agent Skills Compatible: Follows the open Agent Skills specification

Getting Started

Prerequisites

  • Python 3.10+

  • An MCP-compatible client (e.g., Manus, Claude Code, Cursor)

Installation

  1. Clone the repository:

    git clone https://github.com/Livus-AI/Skills-MCP.git
    cd Skills-MCP
  2. Install dependencies:

    pip install -e .
  3. Run the server:

    skills-mcp

Configuration

  • Skills Directory: By default, skills are stored in the skills/ directory. You can change this by setting the SKILLS_DIR environment variable.

MCP Tools

The server exposes 3 tools:

Tool

Description

skill(name)

Load a skill's full instructions. The tool description dynamically includes ALL skill names and descriptions.

execute_skill_script(skill_name, script_name, params)

Execute a Python script from a skill's scripts/ directory.

get_skill_resource(skill_name, resource_path)

Load a specific resource file (reference docs, assets).

How It Works

The skill tool description is dynamically generated to always include the name and description of every available skill. This means:

  1. Agents see all skills immediately - No need to call a "list" function

  2. One call to load - skill("name") loads full instructions

  3. Execute when ready - execute_skill_script() runs scripts

Example Workflow

# Agent reads skill tool description and sees:
# - hello-world: A simple example skill...
# - slack-message: Post messages to Slack...

# Step 1: Load the skill
skill("slack-message")
# Returns: full instructions, available scripts, resources

# Step 2: Execute a script
execute_skill_script("slack-message", "post.py", {"channel": "#general", "message": "Hello!"})
# Returns: script output

Creating a Skill

See SKILL_CREATION.md for the complete guide.

Quick Start

  1. Create the directory structure:

skills/
└── my-skill/
    ├── SKILL.md              # Required: Instructions + metadata
    ├── scripts/              # Optional: Executable scripts
    │   └── main.py
    ├── references/           # Optional: Additional docs
    │   └── api.md
    └── assets/               # Optional: Static resources
        └── template.json
  1. Create SKILL.md with frontmatter:

---
name: my-skill
description: What this skill does and when to use it. Include keywords that help agents identify relevant tasks.
license: MIT
metadata:
  author: your-name
  version: "1.0"
---

# My Skill

## Overview
Brief description of what this skill helps accomplish.

## Available Scripts
- `scripts/main.py` - Primary functionality

## How to Use
Step-by-step instructions...
  1. Create scripts with the standard format:

import sys
import json

def run(params: dict = None) -> dict:
    params = params or {}
    # Your logic here
    return {"status": "success", "result": "..."}

if __name__ == "__main__":
    params = {}
    if len(sys.argv) > 1:
        params = json.loads(sys.argv[1])
    result = run(params)
    print(json.dumps(result))

Example Skills

This repository includes example skills in the skills/ directory:

  1. hello-world - A simple example demonstrating the skill format

  2. slack-message - Post messages to Slack via webhook

Roadmap

  • create_skill tool - Create new skills programmatically

  • execute_code tool - Execute arbitrary Python code with e2b sandboxing

  • Skill validation and linting

  • Skill versioning and updates

Contributing

Contributions are welcome! Please feel free to submit a pull request or open an issue.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Available Tools

6 tools
create_workflowA
Create a new Python workflow script.

Args:
    name: The name of the workflow (will be used as filename, e.g., "meeting_review_to_slack")
    description: A description of what the workflow does
    code: The Python code for the workflow. Must include a `run(params: dict = None) -> dict` function.

Returns:
    dict: Status of the operation with the file path

Example code structure:
    def run(params: dict = None) -> dict:
        params = params or {}
        # Your workflow logic here
        return {"status": "success", "result": "..."}
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
descriptionYes
codeYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool creates a file and returns a status with a file path, adding useful context beyond basic functionality. However, it doesn't cover critical behavioral traits like error handling, authentication needs, or rate limits, leaving gaps for a mutation tool.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded, starting with the core purpose followed by detailed parameter explanations and an example. While efficient, the example code could be slightly trimmed, but overall, each sentence adds value without unnecessary fluff.

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

Completeness3/5

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

Given the tool's complexity as a mutation tool with no annotations and no output schema, the description is moderately complete. It covers parameters well and provides an example, but lacks details on return values beyond a vague 'status', error cases, or integration with sibling tools, leaving room for improvement.

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

Parameters5/5

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

The description adds significant meaning beyond the input schema, which has 0% coverage. It explains that 'name' is used as a filename with an example, 'description' clarifies its purpose, and 'code' specifies required Python structure including a 'run' function, effectively documenting all three parameters where the schema does not.

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 verb 'Create' and the resource 'new Python workflow script', making the purpose evident. However, it doesn't explicitly differentiate from siblings like 'update_workflow' or 'read_workflow', which would require mentioning this is for initial creation only.

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 like 'update_workflow' or 'execute_workflow'. The description implies usage for creating workflows but lacks explicit context or prerequisites, such as whether it overwrites existing workflows or requires specific permissions.

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

delete_workflowC
Delete a workflow script.

Args:
    name: The name of the workflow to delete

Returns:
    dict: Status of the operation
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool deletes a workflow, implying a destructive mutation, but doesn't specify permissions needed, whether deletion is permanent, error handling, or rate limits. The return value is vaguely described as 'Status of the operation' without detailing success/failure indicators.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded with the core purpose in the first sentence. The Args and Returns sections are structured but could be more integrated. No redundant information is present, though the return description is vague.

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's destructive nature, no annotations, and no output schema, the description is incomplete. It lacks critical context such as confirmation prompts, side effects (e.g., related data deletion), error scenarios, or output structure details. For a mutation tool with zero annotation coverage, this leaves significant gaps for safe agent 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?

Schema description coverage is 0%, so the description must compensate. It adds that the 'name' parameter refers to 'The name of the workflow to delete', providing basic semantics beyond the schema's title 'Name'. However, it doesn't clarify format constraints (e.g., case-sensitivity, allowed characters) or examples, leaving gaps in parameter understanding.

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 verb ('Delete') and resource ('a workflow script'), making the purpose unambiguous. It distinguishes this tool from siblings like 'create_workflow' or 'update_workflow' by specifying deletion. However, it doesn't explicitly differentiate from other destructive operations beyond naming.

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. The description doesn't mention prerequisites (e.g., workflow must exist), consequences (e.g., irreversible deletion), or when to choose deletion over other operations like updating. It relies solely on the tool name for context.

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

execute_workflowB
Execute a workflow script by name.

Args:
    name: The name of the workflow to execute
    params: Optional dictionary of parameters to pass to the workflow's run() function

Returns:
    dict: The result of the workflow execution
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
paramsNo

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool executes a workflow and returns a result, but lacks details on permissions needed, side effects (e.g., whether execution is logged or affects system state), error handling, or performance implications. This is inadequate for a mutation tool with zero annotation coverage.

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 front-loaded with the core purpose in the first sentence, followed by structured Arg and Return sections. Each sentence earns its place by defining parameters and output without redundancy. It's appropriately sized and well-organized for clarity.

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 workflows, lack of annotations, no output schema, and 2 parameters with nested objects, the description is incomplete. It doesn't explain what a 'workflow' entails, potential risks, authentication needs, or the format of the returned dict. More context is needed for safe and effective use.

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 description adds meaningful context beyond the input schema, which has 0% description coverage. It explains that 'name' identifies the workflow to execute and 'params' is an optional dictionary passed to the workflow's run() function, clarifying usage and intent. This compensates well for the schema's lack of descriptions, though it doesn't detail param structure or constraints.

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 verb 'execute' and resource 'workflow script by name', making the purpose evident. It distinguishes from siblings like create_workflow or list_workflows by focusing on execution rather than CRUD operations. However, it doesn't explicitly differentiate from potential alternatives like 'run_workflow' if they existed, keeping it at 4 instead of 5.

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. It doesn't mention prerequisites (e.g., workflows must exist), exclusions, or comparisons to sibling tools like update_workflow or read_workflow. Usage is implied through the action but lacks explicit context for selection.

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

list_workflowsB
List all available workflow scripts.

Returns:
    dict: List of workflows with their metadata
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/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 the tool lists workflows and returns metadata, but lacks details on behavioral traits like pagination, sorting, filtering, error conditions, or performance characteristics. This is a significant gap for a tool with no annotation coverage.

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 appropriately sized and front-loaded, with the first sentence stating the core purpose and the second clarifying the return type. Both sentences earn their place by providing essential information without waste.

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

Completeness3/5

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

Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and return type, but lacks completeness for behavioral aspects like how the list is formatted or any limitations. This meets the minimum viable threshold with clear gaps.

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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details beyond the schema, but since there are no parameters, this is acceptable. Baseline is 4 as per rules for 0 parameters.

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 verb ('List') and resource ('workflow scripts'), specifying 'all available' to indicate scope. It distinguishes from siblings like 'execute_workflow' or 'read_workflow' by focusing on enumeration rather than execution or detailed viewing, though it doesn't explicitly differentiate from other list-like operations if they existed.

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. It doesn't mention prerequisites, such as needing workflows to exist, or compare it to siblings like 'read_workflow' for detailed metadata. Usage is implied by the name and purpose but not explicitly stated.

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

read_workflowC
Read the source code of a workflow script.

Args:
    name: The name of the workflow to read

Returns:
    dict: The workflow source code and metadata
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

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 of behavioral disclosure. It states the tool reads source code and metadata, implying a read-only operation, but doesn't disclose key traits such as whether it requires authentication, has rate limits, what happens if the workflow doesn't exist (e.g., error handling), or the format of returned metadata. For a read tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded, starting with the core purpose. The use of sections for 'Args' and 'Returns' adds structure, but the 'Returns' section could be more detailed given no output schema. There's minimal waste, though it could be slightly more informative without losing conciseness.

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's moderate complexity (reading source code with metadata), no annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't explain the return value format beyond 'dict: The workflow source code and metadata,' leaving ambiguity. For a tool that likely returns structured data, more context is needed to be fully helpful to an AI agent.

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 description adds meaning beyond the input schema by specifying that the 'name' parameter refers to 'The name of the workflow to read,' which clarifies its purpose. However, with 1 parameter and 0% schema description coverage, the schema provides no details, and the description doesn't fully compensate—it lacks information on name format, constraints, or examples. The baseline is adjusted due to low coverage, but the description offers some semantic value.

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 tool's purpose as 'Read the source code of a workflow script,' which is a specific verb (read) and resource (workflow script). It distinguishes from siblings like create_workflow, delete_workflow, execute_workflow, list_workflows, and update_workflow by focusing on reading source code, but doesn't explicitly differentiate from list_workflows which might also involve reading metadata. The description avoids tautology and is not misleading.

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. It doesn't mention when to choose read_workflow over list_workflows (e.g., for detailed source vs. summary list) or other siblings, nor does it specify prerequisites like needing an existing workflow name. Usage is implied by the purpose 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.

update_workflowB
Update an existing workflow script.

Args:
    name: The name of the workflow to update
    description: New description (optional, keeps existing if not provided)
    code: New Python code (optional, keeps existing if not provided)

Returns:
    dict: Status of the operation
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
descriptionNo
codeNo

TDQS

B3.2/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 of behavioral disclosure. It mentions that updates are partial (optional parameters keep existing values if not provided), which is useful. However, it lacks critical details: it doesn't specify if this requires specific permissions, whether changes are reversible, what happens on errors, or any rate limits. For a mutation tool with zero annotation coverage, this is a significant gap.

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 well-structured and concise. It starts with a clear purpose statement, followed by bullet points for arguments and returns, with no wasted words. Every sentence adds value, and it's appropriately sized for the tool's complexity.

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

Completeness3/5

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

Given the tool's moderate complexity (3 parameters, mutation operation), no annotations, and no output schema, the description is partially complete. It covers the basic operation and parameters but lacks behavioral details like error handling, permissions, or return value specifics. It's adequate as a minimum but has clear gaps for safe and effective use.

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 description adds meaningful context beyond the input schema. The schema has 0% description coverage, but the description explains each parameter: 'name' identifies the workflow, 'description' is optional and retains existing if omitted, and 'code' is optional Python code that replaces existing if provided. This compensates well for the low schema coverage, though it doesn't detail format constraints (e.g., code syntax).

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 tool's purpose: 'Update an existing workflow script.' It specifies the verb ('update') and resource ('workflow script'), making the action clear. However, it doesn't explicitly differentiate from sibling tools like 'create_workflow' or 'modify_workflow' if they existed, though the distinction is implied by 'existing'.

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. It doesn't mention prerequisites (e.g., workflow must exist), compare to siblings like 'create_workflow' or 'delete_workflow', or specify contexts where it's appropriate. Usage is implied by the action but not explicitly stated.

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. Dates show when Glama detected each change.

  1. 6 tool updatesv1.0.0
    • First observedcreate_workflow
    • First observeddelete_workflow
    • First observedexecute_workflow
    • First observedlist_workflows
    • First observedread_workflow
    • First observedupdate_workflow

TDQS

A3.6/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: create, delete, execute, list, read, and update workflows. The actions are mutually exclusive and target the same resource (workflows) with specific operations, making misselection unlikely.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with 'workflow' as the noun (e.g., create_workflow, delete_workflow). The naming is uniform and predictable, using snake_case throughout without any deviations.

Tool Count5/5

With 6 tools, the server is well-scoped for managing workflows, covering essential CRUD operations (create, read, update, delete) plus listing and execution. Each tool earns its place without being excessive or insufficient for the domain.

Completeness5/5

The tool set provides complete lifecycle coverage for workflows: creation, reading, updating, deletion, listing, and execution. There are no obvious gaps, and agents can perform all expected operations without dead ends in this domain.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Livus-AI/Skills-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server