pmcp

Some of your dependencies shipped instructions.

A package can carry a SKILL.md saying how to use it. Once a project has a few hundred of them, nobody knows which ones did, so every question about an installed package gets answered by reading its source.

npx -y @modootoday/pmcp list
  @acme/release-runbook  a deploy went out but the old bundle is still running
  redis-toolkit/locks    a job ran twice because two workers took the same lock
  … > skill_find "my deploy shipped but the old bundle is running"
+ @acme/release-runbook
  ranking lexical > skill_call @acme/release-runbook
  one document, at the moment it is needed

pmcp reads those files out of node_modules and serves three tools over the Model Context Protocol: skill_catalog, skill_find and skill_call. The host sees three tools whatever the catalog holds, and a session pays for the one skill it opens.

Get started See the written skills

What the design buys you

Startup does not grow with the catalog

Bodies are read by skill_call, one at a time. Adding a dependency that ships ten skills adds ten one-line descriptions to what a search ranks, not ten documents to what a session loads.

Nobody maintains the list

The catalog is derived from the installed tree when a tool is called. Installing a package is how its skill arrives, and uninstalling it is how the skill leaves.

One directory read sees every convention

Discovery is by shape rather than by path, so skills/, .agent/skills/, .claude/skills/, .gemini/skills/ and .codex/skills/ are all found by the same walk.

No model arrives with it

Ranking is lexical by default and takes no model at all. Nothing is downloaded at install time and there is no postinstall hook.

Skills can live in more than one layout

The same bounded walk finds SKILL.md in agent-specific directories, a package's skills directory, and layouts such as lib/skill. Nested installations and cache directories are kept out of that walk.

Where a skill has to sit to be found

Three tools, and nothing else

Tool Takes Answers
skill_catalog nothing every skill's name and description, grouped by package
skill_find a sentence describing your problem the few skills that match, ranked, names only
skill_call a skill name that skill's body

skill_find wants a sentence rather than a keyword, because it ranks the frontmatter description, and a description is written as a symptom. skill_catalog is the one that takes a bare word, because it filters instead of ranking.

Local indexing is optional

The default MCP server ranks lexically. The index command requires an encoder installed separately and may load model assets when explicitly invoked. Installing the optional peer alone does not switch the server to semantic ranking.

Most packages ship nothing

Run pmcp list and the honest result, for most projects, is a short list. The server can only serve what a maintainer wrote, and few have. For the packages an agent gets wrong most often, we write the skill ourselves and verify it by executing its examples against the version it names — if any of them fail, it is not published.

That half is a subscription. Everything above is not: reading the skills your dependencies already ship needs no account, and never will. You can read every written skill's contents, its verification date and a complete example before paying for any of it.

Three reasons you might not want this

The licence is not OSI open source

Elastic License 2.0: use it inside your company at any scale, ship it in a product you sell, fork it. What you cannot do is offer it to third parties as a hosted or managed service. The whole of it, in a page.

Your own repository's skills do not need it

Skills that live in the project are not installed, and a host that already loads them does not need a server in front of them. This is for the skills you did not write.

Lexical ranking is what you get by default

Token overlap and character bigrams, no model. It answers a sentence that shares vocabulary with a description and it does not answer a paraphrase that shares none.

MCP reading stays local. The three tools read installed skills. Separate CLI commands retrieve the catalog and install skill packages with confirmation; they do not upload your dependency list.