Field guide · 10 September 2026
Skills, Servers, Surfaces
Five words that get used as if they mean the same thing. Three of them are real capabilities; two are packaging. Here is what each one actually is, where it lives on your machine, and what you touch to change it.
Three capabilities, two containers
Sort by what the thing gives Claude, and the confusion mostly dissolves.
- Skillknow-how
- A folder with a
SKILL.mdin it — instructions, sometimes helper scripts. It changes how Claude does something. It cannot reach anything new; it can only direct what is already available. - MCP serverlocalor remote
- A program exposing tools over the Model Context Protocol. The only category that grants genuinely new reach, which is why it is the only one with an auth step and a scope list. A connector is the consumer-facing word for a remote one.
- Extensiona place to act
- Code installed inside somebody else's application — Chrome, VS Code, JetBrains. It hands Claude a surface it can operate in, typically one you are already signed into.
- Plugincontainer
- Not a kind of capability. A bundle that can carry skills, slash commands, subagents, hooks and MCP server definitions in one install.
- Developera settings pane
- Not a kind of capability either. The place in the desktop app where local MCP servers are configured.
What each one becomes
The difference that matters is what exists at the far end of the arrow.
That middle column is the whole distinction. A skill that goes wrong produces bad output. A server that goes wrong has a token and a network connection. The interfaces differ because the stakes do.
Why beeswax appears twice
It doesn't. One server, listed in one panel and edited in another.
The Connectors panel is an inventory of everything, tagged by origin: Web for remote servers, Desktop for local ones and built-ins like Claude in Chrome. Local MCP servers is the editor for the Desktop ones. Nothing is duplicated.
beeswax is local because it has to be — the Beeswax app exposes no MCP endpoint today. /mcp and both OAuth discovery paths return 404, so the npm package talking to /new_api/v1 with a pasted token is the only option available. Cambridge Markets shows as Web because you shipped OAuth for that one on 3 September.
What you actually touch
The interaction differs at every step, and the reason is always the credential.
| Skill | Local server | Web connector | Extension | Plugin | |
|---|---|---|---|---|---|
| Gives Claude | know-how | tools and data | tools and data | a surface to act in | whatever it bundles |
| Runs where | nowhere — it's text | your Mac, as you | the provider's servers | inside another app | — |
| Credential | none | a token you paste | OAuth, scoped | that app's own login | inherits |
| You add it by | dropping in a folder | Developer → Edit config | Connectors → Add | the app's store | /plugin |
| You change it by | editing markdown | editing JSON, restart | re-authorising | updating the extension | updating the plugin |
| Follows your account | no — per machine | no — per machine | yes — web, desktop, mobile | no — per browser | no — per machine |
A plugin is a shipping container
Installing one unpacks into the same registries as everything else.
Where yours actually live
Three beeswax-family servers across two registries — the one genuine inconsistency in your setup.
beeswax— desktop app config. Visible in the Connectors panel as Desktop · Local dev.beeswax-shares,beeswax-compliance,boat-share-local—~/.claude.json, global to Claude Code. Not in the Connectors panel at all.cambridge-markets—~/.claude.json, scoped to thecambridge_marketsproject only.- Gmail, Drive, Calendar, GitHub — account-level web connectors, following you across devices.
All of them are live in this session, but Claude Code keeps its own registry on top of the desktop app's, so two of the three beeswax servers are invisible to that panel. That is the thing worth tidying — pick one home for the family rather than splitting it across both.
The practical version of all this. Claude keeps doing something wrong or inconsistently, and it already has the access it needs → write a skill. It cannot see or touch the system at all → you need an MCP server. It needs to act inside an app you are logged into → an extension. You want to hand someone the lot in one install → a plugin.
And the reason today's invoicing stalled sits squarely in the second row of that table: BEESWAX_API_TOKEN is a pasted string in a JSON file, scoped to the wrong account and read-only. Had Beeswax an MCP endpoint, it would have been a re-login with the right account rather than a hand-edited config.