@celilo/mcp-dev-server
v0.2.9
Published
MCP server that helps a developer adapt an application into a celilo module: capability + hook contracts, manifest validation, and capability-wired scaffolding. Authoring companion to @celilo/mcp-server (which drives e2e runs).
Readme
@celilo/mcp-dev-server
An MCP server that helps a developer adapt an application into a celilo
module — the authoring companion to @celilo/mcp-server
(which drives e2e runs).
Its job is to deliver celilo's authoring knowledge — capability contracts, the hook lifecycle, the manifest schema, the primitives guide — into the developer's own repo, where the celilo monorepo isn't checked out, and to offer a tight authoring loop (validate a manifest, scaffold a capability-wired module).
A minimal Model Context Protocol server over stdio (newline-delimited JSON-RPC
2.0), hand-rolled like @celilo/mcp-server — no SDK dependency.
Design: apps/celilo/designs/DEVELOPER_MCP_SERVER.md.
The consumer-tool framing it builds on: openspec/changes/cele2e-consumer-tool/proposal.md.
Run it
bun run packages/mcp-dev-server/src/index.ts # or: packages/mcp-dev-server/bin/celilo-dev-mcpRegister with an MCP client (.mcp.json / Claude config):
{
"mcpServers": {
"celilo-dev": {
"command": "bun",
"args": ["run", "/abs/path/to/packages/mcp-dev-server/src/index.ts"]
}
}
}Tools
| tool | what it does |
|------|--------------|
| list_capabilities | Every capability a module can provide/require — version, one-line, provider module(s). |
| describe_capability({name}) | The RAW TypeScript contract for one capability (source-of-truth data + methods), plus version + providers. |
| list_hooks | Every lifecycle hook, its purpose, and whether it has required inputs/outputs. |
| describe_hook({name}) | One hook's full inputs/outputs contract. |
| validate_manifest({path}) | Runs celilo module check on a module dir; structured pass/fail. |
| scaffold_module({id, requires?, provides?, zone?, …}) | Generates a capability-wired module skeleton: manifest.yml + hooks in the testable injectable-deps shape, a unit test per hook, and a cele2e e2e stub in tests/. Passes validate_manifest + bun test out of the box. |
Resources
| uri | content |
|-----|---------|
| guide://primitives, guide://module-development, guide://subsystems, guide://core-modules, guide://glossary | The authoring docs. |
| schema://manifest | JSON Schema for manifest.yml. |
| capability://<name> | One per capability — its raw .ts contract. |
| hooks://contract | The full hook lifecycle contract. |
A resource whose source can't be resolved in the current environment is omitted
from resources/list rather than erroring.
How it resolves things
- Capability names/versions + raw
.tscontracts come from the installed@celilo/capabilities(it ships itssrc/). validate_manifestshells the installedceliloCLI (@celilo/cli). Override the binary withCELILO_BIN.- Docs / manifest schema are read from
@celilo/cliif installed, else from a monorepo checkout (CELILO_REPO_ROOToverrides the repo-root search). - The hook contract is a small bundled copy of
V1_HOOKS— it isn't exported from any published package today (seesrc/hook-contract.ts).
Status
v1 covers authoring — including generated hook unit tests (pure bun
test, no harness needed). The full "test the module" half — driving a real
deploy through @celilo/e2e — is deferred until that consumer surface
stabilizes; the scaffold emits a skipped cele2e stub as the placeholder. See
the design doc.
Dev tool, private, workspace-only for now.
Test
cd packages/mcp-dev-server && bun test