mcpill 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/add-card.md +9 -0
- package/.claude/commands/append-card.md +10 -0
- package/.claude/commands/play-card.md +14 -0
- package/.claude/commands/turn.md +28 -0
- package/.claude/settings.json +10 -0
- package/.flowdeck/.flowdeckignore +5 -0
- package/.flowdeck/AGENT.md +46 -0
- package/.flowdeck/TODO.md.template +14 -0
- package/.flowdeck/_discard/start/DISCARD.md +8 -0
- package/.flowdeck/_discard/start/TODO.md +35 -0
- package/.flowdeck/_discard/start/turn.log +28 -0
- package/.flowdeck/_energy/ADR.md.template +100 -0
- package/.flowdeck/_energy/CLAUDE.md.template +95 -0
- package/.flowdeck/_energy/GENERALINSIGHTS.md.template +57 -0
- package/.flowdeck/_energy/MISSION.md.template +89 -0
- package/.flowdeck/_energy/OPEN-QUESTIONS.md.template +109 -0
- package/.flowdeck/_energy/PROJECTINSIGHTS.md.template +64 -0
- package/.flowdeck/_energy/SPEC.md.template +101 -0
- package/.flowdeck/_frozen/FROZEN.md +4 -0
- package/.flowdeck/_meld/MELD.md +4 -0
- package/.flowdeck/_stock/STOCK.md +4 -0
- package/.flowdeck/reframe/TODO.md +71 -0
- package/CHANGELOG.md +8 -0
- package/FLOWDECK.md +17 -0
- package/README.md +85 -0
- package/dist/cli.js +954 -0
- package/package.json +34 -0
- package/src/__tests__/init.test.ts +74 -0
- package/src/__tests__/loaders/config.test.ts +54 -0
- package/src/__tests__/loaders/prompts.test.ts +116 -0
- package/src/__tests__/loaders/resources.test.ts +86 -0
- package/src/__tests__/loaders/tools.test.ts +128 -0
- package/src/__tests__/pack.test.ts +98 -0
- package/src/__tests__/validate.test.ts +152 -0
- package/src/cli.ts +76 -0
- package/src/commands/compile.ts +163 -0
- package/src/commands/init.ts +145 -0
- package/src/commands/pack.ts +52 -0
- package/src/commands/publish.ts +17 -0
- package/src/commands/run.ts +101 -0
- package/src/commands/validate.ts +70 -0
- package/src/compiler/merge-tools.ts +99 -0
- package/src/compiler/parse.ts +236 -0
- package/src/compiler/serialize.ts +100 -0
- package/src/compiler/types.ts +27 -0
- package/src/loaders/config.ts +25 -0
- package/src/loaders/prompts.ts +60 -0
- package/src/loaders/resources.ts +54 -0
- package/src/loaders/tools.ts +63 -0
- package/src/templates/prompts/greeting.md +11 -0
- package/src/templates/server.md +9 -0
- package/src/templates/tools/echo.md +15 -0
- package/tsconfig.json +10 -0
- package/tsup.config.ts +13 -0
- package/vitest.config.ts +12 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Open Questions"
|
|
3
|
+
type: planning
|
|
4
|
+
tags: [planning, scoping, ai-workflow]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Open Questions: {{PROJECT_NAME}}
|
|
8
|
+
|
|
9
|
+
**Date:** {{DATE}}
|
|
10
|
+
**Requested by:** {{AUTHOR}}
|
|
11
|
+
**Status:** Awaiting dev input
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<!--
|
|
16
|
+
INSTRUCTIONS FOR THE MODEL:
|
|
17
|
+
Your output must be this document with every section filled in. Do not write prose, summaries, or commentary outside the template structure.
|
|
18
|
+
The prompt below describes a project or feature in progress. Generate only the question categories and questions that are genuinely unknown and blocking or likely to affect the implementation.
|
|
19
|
+
- Do not include categories that are fully resolved by the prompt.
|
|
20
|
+
- Each question must have a clear "Why it matters" line so dev understands the impact of their answer.
|
|
21
|
+
- Provide answer scaffolding (checkbox options, blank field, or short list) appropriate to the question type.
|
|
22
|
+
- Do not invent questions for completeness — only ask what is actually unclear.
|
|
23
|
+
- Remove HTML comments from the final output.
|
|
24
|
+
- Do not add, remove, or reorder sections. You may omit entire categories if not relevant.
|
|
25
|
+
- End with the "How to return this doc" section unchanged.
|
|
26
|
+
-->
|
|
27
|
+
|
|
28
|
+
## Context
|
|
29
|
+
|
|
30
|
+
> {{PROMPT}}
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
<!-- For each relevant category below, list only the questions that are genuinely unresolved.
|
|
35
|
+
Omit the entire category block if nothing is unknown in that area. -->
|
|
36
|
+
|
|
37
|
+
## Scope & Goals
|
|
38
|
+
|
|
39
|
+
<!-- Q: What is in scope? What is explicitly out? What does "done" look like for v1? -->
|
|
40
|
+
|
|
41
|
+
**Q1:**
|
|
42
|
+
_Why it matters:_
|
|
43
|
+
- [ ] Option A
|
|
44
|
+
- [ ] Option B
|
|
45
|
+
- [ ] Other: ___
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Tech Stack & Environment
|
|
50
|
+
|
|
51
|
+
<!-- Q: Language, framework, runtime, deployment target, existing codebase constraints -->
|
|
52
|
+
|
|
53
|
+
**Q1:**
|
|
54
|
+
_Why it matters:_
|
|
55
|
+
Answer: ___
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Data & State
|
|
60
|
+
|
|
61
|
+
<!-- Q: Data sources, storage, schemas, persistence requirements, data ownership -->
|
|
62
|
+
|
|
63
|
+
**Q1:**
|
|
64
|
+
_Why it matters:_
|
|
65
|
+
Answer: ___
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Integrations & Dependencies
|
|
70
|
+
|
|
71
|
+
<!-- Q: External services, APIs, auth providers, third-party tools -->
|
|
72
|
+
|
|
73
|
+
**Q1:**
|
|
74
|
+
_Why it matters:_
|
|
75
|
+
Answer: ___
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Users & Behavior
|
|
80
|
+
|
|
81
|
+
<!-- Q: Who uses this? What do they do? Edge cases, error states, permissions -->
|
|
82
|
+
|
|
83
|
+
**Q1:**
|
|
84
|
+
_Why it matters:_
|
|
85
|
+
Answer: ___
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Constraints & Non-Negotiables
|
|
90
|
+
|
|
91
|
+
<!-- Q: Performance, security, compliance, deadlines, budget, team conventions -->
|
|
92
|
+
|
|
93
|
+
**Q1:**
|
|
94
|
+
_Why it matters:_
|
|
95
|
+
Answer: ___
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## How to Return This Doc
|
|
100
|
+
|
|
101
|
+
Fill in the answers above, then pass this document back as your next prompt.
|
|
102
|
+
You do not need to add context — the filled answers are enough to continue.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
*Provided by [mdblu](https://github.com/ruco-ai/mdblu)*
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
*Made with [mdblu](https://github.com/ruco-ai/mdblu) · source: `templates/OPEN-QUESTIONS.md.template`*
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Project Insights"
|
|
3
|
+
type: metadata
|
|
4
|
+
tags: [metadata, insights, ai-workflow]
|
|
5
|
+
repo: {{PROJECT_NAME}}
|
|
6
|
+
repo_url: {{REPO_URL}}
|
|
7
|
+
last_updated: {{DATE}}
|
|
8
|
+
privacy: local-only
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Project Insights: {{PROJECT_NAME}}
|
|
12
|
+
|
|
13
|
+
> Accumulated knowledge about this specific codebase. Written by Claude during sessions, read by Claude at session start. Never shared outside this machine — not even in xtage v1's collective pool.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Codebase Quirks
|
|
18
|
+
|
|
19
|
+
<!-- Non-obvious behavior, surprising implementation choices, things that bit you once -->
|
|
20
|
+
|
|
21
|
+
-
|
|
22
|
+
|
|
23
|
+
## Deploy & Operations Notes
|
|
24
|
+
|
|
25
|
+
<!-- How to run, debug, and deploy. Practical knowledge that isn't in the README -->
|
|
26
|
+
|
|
27
|
+
-
|
|
28
|
+
|
|
29
|
+
## Key Architectural Decisions
|
|
30
|
+
|
|
31
|
+
<!-- Decisions already made that Claude should not second-guess or relitigate -->
|
|
32
|
+
|
|
33
|
+
| Decision | Rationale |
|
|
34
|
+
|---|---|
|
|
35
|
+
| | |
|
|
36
|
+
|
|
37
|
+
## Known Issues & Technical Debt
|
|
38
|
+
|
|
39
|
+
<!-- Things that are broken, fragile, or intentionally deferred. Severity: low / medium / high -->
|
|
40
|
+
|
|
41
|
+
| Issue | Severity | Notes |
|
|
42
|
+
|---|---|---|
|
|
43
|
+
| | | |
|
|
44
|
+
|
|
45
|
+
## Refactoring Notes
|
|
46
|
+
|
|
47
|
+
<!-- Areas that need work and the right approach to take when the time comes -->
|
|
48
|
+
|
|
49
|
+
-
|
|
50
|
+
|
|
51
|
+
## Session Log
|
|
52
|
+
|
|
53
|
+
<!-- Auto-appended by Claude at session end via session-end MCP prompt. Most recent first. -->
|
|
54
|
+
|
|
55
|
+
| Date | Key learnings from this session |
|
|
56
|
+
|---|---|
|
|
57
|
+
| | |
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
*Generated by xtage {{TOOL_VERSION}} on {{DATE}} — updated by Claude at session end*
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
*Made with [mdblu](https://github.com/ruco-ai/mdblu) · source: `templates/PROJECTINSIGHTS.md.template`*
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Feature Specification"
|
|
3
|
+
type: planning
|
|
4
|
+
tags: [planning, specification, scoping]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Specification: {{PROJECT_NAME}}
|
|
8
|
+
|
|
9
|
+
**Date:** {{DATE}}
|
|
10
|
+
**Author:** {{AUTHOR}}
|
|
11
|
+
**Status:** Draft
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<!--
|
|
16
|
+
INSTRUCTIONS FOR THE MODEL:
|
|
17
|
+
Your output must be this document with every section filled in. Do not write prose, summaries, or commentary outside the template structure.
|
|
18
|
+
The prompt below is a description of a feature, system, or change to be specified. Use it to populate each section.
|
|
19
|
+
- Background & Motivation: explain the why, not restate the prompt.
|
|
20
|
+
- Goals and Non-Goals: explicit and derived from the prompt.
|
|
21
|
+
- Detailed Design: cover data model, interface, and behavior with real content.
|
|
22
|
+
- Fill all tables; add rows as needed.
|
|
23
|
+
- For genuinely unknown information, write "TBD — [what needs to be decided]".
|
|
24
|
+
- Remove HTML comments from the final output.
|
|
25
|
+
- Do not leave generic placeholder text or empty cells.
|
|
26
|
+
- Do not add, remove, or reorder sections.
|
|
27
|
+
-->
|
|
28
|
+
|
|
29
|
+
## Overview
|
|
30
|
+
|
|
31
|
+
> {{PROMPT}}
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Background & Motivation
|
|
36
|
+
|
|
37
|
+
<!-- Why is this needed? What problem does it solve? What happens without it? -->
|
|
38
|
+
|
|
39
|
+
## Goals
|
|
40
|
+
|
|
41
|
+
-
|
|
42
|
+
-
|
|
43
|
+
|
|
44
|
+
## Non-Goals
|
|
45
|
+
|
|
46
|
+
-
|
|
47
|
+
-
|
|
48
|
+
|
|
49
|
+
## Detailed Design
|
|
50
|
+
|
|
51
|
+
### Data Model
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
<!-- Describe entities and fields relevant to this spec -->
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### API / Interface
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
<!-- Function signatures, CLI flags, REST endpoints, or event schemas -->
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Behavior
|
|
64
|
+
|
|
65
|
+
<!-- Step-by-step description of what the system does, from input to output -->
|
|
66
|
+
|
|
67
|
+
## Error Handling
|
|
68
|
+
|
|
69
|
+
<!-- How does the system behave when things go wrong? -->
|
|
70
|
+
|
|
71
|
+
| Error Case | Behavior | User-Facing Message |
|
|
72
|
+
|------------|----------|---------------------|
|
|
73
|
+
| | | |
|
|
74
|
+
|
|
75
|
+
## Security Considerations
|
|
76
|
+
|
|
77
|
+
<!-- Authentication, authorization, input validation, data privacy -->
|
|
78
|
+
|
|
79
|
+
## Testing Plan
|
|
80
|
+
|
|
81
|
+
- [ ] TODO:
|
|
82
|
+
- [ ] TODO:
|
|
83
|
+
|
|
84
|
+
## Open Questions
|
|
85
|
+
|
|
86
|
+
<!-- Unresolved decisions that need answers before or during implementation -->
|
|
87
|
+
|
|
88
|
+
- [ ] TODO:
|
|
89
|
+
|
|
90
|
+
## Alternatives Considered
|
|
91
|
+
|
|
92
|
+
| Alternative | Pros | Cons | Decision |
|
|
93
|
+
|-------------|------|------|----------|
|
|
94
|
+
| | | | |
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
*Provided by [mdblu](https://github.com/ruco-ai/mdblu)*
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
*Made with [mdblu](https://github.com/ruco-ai/mdblu) · source: `templates/SPEC.md.template`*
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# mcpill
|
|
2
|
+
|
|
3
|
+
`@ruco-ai/mcpill@1.0.2` is published; `mcpill` unscoped is **free** and needs claiming. CLI for building, validating, and publishing MCP servers using the pill format. Same migration pattern as mcpster and xtage: publish unscoped, deprecate scoped, do not unpublish. Existing package is also missing `repository` and `homepage` metadata — fix on the way through. Move canonical home to `mcpill.ruco.dev`.
|
|
4
|
+
|
|
5
|
+
## BOT
|
|
6
|
+
|
|
7
|
+
- [x] Grep repo for all `@ruco-ai/mcpill` and `@ruco-ai/` references (code, docs, examples, CLI help text, generated pill manifests, error messages)
|
|
8
|
+
> Found and updated in package.json, src/commands/{run,pack,init,compile}.ts, src/loaders/prompts.ts, src/__tests__/pack.test.ts, README.md
|
|
9
|
+
- [x] Update `package.json`:
|
|
10
|
+
- `name`: change from `@ruco-ai/mcpill` to `mcpill`
|
|
11
|
+
- `homepage`: `https://mcpill.ruco.dev` (currently missing)
|
|
12
|
+
- `repository`: set to GitHub URL (currently missing — confirm canonical repo path with HUMAN)
|
|
13
|
+
- `bugs.url`: matching GitHub issues URL (currently missing)
|
|
14
|
+
- `version`: bump to next minor for the rename milestone (e.g., 1.0.2 → 1.1.0)
|
|
15
|
+
> name → mcpill, version → 1.1.0, homepage/repository/bugs added; deps updated to mcpill-runtime and mcpster (unscoped)
|
|
16
|
+
- [x] Update README:
|
|
17
|
+
- Install command to `npm install mcpill` (drop scope)
|
|
18
|
+
- Add "Renamed from `@ruco-ai/mcpill`" note near the top with one-line migration guidance
|
|
19
|
+
- Refresh any usage examples that show the old scope
|
|
20
|
+
- Confirm the description matches the package.json description ("CLI for building, validating, and publishing MCP servers using the pill format")
|
|
21
|
+
> Added rename note + migration command; updated pack section to mcpill-runtime (unscoped)
|
|
22
|
+
- [x] Update CLI help strings, error messages, version banner, and example output to use unscoped name
|
|
23
|
+
> Version banner reads dynamically from package.json (no change needed); no other hardcoded scoped strings in CLI layer
|
|
24
|
+
- [x] Audit any generated artifacts (pill manifests, scaffolded files) for hardcoded references to the old scope
|
|
25
|
+
> Updated init.ts (scaffolded tools.js template) and compile.ts (generated tools.js); pack.ts (bin/server.js template + injected dep key)
|
|
26
|
+
- [x] If mcpill depends on or interacts with `mcpster`, ensure the dependency is the unscoped `mcpster` (not `@ruco-ai/mcpster`) in package.json
|
|
27
|
+
> Changed to mcpster in package.json and src/commands/run.ts
|
|
28
|
+
- [x] Add CHANGELOG entry: `1.1.0 — Renamed to mcpill; @ruco-ai/mcpill deprecated; canonical home now mcpill.ruco.dev; repository and homepage metadata added`
|
|
29
|
+
> Created CHANGELOG.md (file didn't exist); entry also notes mcpill-runtime rename
|
|
30
|
+
- [x] Draft GitHub repo description for HUMAN to paste
|
|
31
|
+
> CLI for building, validating, and publishing MCP servers using the pill format.
|
|
32
|
+
|
|
33
|
+
## HUMAN
|
|
34
|
+
|
|
35
|
+
- [x] **Prereq:** `ruco.dev` registered, `*.ruco.dev` wildcard DNS configured
|
|
36
|
+
- [x] **Prereq:** mcpster card complete if mcpill depends on it (so the dependency resolves to the unscoped name)
|
|
37
|
+
- [ ] Provision `mcpill.ruco.dev` (landing page or 301 to GitHub README for now)
|
|
38
|
+
- [x] Confirm canonical GitHub repo URL for BOT to set in package.json
|
|
39
|
+
>github.com/ruco-dev/mcpill
|
|
40
|
+
- [x] Is `@ruco-ai/mcpill-runtime` also being renamed (e.g. to `mcpill-runtime`)?
|
|
41
|
+
> _answer:_yes
|
|
42
|
+
- [x] Review BOT changes
|
|
43
|
+
- [ ] `npm publish` (first publish under the unscoped name — claims it permanently)
|
|
44
|
+
- [ ] `npm deprecate "@ruco-ai/mcpill" "*" "Renamed to mcpill — please install 'mcpill' instead. See https://mcpill.ruco.dev"`
|
|
45
|
+
- [ ] Commit + push
|
|
46
|
+
- [ ] Update GitHub repo description and topics
|
|
47
|
+
- [ ] Verify: `npm view mcpill` shows the new package owned by you; `npm install @ruco-ai/mcpill` shows the deprecation message; `mcpill --version` reports 1.1.0
|
|
48
|
+
|
|
49
|
+
#### COMMENTS
|
|
50
|
+
|
|
51
|
+
**Grep task** — `@ruco-ai/mcpster` appears in `package.json` (dependencies) and `src/commands/run.ts:4` (`import { createServer } from "@ruco-ai/mcpster"`). The mcpster card is confirmed complete, so both become `mcpster`. Straightforward find-and-replace.
|
|
52
|
+
|
|
53
|
+
**`@ruco-ai/mcpill-runtime` is a separate scope** — The card targets `@ruco-ai/mcpill` → `mcpill`, but `@ruco-ai/mcpill-runtime` is a *different package* used heavily throughout:
|
|
54
|
+
- `src/commands/run.ts:3` — runtime import in this CLI
|
|
55
|
+
- `src/commands/pack.ts:7,44-45` — written into the user's generated `bin/server.js` and injected into the user's `package.json` as a dependency
|
|
56
|
+
- `src/commands/init.ts:4` — written into scaffolded `.mcpill/tools.js`
|
|
57
|
+
- `src/commands/compile.ts:18` — written into generated handler stubs
|
|
58
|
+
- `package.json` — both `dependencies` and `devDependencies`
|
|
59
|
+
- `src/__tests__/pack.test.ts:72` — test assertion
|
|
60
|
+
|
|
61
|
+
**This is the blocking question above.** If `mcpill-runtime` is NOT being renamed in this card, the BOT's "audit generated artifacts" task finds these references but leaves them untouched (correct behavior, documenting a runtime dep). If it IS being renamed, the scope of changes doubles and the test at `pack.test.ts:72` needs updating too.
|
|
62
|
+
|
|
63
|
+
**`devDependencies` oddity** — `"@ruco-ai/mcpill-runtime": "file:../mcpill/packages/mcpill"` is a local monorepo override for development. The path `../mcpill/packages/mcpill` doesn't appear in this repo's file tree (no `packages/` folder visible). BOT should leave this untouched unless HUMAN clarifies it's broken.
|
|
64
|
+
|
|
65
|
+
**README is already mostly clean** — `npm install -g mcpill` is already unscoped. The rename note and migration guidance are the only missing pieces. The `### mcpill pack` section documents `@ruco-ai/mcpill-runtime` in the code example — update only if the runtime is also being renamed.
|
|
66
|
+
|
|
67
|
+
**CLI version banner** — `src/cli.ts:19` reads version dynamically from `package.json`; no hardcoded string to update there.
|
|
68
|
+
|
|
69
|
+
**CHANGELOG.md doesn't exist** — BOT will need to create the file, not just append to it.
|
|
70
|
+
|
|
71
|
+
**GitHub repo description draft** — concrete deliverable BOT can do with no dependencies; a one-liner like: `CLI for building, validating, and publishing MCP servers using the pill format.`
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.1.0
|
|
4
|
+
|
|
5
|
+
- Renamed to `mcpill`; `@ruco-ai/mcpill` deprecated — install `mcpill` instead
|
|
6
|
+
- `mcpill-runtime` renamed from `@ruco-ai/mcpill-runtime`
|
|
7
|
+
- Canonical home: https://mcpill.ruco.dev
|
|
8
|
+
- Added `repository`, `homepage`, and `bugs` metadata to package.json
|
package/FLOWDECK.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Project
|
|
2
|
+
|
|
3
|
+
## Vision
|
|
4
|
+
|
|
5
|
+
<!-- One paragraph describing what this project does and why it exists. -->
|
|
6
|
+
|
|
7
|
+
## Current state
|
|
8
|
+
|
|
9
|
+
<!-- Bullet list of shipped capabilities. Update this after each meld. -->
|
|
10
|
+
|
|
11
|
+
- (no capabilities shipped yet)
|
|
12
|
+
|
|
13
|
+
## Known gaps
|
|
14
|
+
|
|
15
|
+
<!-- Open known issues or missing pieces. Update this after each meld. -->
|
|
16
|
+
|
|
17
|
+
- (none recorded yet)
|
package/README.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# mcpill
|
|
2
|
+
|
|
3
|
+
CLI for building, validating, and publishing MCP servers using the pill format.
|
|
4
|
+
|
|
5
|
+
> **Renamed from `@ruco-ai/mcpill`** — if you have the scoped package, run `npm uninstall -g @ruco-ai/mcpill && npm install -g mcpill`.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g mcpill
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Author workflow
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
mcpill init # scaffold server.md + tools/ + prompts/
|
|
17
|
+
# write your tools, prompts, resources
|
|
18
|
+
mcpill compile # compile server.md → .<name>/ pill artifact
|
|
19
|
+
mcpill validate # validate the pill artifact
|
|
20
|
+
mcpill run # start the MCP server locally (dev)
|
|
21
|
+
mcpill pack # prepare bin/server.js + package.json for npm
|
|
22
|
+
mcpill publish # pack + npm publish
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Commands
|
|
26
|
+
|
|
27
|
+
### `mcpill init`
|
|
28
|
+
|
|
29
|
+
Scaffolds a new project in the current directory:
|
|
30
|
+
|
|
31
|
+
- `server.md` — Config + Resources in human-readable Markdown
|
|
32
|
+
- `tools/echo.md` — example tool
|
|
33
|
+
- `prompts/greeting.md` — example prompt
|
|
34
|
+
- `.mcpill/` — pre-compiled pill artifact
|
|
35
|
+
- `package.json` — with `pack` and `publish` scripts ready
|
|
36
|
+
|
|
37
|
+
### `mcpill compile`
|
|
38
|
+
|
|
39
|
+
Compiles `server.md` + `tools/*.md` + `prompts/*.md` into a `.<name>/` pill artifact.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
mcpill compile # forward: source → pill
|
|
43
|
+
mcpill compile --to-md # reverse: pill → source
|
|
44
|
+
mcpill compile --strict # error on missing tool handlers (default: stub)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### `mcpill validate`
|
|
48
|
+
|
|
49
|
+
Validates all pill directories (`.<name>/`) in the project root.
|
|
50
|
+
|
|
51
|
+
### `mcpill run`
|
|
52
|
+
|
|
53
|
+
Starts the MCP server from the pill artifact.
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
mcpill run # stdio (default)
|
|
57
|
+
mcpill run --transport http --port 3333
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### `mcpill pack`
|
|
61
|
+
|
|
62
|
+
Prepares the pill for npm distribution:
|
|
63
|
+
|
|
64
|
+
1. Validates the pill artifact
|
|
65
|
+
2. Writes `bin/server.js`:
|
|
66
|
+
|
|
67
|
+
```js
|
|
68
|
+
import { runPill } from 'mcpill-runtime';
|
|
69
|
+
runPill();
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
3. Merges into `package.json`: sets `type: "module"`, `bin`, and `dependencies["mcpill-runtime"]`. Does not overwrite existing `name` or `version`.
|
|
73
|
+
|
|
74
|
+
### `mcpill publish`
|
|
75
|
+
|
|
76
|
+
Runs `mcpill pack` then publishes to npm.
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
mcpill publish # npm publish --access public
|
|
80
|
+
mcpill publish --access restricted
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Options
|
|
84
|
+
|
|
85
|
+
All commands accept `--dir <path>` to target a directory other than the current working directory.
|