npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@agenttic-ai-dev/skill2mcp

v0.1.0

Published

CLI and library to parse SKILL.md files into MCP-ready tool definitions

Readme

skill2mcp

License: MIT License: Apache 2.0 Language

skill2mcp header

skill2mcp is a TypeScript CLI/library that converts SKILL.md documents into MCP-ready tool definitions and can generate a minimal deployable MCP Server package from a single file or an entire skills directory.

The generated server uses the official MCP TypeScript SDK (@modelcontextprotocol/sdk) and supports stdio, http, or both transports.

Why this project

SKILL documents are usually semi-structured markdown (frontmatter + prose + tables). MCP tools require strict contracts (name, description, inputSchema).

skill2mcp bridges that gap with a layered pipeline:

  1. Parse markdown into a stable Intermediate Representation (IR)
  2. Transform IR into MCP tool definitions
  3. Generate a deployable MCP server package with handler stubs

Current status

MVP implemented and working:

  • Deterministic parser (strict, tolerant)
  • Cascading semantic mode (semantic) for missing metadata fallback
  • Tool transformation (SchemaBuilder, ToolMapper, ToolValidator)
  • inspect output with MCP-style tool JSON
  • build output with deployable MCP server package
  • Generated server supports stdio + http
  • build --watch for iterative regeneration

Installation

Requirements

  • Node.js 20+
  • npm 10+

Local install

npm install

Install from npm

npm install -g @agenttic-ai-dev/skill2mcp
# or without global install
npx @agenttic-ai-dev/skill2mcp parse ./skills

Build CLI

npm run build

Quick start

1. Parse a single SKILL

npm run parse -- ./fixtures/skills/valid-skill.md --mode strict

2. Inspect generated tool definitions

npm run inspect -- ./fixtures/skills --mode tolerant

3. Generate deployable MCP server package

npm run gen -- ./fixtures/skills --out ./generated/mcp-server --transport both --mode tolerant

4. Run generated server

cd ./generated/mcp-server
npm install
npm run build
npm run start:stdio
# or
npm run start:http

HTTP endpoint:

POST /mcp

CLI reference

parse

Converts SKILL markdown to IR JSON.

skill2mcp parse <input> [--mode strict|tolerant|semantic]

Arguments:

  • <input>: path to a .md file or directory

Options:

  • --mode: parser mode (tolerant default)
  • --format: currently json

Output:

  • results[] with parsed SkillDocument
  • diagnostics[] per source file

inspect

Converts parsed IR into MCP-like tool definitions.

skill2mcp inspect <input> [--mode strict|tolerant|semantic]

Output:

  • tools[]: generated tool definitions (name, description, inputSchema)
  • results[]: tool + diagnostics per source

build

Generates a deployable MCP server package from one or many skills.

skill2mcp build <input> --out <dir> [--transport stdio|http|both] [--mode strict|tolerant|semantic] [--watch]

Arguments:

  • <input>: path to a .md file or directory

Required options:

  • --out: output directory for generated package

Optional options:

  • --transport: default generated server transport (both default)
  • --mode: parsing mode (tolerant default)
  • --watch: regenerate package on source changes

Output:

  • generated package files (package.json, tools.json, src/server.ts, handlers)
  • diagnostics summary in JSON

Parse modes

strict

  • Fails on required metadata/schema gaps
  • Best for CI quality gates

tolerant

  • Continues with warnings for missing fields
  • Best for batch processing mixed-quality skills

semantic

  • Starts from tolerant parse
  • Attempts semantic extraction through OpenRouter (when configured)
  • Applies deterministic fallback inference for unresolved fields
  • Keeps diagnostics trace (SEMANTIC_* codes)

OpenRouter configuration for semantic

Environment variables:

  • OPENROUTER_API_KEY: enables remote semantic extraction
  • OPENROUTER_MODEL (optional): defaults to anthropic/claude-3.5-sonnet
  • SKILL2MCP_CACHE_DIR (optional): override cache directory
  • OPENROUTER_HTTP_REFERER (optional): forwarded as OpenRouter header
  • OPENROUTER_X_TITLE (optional): forwarded as OpenRouter header

Cache behavior:

  • Semantic responses are cached by content hash in .skill2mcp-cache/semantic-openrouter-cache.json
  • If cache is present, semantic mode reuses cache and avoids extra remote calls

Canonical SKILL.md format (recommended)

---
name: docx-generator
version: 1.0.0
description: Generate Word docs from structured markdown
tags: [documents, office]
---

## Parameters
| Name | Type | Required | Default | Description |
|------|------|----------|---------|-------------|
| content | string | yes |  | Markdown content |
| title | string | yes |  | Document title |

## Examples
**Input:** `{ content: "# Hello", title: "Report" }`
**Output:** report.docx generated at /outputs/

## Triggers
- "generate document"
- "create report"

Generated package structure

generated/mcp-server/
  package.json
  tsconfig.json
  README.md
  tools.json
  src/
    server.ts
    generated-tools.ts
    handlers/
      index.ts
      <tool_name>.ts

Development

Scripts

npm run build       # compile TypeScript
npm run test        # run test suite
npm run parse       # parse command entry
npm run inspect     # inspect command entry
npm run gen         # build command entry
npm run pack:check  # verify npm package contents

Publish to npm

# Login with publishing account ([email protected])
npm adduser

# Final verification
npm run prepublishOnly

# Publish public package
npm publish --access public

Test suite

Current automated coverage includes:

  • parser behavior (strict, tolerant, semantic)
  • schema builder and tool mapping
  • inspect command output contract
  • end-to-end build artifact generation

Engineering conventions

  • Follow repository collaboration rules in AGENTS.md
  • Product/business directives are governed by ROADMAP.md
  • Commit messages must use [AI] prefix when AI-generated

Release artifacts

This repo includes:

  • Dual-license distribution: MIT OR Apache-2.0
  • CHANGELOG.md
  • CONTRIBUTING.md
  • RELEASE_CHECKLIST.md

Collaboration model

  • Governance and decision rules: GOVERNANCE.md
  • Code of conduct: CODE_OF_CONDUCT.md
  • Security reporting: SECURITY.md
  • Support channels: SUPPORT.md

Known limitations

  • Parameter parsing currently assumes markdown table format in ## Parameters
  • Semantic mode prioritizes missing metadata and may enrich missing parameters when extraction is available
  • Watch mode tracks current tree; if deeply nested folders are added later, restart watch for complete coverage

Roadmap alignment

The active implementation follows phased delivery in ROADMAP.md.

GenAI integration policy (when enabled) prioritizes OpenRouter as default provider strategy, as defined in roadmap directives.

License

Licensed under either of:

  • MIT License (LICENSE-MIT)
  • Apache License 2.0 (LICENSE-APACHE)

at your option.