Workflows MCP Server
# Skills MCP Server
[](https://opensource.org/licenses/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](https://agentskills.io/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
## 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:**
```bash
git clone https://github.com/Livus-AI/Skills-MCP.git
cd Skills-MCP
```
2. **Install dependencies:**
```bash
pip install -e .
```
3. **Run the server:**
```bash
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](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
```
2. **Create SKILL.md with frontmatter:**
```yaml
---
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...
```
3. **Create scripts with the standard format:**
```python
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](LICENSE) file for details.
## Related
- [Agent Skills Specification](https://agentskills.io/specification)
- [Anthropic Skills Repository](https://github.com/anthropics/skills)
- [Model Context Protocol](https://modelcontextprotocol.io)
TDQS
Scored across 6 tools
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.
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.
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.
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.