MCP Starter
Agent-ready TypeScript MCP starter with two profiles:
core: minimal transport/runtime profile with one tool, one fixed resource, and one promptoperable: recommended default profile with discovery resources, resource templates, usage guidance, runtime defaults, and permission-aware examples
Commands
npm run dev: start the operable server profile with stdio transportnpx tsx src/index.ts: run directly from source mode (requires correct cwd)npm run catalog:generate: rebuild generated catalog artifacts from docs manifest + source seedsnpm run build: regenerate catalogs and build the package entrypointnpm run typecheck: run TypeScript validationnpm test: run deterministic unit testsnpm run protocol:sync: refresh the MCP protocol docs underdocs/protocolnpm run inspect: launch MCP Inspector against the local source servernpm run inspect:help: show MCP Inspector CLI optionsnpm run pack:dry-run: verify package contents and publish surface
Implementation Plan
The detailed implementation and hardening plan lives in OPERABLE_MCP_IMPLEMENTATION_PLAN.md.
Profiles
Core profile
Available through createCoreMcpServer() in src/server.ts.
Includes:
- tool:
echo - resource:
app://status - prompt:
summarize
Operable profile
Default profile through createMcpServer() and startServer().
Adds:
- fixed resources:
app://indexapp://catalog/toolsapp://catalog/resourcesapp://catalog/promptsapp://runtime/defaultsapp://usage
- resource templates:
app://doc/{slug}app://schema/{id}app://example/{name}
- prompt:
server_usage_guide
- permission-aware tool:
admin_echo
Discovery flow for agents
Recommended order:
- Read
app://index - Read
app://catalog/tools - Read
app://runtime/defaults - Read
app://catalog/resourcesandapp://catalog/prompts - Use
app://usageor promptserver_usage_guidebefore non-trivial calls
This prevents unnecessary discovery when runtime defaults already exist.
Runtime defaults
The operable profile exposes environment-derived defaults through app://runtime/defaults.
Supported environment variables:
MCP_DEFAULT_ACCOUNT_SIDMCP_DEFAULT_SERVICE_PROVIDER_SIDMCP_DEFAULT_REGIONMCP_DEFAULT_PAGEMCP_DEFAULT_COUNTMCP_PERMISSION_LEVEL(none,read,write,admin)MCP_DOCS_DIR
Behavior:
- if
MCP_DOCS_DIRpoints to a valid docs corpus,app://doc/{slug}reads markdown files from that location - if not, docs templates stay discoverable but return a deterministic “docs unavailable” response
Permission model
The starter demonstrates permission-first execution in admin_echo:
- the tool remains visible in discovery
- permission is checked before endpoint-specific validation
- blocked calls return a semantic permission error instead of a premature schema failure
This models the “visible vs usable” distinction real agent-facing servers need.
Docs-derived generated artifacts
Generated modules live in src/generated/:
They are rebuilt by tools/generate-catalog.ts using:
- source seeds in catalog-seed.ts
- the synced protocol docs manifest in docs/protocol/manifest.json
Inspector / DevTools
This starter includes integration with MCP Inspector.
- Run
npm run inspect - Open the Inspector URL shown in the terminal
- Inspect tools, fixed resources, resource templates, prompts, and ping behavior
Packaging and distribution
This package now includes:
- a
binentry (mcp-starter) - a constrained
fileswhitelist - repository, bugs, homepage, and license metadata
- a publish workflow template at publish.yml
- a publication checklist at publishing.md
Recommended execution modes:
- Source mode:
npx tsx src/index.ts(local development, cwd-dependent) - Package mode:
npx -y mcp-starter(stable client-facing command once published)
Skill
The reusable implementation workflow lives in skills/mcp-builder/SKILL.md.