# MCP Skill Creator

> Create skills that wrap MCP (Model Context Protocol) servers for use with mcp-skill-client. Use when user wants to create a new MCP-based skill, wrap an existing MCP server as a skill, or generate SKILL.md with tool documentation from an MCP server.

- Skill: `majiayu000/mcp-skill-creator` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/mcp-skill-creator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/mcp-skill-creator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/mcp-skill-creator

---


# MCP Skill Creator

Create skills that wrap MCP servers for browser automation, database access, API integrations, and more. Generated skills use `mcp-skill-client` to maintain persistent MCP sessions.

## Skill Structure

```
skill-name/
├── SKILL.md        # Skill instructions with tool documentation
├── config.json     # MCP server configuration
└── scripts/
    └── mcp         # Wrapper script for short commands
```

## Creating a Skill

### Step 1: Create skill directory and config.json

```bash
mkdir -p skill-name/scripts
```

Create `config.json`:
```json
{
  "name": "skill-name",
  "transport": "stdio",
  "command": "npx",
  "args": ["@org/mcp-package@version", "--option1", "--option2"],
  "env": {}
}
```

**Transport options:**
- `stdio`: Spawns MCP server as subprocess (most common)
- `http`: Connects to running MCP server at URL

### Step 2: Create wrapper script

Create `scripts/mcp` (executable):
```bash
#!/bin/bash
SKILL_DIR="$(cd "$(dirname "$0")/.." && pwd)"
SESSION="${MCP_SESSION:-default}"
exec npx github:runoshun/mcp-skill-client --config "$SKILL_DIR/config.json" --session "$SESSION" "$@"
```

Make it executable:
```bash
chmod +x scripts/mcp
```

### Step 3: Fetch Tool List

```bash
# Set session name (optional, defaults to "default")
export MCP_SESSION=dev

# Start daemon temporarily
./scripts/mcp start

# Get tool list (copy this output for SKILL.md)
./scripts/mcp tools

# Stop daemon
./scripts/mcp stop
```

### Step 4: Write SKILL.md

Use this template:

```markdown
---
name: skill-name
description: [What the skill does and when to use it]
---

# Skill Name

[Brief description of what this skill enables]

## Setup

Set session name (optional):
\`\`\`bash
export MCP_SESSION=myproject
\`\`\`

Start the MCP daemon:
\`\`\`bash
$SKILL_DIR/scripts/mcp start
\`\`\`

## Available Tools

[Document each tool from the tools list]

### tool_name
[Description from MCP server]

\`\`\`bash
$SKILL_DIR/scripts/mcp call tool_name param1=value
\`\`\`

## Cleanup

\`\`\`bash
$SKILL_DIR/scripts/mcp stop
\`\`\`
```

## Example: Playwright MCP Skill

### config.json

```json
{
  "name": "playwright-mcp",
  "transport": "stdio",
  "command": "npx",
  "args": ["@playwright/mcp@latest", "--headless", "--browser", "chromium", "--no-sandbox"]
}
```

### scripts/mcp

```bash
#!/bin/bash
SKILL_DIR="$(cd "$(dirname "$0")/.." && pwd)"
SESSION="${MCP_SESSION:-default}"
exec npx github:runoshun/mcp-skill-client --config "$SKILL_DIR/config.json" --session "$SESSION" "$@"
```

### SKILL.md (excerpt)

```markdown
---
name: playwright-mcp
description: Browser automation via Playwright MCP server. Navigate pages, click elements, fill forms, take screenshots. Use for web testing, scraping, or any browser automation task.
---

# Playwright MCP

Browser automation with persistent session via MCP.

## Setup

\`\`\`bash
export MCP_SESSION=myproject  # optional
$SKILL_DIR/scripts/mcp start
\`\`\`

## Tools

### browser_navigate
Navigate to a URL.
\`\`\`bash
$SKILL_DIR/scripts/mcp call browser_navigate url=https://example.com
\`\`\`

### browser_snapshot
Get accessibility snapshot with element refs.
\`\`\`bash
$SKILL_DIR/scripts/mcp call browser_snapshot
\`\`\`

### browser_click
Click an element by reference.
\`\`\`bash
$SKILL_DIR/scripts/mcp call browser_click element="Submit" ref=e12
\`\`\`
```

## Session Management

Sessions allow parallel usage from different projects:

```bash
# Project A
cd ~/project-a
export MCP_SESSION=project-a
./scripts/mcp start  # port auto-assigned (e.g., 8940)

# Project B (different terminal)
cd ~/project-b
export MCP_SESSION=project-b
./scripts/mcp start  # different port auto-assigned (e.g., 8941)
```

Session state is stored in `.<skill-name>/` in the current directory:
```
.skill-name/
├── sessions.json       # All session info
├── project-a/
│   ├── daemon.log
│   └── output/
└── project-b/
    ├── daemon.log
    └── output/
```

List all sessions:
```bash
./scripts/mcp sessions
```

## Tool Documentation Format

When documenting tools in SKILL.md:

1. **Tool name as heading** - Use `### tool_name`
2. **Brief description** - One line explaining what it does
3. **Example** - Show actual command with realistic values

## Templates

Copy templates from `assets/` directory:
- `assets/config.json` - MCP server configuration template
- `assets/SKILL.md.template` - SKILL.md template with placeholders
- `assets/mcp.sh` - Wrapper script template

## Tips

- **$SKILL_DIR**: Use this placeholder for skill directory path
- **MCP_SESSION**: Environment variable for session name (default: "default")
- **Session persistence**: Daemon maintains browser/connection state between calls
- **Error handling**: Check daemon status if tools fail (`$SKILL_DIR/scripts/mcp status`)
- **Parallel usage**: Each session gets auto-assigned port, no manual port management needed

