OpenSkill
An MCP server that makes Anthropic Skills universally accessible across coding agents, enabling sandboxed execution of skills in Docker containers with skill management and MCP tools.
README
OpenSkill
Model Context Protocol (MCP) server that enables Anthropic Skills to work with any coding agent and client that supports MCP servers. Provides skill management and sandboxed execution capabilities.
Overview
OpenSkill makes Anthropic's Claude Code Skills universally accessible across the AI coding ecosystem. It provides a secure, sandboxed execution environment for skills using Docker containers, enabling any MCP-compatible AI assistant to execute skills safely with full isolation, volume mounting, and customizable Docker images.
Key Features
- Universal Compatibility: Use Anthropic Skills with any MCP-compatible AI coding agent (Cline, Cursor, Windsurf, VS Code, Zed, Roo Code, Continue, etc.)
- Skill Management: Read and execute skills from
.claude/skills/directory - Sandboxed Execution: Execute bash commands in isolated Docker containers for security
- Volume Mounting: Mount host directories into containers for file access
- MCP Tools:
get-skillanduse-skilltools for seamless integration - CLI Commands: Direct command-line access to all functionality
- Custom Images: Support for custom Docker images tailored to your needs
- Pre-configured Environment: Python (uv, pip, poetry, pipenv, Pillow) and Node.js tooling out of the box
- Performance: Docker image prewarming and container reuse
Installation
Prerequisites
- Node.js 20+
- Docker (for sandboxed skill execution)
Install via npm
npm install -g @agiflowai/openskill
After installation, verify with:
openskill doctor
Download Skills
Download Anthropic's official skills to your project:
# Clone the skills repository
git clone https://github.com/anthropics/skills.git .claude/skills-temp
# Move skills to .claude/skills directory
mkdir -p .claude/skills
cp -r .claude/skills-temp/skills/* .claude/skills/
# Clean up
rm -rf .claude/skills-temp
Or download specific skills manually:
# Create skills directory
mkdir -p .claude/skills
# Clone and copy specific skill (e.g., canvas-design)
git clone https://github.com/anthropics/skills.git /tmp/skills
cp -r /tmp/skills/skills/canvas-design .claude/skills/
rm -rf /tmp/skills
Your skills directory should look like:
.claude/skills/
├── canvas-design/
│ └── SKILL.md
├── python-sandbox/
│ └── SKILL.md
└── ... (other skills)
Usage with MCP Clients
OpenSkill works with any MCP-compatible client. Here are quick setup examples:
Claude Code
{
"mcpServers": {
"openskill-mcp": {
"command": "openskill",
"args": ["mcp-serve", "--disable-tools", "get-skill"]
}
}
}
Cline
{
"mcpServers": {
"openskill-mcp": {
"disabled": false,
"command": "openskill",
"args": ["mcp-serve"]
}
}
}
Continue
{
"mcpServers": {
"openskill-mcp": {
"command": "openskill",
"args": ["mcp-serve"]
}
}
}
Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"openskill-mcp": {
"command": "openskill",
"args": ["mcp-serve"]
}
}
}
Gemini CLI
Add to .gemini/settings.json:
{
"mcpServers": {
"openskill-mcp": {
"command": "openskill",
"args": ["mcp-serve"]
}
}
}
Roo Code
{
"mcpServers": {
"openskill-mcp": {
"command": "openskill",
"args": ["mcp-serve"]
}
}
}
VS Code
"mcp": {
"servers": {
"openskill-mcp": {
"type": "stdio",
"command": "openskill",
"args": ["mcp-serve"]
}
}
}
Windsurf
{
"mcpServers": {
"openskill-mcp": {
"command": "openskill",
"args": ["mcp-serve"]
}
}
}
Zed
{
"context_servers": {
"openskill-mcp": {
"source": "custom",
"command": "openskill",
"args": ["mcp-serve"]
}
}
}
Note: For advanced configuration options (mount paths, container names, custom Docker images, skills paths, timeouts, etc.), see the CLI Commands section below.
MCP Tools
get-skill
Retrieves skill information from the skills directory. You can use Anthropic's skills from GitHub and put them in .claude/skills or your custom skill folder.
Input:
command(string): Name of the skill to retrieve
Example:
{
"command": "canvas-design"
}
use-skill
Executes bash commands in a sandboxed Docker environment for a specific skill.
Input:
skillName(string): Name of the skill to executebash(string): Bash command to execute
Example:
{
"skillName": "canvas-design",
"bash": "python generate.py output.pdf"
}
CLI Commands
mcp-serve
Start the MCP server with stdio transport.
openskill mcp-serve [options]
Options:
-t, --type <type>: Transport type (default: "stdio")--timeout <ms>: Default timeout for use-skill command (default: 30000)--workdir <path>: Default working directory in container (default: "/workspace")--mount <path>: Host path to mount into container /workspace--skills-path <path>: Path to skills directory (default: ".claude/skills")--container-name <name>: Custom Docker container name (allows reusing one container for multiple skills)--image <name>: Custom Docker image name to use instead of building default openskill-http image--disable-tools <tools>: Comma-separated list of tools to disable--no-prewarm: Disable Docker image prewarming on server startup
Examples:
# Start with custom skills path
openskill mcp-serve --skills-path ./my-skills
# Start with custom Docker image
openskill mcp-serve --image my-custom-image:latest
# Start with custom container name (reuse same container for all skills)
openskill mcp-serve --container-name shared-skill-container
# Mount current directory
openskill mcp-serve --mount $(pwd)
use-skill
Execute a skill directly from the command line.
openskill use-skill <skill-name> <bash-command> [options]
Options:
-t, --timeout <ms>: Command timeout (default: 30000)-w, --workdir <path>: Working directory (default: "/workspace")-m, --mount <path>: Host path to mount into container
Example:
# Execute Python script in canvas-design skill
openskill use-skill canvas-design "python generate.py output.pdf" \
--mount /Users/username/projects
doctor
Check if Docker is installed and accessible. Validates your environment for running OpenSkill.
openskill doctor
Checks:
- Docker installation and version
- Docker daemon status
Example Output:
Running OpenSkill environment checks...
Checking Docker installation...
✓ Docker is installed: Docker version 28.3.2, build 578ccf6
Checking Docker daemon...
✓ Docker daemon is running
✓ All checks passed!
Your environment is ready to use OpenSkill.
Docker Environment
The sandbox Docker image includes:
Node.js/JavaScript:
- Node.js v20
- npm
Python:
- Python 3.12
- pip
- uv (fast package installer)
- poetry (dependency management)
- pipenv (virtual environment manager)
- Pillow (PIL - image processing library)
System Tools:
- bash
- git
- curl, wget
- Build tools (gcc, g++, make)
Building the Docker Image
cd packages/openskill
docker build -t openskill-http .
Skill Structure
Skills should be organized in the skills directory (default: .claude/skills/):
.claude/skills/
├── canvas-design/
│ ├── SKILL.md # Skill definition with frontmatter
│ ├── generate.py # Skill implementation
│ └── templates/ # Additional resources
└── another-skill/
└── SKILL.md
SKILL.md Format:
---
name: canvas-design
description: Create beautiful visual art in .png and .pdf documents
license: user
---
# Canvas Design Skill
Instructions for the AI on how to use this skill...
Architecture
- src/tools/: MCP tool implementations (GetSkillTool, UseSkillTool)
- src/services/: Business logic (SkillService, SandboxService)
- src/commands/: CLI commands (mcp-serve, use-skill, http-serve)
- src/server/: MCP server setup and configuration
- src/transports/: MCP transport handlers (stdio)
- Dockerfile: Docker image with Python and Node.js tooling
Development
Project Structure
openskill/
├── packages/
│ └── openskill/ # Main MCP server package
├── nx.json # Nx configuration
├── pnpm-workspace.yaml # pnpm workspace configuration
└── tsconfig.base.json # Base TypeScript configuration
Setup
Prerequisites:
- Node.js 20+
- Docker (for sandboxed skill execution)
- pnpm (v10.15.1 or later)
Installation:
# Install dependencies
pnpm install
# Build the project
pnpm build
Development Workflow
# Run type checking
pnpm typecheck
# Run tests
pnpm test
# Development mode (watch)
pnpm dev
Testing Locally
# Start the MCP server locally
node packages/openskill/dist/cli.js mcp-serve --mount $(pwd)
# Or use with custom Docker image
node packages/openskill/dist/cli.js mcp-serve --image my-custom-image:latest
Available Scripts
pnpm build- Build all projectspnpm test- Run tests for all projectspnpm lint- Lint all projectspnpm typecheck- Run type checkingpnpm dev- Development mode with watchpnpm graph- View the project dependency graphpnpm reset- Reset Nx cache
License
AGPL-3.0
Community
Join our Discord community: https://discord.gg/NsB6q9Vas9
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。