Skip to main content

MCP Server

The Skillsmith MCP server integrates with MCP-compatible clients, enabling natural language skill installation and lifecycle management.

Overview

MCP (Model Context Protocol) servers extend your AI assistant's capabilities by providing additional tools. The Skillsmith MCP server adds tools for searching, installing, and managing skills.

Configuration

Basic Setup

Pick the snippet for your MCP client and add it to the matching config file. Every snippet uses the same shape — only the config-file path (and, for Codex/Hermes, the format) differs.

Claude Code~/.claude/settings.json
{
  "mcpServers": {
    "@skillsmith/mcp-server": {
      "command": "npx",
      "args": ["-y", "@skillsmith/mcp-server"]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "@skillsmith/mcp-server": {
      "command": "<paste output of: which skillsmith-mcp (macOS/Linux) or where skillsmith-mcp (Windows)>",
      "env": {
        "SKILLSMITH_CLIENT": "cursor"
      }
    }
  }
}

Cursor 2.4+ required, Node >=22.22 (Cursor's own bundled Node meets this). Setup: run npm install -g @skillsmith/mcp-server, then run which skillsmith-mcp (macOS/Linux) or where skillsmith-mcp (Windows) and paste that path into command above — Cursor's bundled Node cannot resolve packages via npx (a real ENOENT on a missing Resources/app/resources/lib directory), so pointing directly at the installed binary is the only form confirmed to work inside Cursor. SKILLSMITH_CLIENT routes installs to ~/.cursor/skills instead of the default ~/.claude/skills. Prefer to try npx first anyway? Replace command with "npx" and add "args": ["-y", "@skillsmith/mcp-server"] — simpler, but may hit the same ENOENT, plus EBADENGINE or ENOTEMPTY on repeated installs. After saving: enable the server in Cursor's Settings → MCP panel and start a new chat — a correctly-configured entry still shows disconnected until toggled on there — then reload the window.

GitHub Copilot (VS Code).vscode/mcp.json (workspace)
{
  "mcpServers": {
    "@skillsmith/mcp-server": {
      "command": "npx",
      "args": ["-y", "@skillsmith/mcp-server"]
    }
  }
}

VS Code 1.108+ required. Workspace-scoped (commit to repo if team-shared, or use user settings.json instead).

Windsurf~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "@skillsmith/mcp-server": {
      "command": "npx",
      "args": ["-y", "@skillsmith/mcp-server"]
    }
  }
}

Supports ${env:VAR} interpolation for secrets in this config.

Codex CLI~/.codex/config.toml (TOML)
[mcp_servers.@skillsmith/mcp-server]
command = "npx"
args = ["-y", "@skillsmith/mcp-server"]

Codex reads ~/.agents/skills. When installing via Skillsmith CLI, pass --client agents.

Cross-agent (open standard)~/.agents/mcp.json
{
  "mcpServers": {
    "@skillsmith/mcp-server": {
      "command": "npx",
      "args": ["-y", "@skillsmith/mcp-server"]
    }
  }
}
OpenCode~/.config/opencode/opencode.json
{
  "mcp": {
    "@skillsmith/mcp-server": {
      "type": "local",
      "command": ["npx", "-y", "@skillsmith/mcp-server"],
      "enabled": true
    }
  }
}

OpenCode also reads .claude/skills and .agents/skills for skill discovery. Note the OpenCode-specific entry shape: command is an array and the env-var field is named environment, not env.

Hermes (Nous Research)~/.hermes/config.yaml (YAML)
mcp_servers:
  @skillsmith/mcp-server:
    command: "npx"
    args: ["-y", "@skillsmith/mcp-server"]

Hermes config is YAML. Hermes has no SessionStart hook equivalent — nudge/attribution is unsupported on this harness.

Grok Build (xAI)~/.grok/config.toml (TOML)
[mcp_servers.@skillsmith/mcp-server]
command = "npx"
args = ["-y", "@skillsmith/mcp-server"]

Grok Build uses TOML under a [mcp_servers.NAME] table, the same convention as Codex CLI above.

Google Antigravity~/.gemini/config/mcp_config.json
{
  "mcpServers": {
    "@skillsmith/mcp-server": {
      "command": "npx",
      "args": ["-y", "@skillsmith/mcp-server"],
      "env": {
        "SKILLSMITH_CLIENT": "antigravity"
      }
    }
  }
}

One config file is shared across the Antigravity CLI, IDE, and 2.0. A workspace-scoped alternative also exists at .agents/mcp_config.json (project root) if you prefer not to register the server globally. SKILLSMITH_CLIENT routes installs to ~/.gemini/config/skills instead of the default ~/.claude/skills.

Advanced Configuration

For more control, add extra options to the env block of whichever client snippet you used above — keep that snippet's own command and args (or, for Cursor, its resolved-path command) and just add to its env. Example (Claude Code shape shown):

{
  "mcpServers": {
    "skillsmith": {
      "command": "npx",
      "args": ["-y", "@skillsmith/mcp-server"],
      "env": {
        "SKILLSMITH_LOG_LEVEL": "debug",
        "SKILLSMITH_CACHE_TTL": "3600"
      }
    }
  }
}

This env-block pattern applies as shown to every JSON-shaped client (Claude Code, Cursor, Copilot, Windsurf, Antigravity, cross-agent). OpenCode uses an environment key instead of env (with command as an array); Codex, Grok, and Hermes use TOML/YAML, not JSON — add the same variables under each format's own env table/mapping instead.

API Key Configuration

The Skillsmith API provides access to thousands of skills, indexed daily by scanning SKILL.md files across GitHub and security screened hourly for vulnerabilities. Configure your API key for higher rate limits and usage tracking.

Why Use an API Key?

  • Live indexed skills - Access skills as they're discovered and screened
  • Higher rate limits - Up to 600 requests/minute on Enterprise tier
  • Usage dashboard - Track your API usage at www.skillsmith.app/account
  • Priority access - During high-traffic periods

Setup

Step 1: Create an account and get your API key at www.skillsmith.app/account

Step 2: Configure your API key using one of these methods:

Method A: Config File (Recommended)

Create ~/.skillsmith/config.json - works on all platforms:

mkdir -p ~/.skillsmith && cat > ~/.skillsmith/config.json << 'EOF'
{
  "apiKey": "sk_live_your_key_here"
}
EOF

Method B: MCP Client Config

Add SKILLSMITH_API_KEY to the env block of whichever client snippet you used above — keep that snippet's own command and args (or, for Cursor, its resolved-path command) and just add the key. Example (Claude Code shape shown):

{
  "mcpServers": {
    "skillsmith": {
      "command": "npx",
      "args": ["-y", "@skillsmith/mcp-server"],
      "env": {
        "SKILLSMITH_API_KEY": "sk_live_your_key_here"
      }
    }
  }
}

This env-block pattern applies as shown to every JSON-shaped client (Claude Code, Cursor, Copilot, Windsurf, Antigravity, cross-agent). OpenCode uses an environment key instead of env (with command as an array); Codex, Grok, and Hermes use TOML/YAML, not JSON — add the same variable under each format's own env table/mapping instead.

Step 3: Restart your MCP client to load the updated configuration.

Security Note

Never paste your API key directly in chat. Always configure it via one of the methods above. Your key will be used automatically for all Skillsmith API requests.

Shell Exports Don't Work

Running export SKILLSMITH_API_KEY=... in your terminal does NOT pass the variable to MCP servers. MCP servers run as subprocesses and don't inherit your shell environment. Use the config file or settings.json method above.

SSO-provisioned accounts

Accounts provisioned via your organization's SSO/SAML provider don't support the CLI's device-code skillsmith login flow. The API-key setup above still works — generate a personal key at /account/cli-token/ and configure it with either method.

Rate Limits by Tier

Tier Rate Limit Monthly Cost Best For
Community 100/min Free Personal projects
Individual 200/min $9.99/mo Active developers
Team 300/min $25/user/mo Development teams
Enterprise 600/min Custom Large organizations

Other Environment Variables

Variable Description Default
SKILLSMITH_LOG_LEVEL Logging level (debug, info, warn, error) info
SKILLSMITH_CACHE_TTL Cache time-to-live in seconds 1800
SKILLSMITH_REGISTRY Custom registry URL default registry
SKILLSMITH_API_KEY Personal API key for usage tracking -

Available Tools

The MCP server provides the following tools:

Triggering the MCP from natural prompts

To make sure your prompt actually invokes the Skillsmith MCP (rather than having the model answer from its training data), prefix natural-language prompts with "Use Skillsmith to..." or "Ask Skillsmith for...". The product-name anchor tells the model to consider Skillsmith's tools instead of treating the request as general programming knowledge. The example prompts below already use this pattern.

For an even more reliable trigger on Claude Code, install the bundled slash-command skill once with skillsmith setup, then use /skillsmith <verb> (e.g. /skillsmith search testing).

Skillsmith's MCP server works in any MCP-capable agent runtime — Claude Code, Cursor, Continue, Copilot, Windsurf. For runtime-specific installation, see Getting Started.

search

Search for skills in the registry.

// Tool: search
// Parameters:
{
  "query": "testing",           // Search term (required)
  "category": "development",    // Category filter
  "trust_tier": "verified",     // Trust tier filter
  "min_score": 70,              // Minimum quality score
  "limit": 10                   // Max results
}

Results include repository_url and homepage_url when declared by the skill author, plus compatibility tags indicating supported LLMs, IDEs, and platforms.

Example prompts:

  • "Use Skillsmith to search for testing skills"
  • "Ask Skillsmith for verified skills tagged git workflows"
  • "Use Skillsmith to find devops skills with quality score above 80"

get_skill

Get detailed information about a specific skill.

// Tool: get_skill
// Parameters:
{
  "id": "community/jest-helper"  // Skill ID (required)
}

The response includes an also_installed array — skills that users frequently install alongside this one. Each entry contains skillId, name, description, and installCount. Only surfaces once a skill pair has reached 5 or more co-installs.

Example prompts:

  • "Use Skillsmith to show details for community/jest-helper"
  • "Ask Skillsmith what the git-commit skill does"

install_skill

Install a skill to the local environment.

// Tool: install_skill
// Parameters:
{
  "id": "community/jest-helper",  // Skill ID (required)
  "path": "~/.claude/skills",     // Installation path
  "force": false                  // Overwrite existing
}

Example prompts:

  • "Use Skillsmith to install jest-helper"
  • "Ask Skillsmith to install community/git-commit"

uninstall_skill

Remove an installed skill.

// Tool: uninstall_skill
// Parameters:
{
  "id": "community/jest-helper"  // Skill ID (required)
}

Example prompts:

  • "Use Skillsmith to uninstall jest-helper"
  • "Ask Skillsmith to remove community/git-commit"

recommend

Get personalized skill recommendations.

// Tool: recommend
// Parameters:
{
  "context": "react",     // Technology context
  "limit": 5              // Max recommendations
}

Example prompts:

  • "Ask Skillsmith to recommend skills for my React project"
  • "Use Skillsmith to find skills that help with Node.js development"

compare

Compare multiple skills side-by-side.

// Tool: compare
// Parameters:
{
  "skill_ids": ["jest-helper", "vitest-helper"]  // 2-5 skill IDs
}

Example prompts:

  • "Use Skillsmith to compare jest-helper and vitest-helper"
  • "Ask Skillsmith to compare these testing skills side-by-side"

validate

Validate a skill's structure.

// Tool: validate
// Parameters:
{
  "path": "./my-skill"  // Path to skill directory
}

Example prompts:

  • "Use Skillsmith to validate my skill at ./my-skill"
  • "Ask Skillsmith to check if this skill structure is correct"

publish_private

Mark a skill private on this device, hiding it from your own community search results. Team tier. See Private Skills for the full picture — it's a single-device setting, not shared with teammates.

// Tool: publish_private
// Parameters:
{
  "skillId": "author/name"  // Skill ID to mark private (required)
}

Example prompts:

  • "Use Skillsmith to mark my-internal-skill private"

private_registry_publish

Publish a skill version to your organization's shared private registry as a pending submission — a team admin has to approve it before anyone (including you) can install it. Enterprise tier. See Private Registry for the full approval workflow and access-control model.

// Tool: private_registry_publish
// Parameters:
{
  "skillId": "author/name",       // Skill ID (required)
  "version": "1.0.0",             // Semver version (required)
  "content": { "SKILL.md": "..." } // Packaged skill files (required)
}

Example prompts:

  • "Use Skillsmith to publish version 1.0.0 of my-org/deploy-helper to the private registry"

private_registry_manage

Manage your organization's private registry — list, get, install, deprecate, and review skills via the action parameter (including submissions, approve, and reject for reviewing pending publishes). The namespace action returns your team's registry namespace (the required skill_id publish prefix). Enterprise tier. Full tool reference: Private Registry.

// Tool: private_registry_manage
// Parameters:
{
  "action": "list",  // list | get | install | deprecate | undeprecate |
                      // namespace | submissions | approve | reject
  "skillId": "author/name"  // required for most actions
}

Example prompts:

  • "Ask Skillsmith to list pending submissions in the private registry"
  • "Use Skillsmith to approve my-org/deploy-helper version 1.0.0"

Local Namespace-Collision Audit Tools

These tools detect and resolve namespace collisions across your local skills, commands, agents, and CLAUDE.md files, plus the durable undo mechanism and the separate manifest-identity-repair tool that round out the apply family. skill_inventory_audit, apply_namespace_rename, and apply_recommended_edit are all available on every tier today — Team/Enterprise tier-gating for these tools is not yet enforced. undo_apply and apply_manifest_reconcile are Community tier.

skill_inventory_audit

Audit every installed AI coding client's skill inventory (Claude Code, Cursor, Copilot, and every other Skillsmith-supported client) — plus Claude Code's own commands, agents, and CLAUDE.md trigger rules — for local namespace collisions; returns rename and edit suggestions.

// Tool: skill_inventory_audit
// Parameters:
{
  "audit_mode": "preventative"  // optional: preventative | power_user | governance | off
                                // defaults to ~/.skillsmith/config.json or tier default
}

Four pass-modes control depth and ONNX cost:

  • preventative (default for Free/Individual) — exact-name collisions + generic-token flags. No ONNX model load.
  • power_user (default for Team) — adds semantic-overlap pass via OverlapDetector.
  • governance (default for Enterprise) — same checks as power_user; reserved as the Enterprise default.
  • off — short-circuits to an empty result.

Example prompts:

  • "Use Skillsmith to audit my installed skills for local namespace collisions"
  • "Ask Skillsmith to run a deep collision audit on my ~/.claude inventory"

apply_namespace_rename

Apply a rename suggestion from a prior local namespace-collision audit (skill_inventory_audit); persists overrides via the namespace-overrides ledger.

// Tool: apply_namespace_rename
// Parameters:
{
  "audit_id": "01HXY...",       // ULID from skill_inventory_audit
  "suggestion_id": "rename-1",
  "mode": "apply"               // apply | custom | skip
  // if mode === "custom", also pass: "custom_name": "my-new-name"
}

Example prompts:

  • "Use Skillsmith to apply the suggested rename for skill X from the last audit"
  • "Ask Skillsmith to skip the rename suggestion for the test-runner collision"

apply_recommended_edit

Apply a recommended prose edit (e.g. add_domain_qualifier) from an audit result; gated behind an allow-list registry.

// Tool: apply_recommended_edit
// Parameters:
{
  "audit_id": "01HXY...",
  "edit_id": "edit-1",
  "confirm": true               // explicit confirmation required
}

Only edits in the APPLY_TEMPLATE_REGISTRY allow-list are accepted. Free-form prose edits are rejected.

Example prompts:

  • "Use Skillsmith to apply the suggested domain-qualifier edit to my skill description"

undo_apply

Undo the most recent apply_namespace_rename / apply_recommended_edit changeset(s) made in the current MCP server session, restoring each file from the backup the apply tool wrote before it changed anything.

// Tool: undo_apply
// Parameters:
{
  "count": 1               // optional, defaults to 1 — undo the N most-recent changesets
  // or: "suggestion_id": "rename-1"   // undo one specific changeset by id (mutually exclusive with count)
}

Session-scoped: once the server process restarts, its undo history is gone. Refuses (rather than overwrites) when the file has changed since the apply, the backup is missing, or the restore target falls outside the confined skill roots — treat those as normal, expected outcomes.

Example prompts:

  • "Undo the last skill rename you applied"

apply_manifest_reconcile

Repair a corrupted or ambiguous ~/.skillsmith/manifest.json entry through a supported path — never a hand-edit. Use after skill_outdated reports identity-mismatch or local-drift, or after skill_recover_source found low or no confidence.

// Tool: apply_manifest_reconcile
// Parameters:
{
  "action": "mark_local",   // mark_local | relink | drop_entry | verify | revert
  "name": "my-skill"        // required for mark_local/relink/drop_entry; optional for verify (batch) and revert
  // relink also requires: "id": "author/name", "source": "github:author/name"
  // revert accepts either "ledgerEntryId" (precise) or "name" (by most-recent, refuses if ambiguous)
}

Five actions: mark_local stops tracking an entry against the registry (source: 'unknown' + provenance: 'local', written together); relink asserts an explicit, registry-validated id/source pair — it never infers an identity on its own; drop_entry hard-removes an entry whose install path no longer resolves; verify re-checks on-disk content against the registry's current content hash for one entry or, by default, every entry, writing verifiedAt only on a match; revert is a durable, cross-session undo of a prior reconcile on a single entry — unlike undo_apply, it survives an unrelated skill install happening in between and works across server restarts.

Example prompts:

  • "skill_outdated says the commit skill's identity doesn't match what's installed — mark it as my own local skill"
  • "Undo that last manifest reconcile"

Usage Examples

Discovering Skills

You: "I need help with testing in my project. What skills are available?"

Assistant: [Uses search tool] I found several testing skills:
- jest-helper: Comprehensive Jest testing utilities
- vitest-helper: Vitest integration and helpers
- playwright-utils: End-to-end testing with Playwright
...

Installing and Using Skills

You: "Install the jest-helper skill and show me how to use it"

Assistant: [Uses install_skill tool] I've installed jest-helper to
~/.claude/skills/jest-helper. This skill provides...

Comparing Options

You: "Should I use jest-helper or vitest-helper for my Vite project?"

Assistant: [Uses compare tool] Here's a comparison:
| Feature       | jest-helper | vitest-helper |
| Vite support  | Limited     | Native        |
| Speed         | Moderate    | Fast          |
...

Trust Tiers

Tier Description Review Process
official Platform and partner skills Full security audit by Skillsmith team
verified Manually reviewed by the Skillsmith team Full security audit + identity verification
curated GitHub-verified vendor orgs and curated publishers Automated vendor verification + editorial floor (quality >= 0.80)
community Community-reviewed Peer review + automated checks
unverified No verification performed None

Lifecycle Tutorials

The MCP tools listed above bind to natural-language prompts in your agent runtime. The lifecycle tutorials show worked examples of each stage (Claude Code is the worked-example runtime; the same MCP tools work in any MCP-capable agent):

  • Discoversearch, skill_recommend
  • Evaluateget_skill, skill_compare, skill_diff
  • Install & useinstall_skill, skill_validate
  • Maintainskill_updates, skill_outdated, skill_inventory_audit
  • Governskill_audit, compliance_report (Team+), audit_export, audit_query, siem_export (Enterprise)
  • Uninstalluninstall_skill
  • Cross-machine skill inventory — view installed skills across devices

Troubleshooting

Server Not Starting

Check Node.js Version

Ensure you have Node.js >=22.22.0 installed. Run node --version to verify.

Tools Not Available

Verify Configuration

Ensure your MCP client's config file (e.g. ~/.claude/settings.json for Claude Code, ~/.cursor/mcp.json for Cursor — see the Quickstart client picker for the full list) is valid JSON and the MCP server configuration is correct. Restart your MCP client after changes.

Enable Debug Logging

{
  "mcpServers": {
    "skillsmith": {
      "command": "npx",
      "args": ["-y", "@skillsmith/mcp-server"],
      "env": {
        "SKILLSMITH_LOG_LEVEL": "debug"
      }
    }
  }
}