shelbymcp 0.2.4 → 0.2.6
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/README.md +56 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +4 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/migrate.d.ts +2 -0
- package/dist/cli/migrate.d.ts.map +1 -0
- package/dist/cli/migrate.js +41 -0
- package/dist/cli/migrate.js.map +1 -0
- package/dist/cli/onboard.d.ts +2 -0
- package/dist/cli/onboard.d.ts.map +1 -0
- package/dist/cli/onboard.js +23 -0
- package/dist/cli/onboard.js.map +1 -0
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +90 -47
- package/dist/cli/setup.js.map +1 -1
- package/dist/config.d.ts +2 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -1
- package/dist/config.js.map +1 -1
- package/dist/db/database.d.ts +10 -0
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/database.js +30 -0
- package/dist/db/database.js.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +220 -26
- package/dist/mcp/server.js.map +1 -1
- package/package.json +1 -1
- package/skills/shelby-onboard/SKILL.md +151 -0
package/README.md
CHANGED
|
@@ -89,7 +89,25 @@ shelbymcp protocol >> ~/.gemini/GEMINI.md # Gemini
|
|
|
89
89
|
|
|
90
90
|
For Cursor, paste into **Settings > Rules > User Rules**. For Claude Desktop, paste into **Settings > General > "What personal preferences should Claude consider in responses?"**. The Memory Protocol tells your agent *when* to save and search — without it, the tools are available but won't be used proactively.
|
|
91
91
|
|
|
92
|
-
### 4.
|
|
92
|
+
### 4. Seed Your Memory
|
|
93
|
+
|
|
94
|
+
Your database is empty after install. There are three ways to make it useful immediately:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Option A: Run the onboarding interview (recommended)
|
|
98
|
+
# Paste this into a conversation — it asks a few questions and saves 15-30 memories
|
|
99
|
+
shelbymcp onboard
|
|
100
|
+
|
|
101
|
+
# Option B: Import from another AI tool
|
|
102
|
+
# Paste this prompt into ChatGPT/Claude/Gemini, copy the response back
|
|
103
|
+
shelbymcp migrate
|
|
104
|
+
|
|
105
|
+
# Option C: Just start working — memories accumulate naturally over time
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
The **onboard** skill runs a conversational interview covering who you are, what you're building, your team, preferences, and anti-patterns. Takes about 5 minutes. The **migrate** prompt tells your other AI tools to export everything they know about you in a structured format that ShelbyMCP can import.
|
|
109
|
+
|
|
110
|
+
### 5. Verify
|
|
93
111
|
|
|
94
112
|
Ask your agent: *"What memory tools do you have available?"*
|
|
95
113
|
|
|
@@ -194,6 +212,41 @@ ShelbyMCP works fine without it — you get persistent storage, FTS5 search, and
|
|
|
194
212
|
|
|
195
213
|
---
|
|
196
214
|
|
|
215
|
+
## Getting Started: Onboard & Migrate
|
|
216
|
+
|
|
217
|
+
An empty memory database is a cold start problem — your AI tools can't personalize until they know something about you. ShelbyMCP ships with two tools to solve this:
|
|
218
|
+
|
|
219
|
+
### The Onboard Skill (recommended)
|
|
220
|
+
|
|
221
|
+
A one-time conversational interview that seeds 15-30 foundational memories. Paste the prompt into a conversation with your primary AI tool:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
shelbymcp onboard
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
It covers:
|
|
228
|
+
- **Who you are** — name, role, expertise
|
|
229
|
+
- **What you're building** — projects, goals, tech stack
|
|
230
|
+
- **Who you work with** — team, roles, stakeholders
|
|
231
|
+
- **How you like to work** — communication style, coding preferences, AI interaction style
|
|
232
|
+
- **What to avoid** — anti-patterns, pet peeves, past frustrations
|
|
233
|
+
|
|
234
|
+
Takes about 5 minutes. The skill adapts its questions based on your answers — if you're a solo founder, it won't ask about team structure. Memories are saved after each round so you can see them accumulate in real time.
|
|
235
|
+
|
|
236
|
+
### The Migrate Prompt
|
|
237
|
+
|
|
238
|
+
Already have context stored in ChatGPT, Claude, Gemini, or another AI? Export it:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
shelbymcp migrate
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
This prints a prompt you paste into your other AI tool. That tool dumps everything it knows about you in a structured format. Copy the response back into your ShelbyMCP-connected agent — the onboard skill will parse and import it, or you can just paste it into any conversation and ask the agent to import it.
|
|
245
|
+
|
|
246
|
+
Works with any AI that has memory or conversation history about you. Run it once per tool you're migrating from.
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
197
250
|
## CLI Reference
|
|
198
251
|
|
|
199
252
|
```
|
|
@@ -203,6 +256,8 @@ shelbymcp setup <agent> --forage ...and install the Forage skill
|
|
|
203
256
|
shelbymcp uninstall <agent> Remove ShelbyMCP from an agent
|
|
204
257
|
shelbymcp protocol Print the Memory Protocol
|
|
205
258
|
shelbymcp forage Print the Forage skill prompt
|
|
259
|
+
shelbymcp onboard Print the onboarding interview prompt
|
|
260
|
+
shelbymcp migrate Print the migration prompt for other AI tools
|
|
206
261
|
shelbymcp help Show help
|
|
207
262
|
shelbymcp --version Print version
|
|
208
263
|
```
|
package/dist/cli/help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,IAAI,IAAI,CAqChC"}
|
package/dist/cli/help.js
CHANGED
|
@@ -8,6 +8,8 @@ Usage:
|
|
|
8
8
|
shelbymcp uninstall <agent> Remove ShelbyMCP from an agent
|
|
9
9
|
shelbymcp protocol Print the Memory Protocol
|
|
10
10
|
shelbymcp forage Print the Forage skill prompt
|
|
11
|
+
shelbymcp onboard Print the onboarding interview prompt
|
|
12
|
+
shelbymcp migrate Print the migration prompt for other AI tools
|
|
11
13
|
shelbymcp help Show this help
|
|
12
14
|
|
|
13
15
|
Setup agents:
|
|
@@ -29,6 +31,8 @@ Examples:
|
|
|
29
31
|
shelbymcp setup claude-code Auto-configure Claude Code CLI
|
|
30
32
|
shelbymcp protocol >> CLAUDE.md Append Memory Protocol to your rules
|
|
31
33
|
shelbymcp forage > forage-task.md Save Forage prompt for scheduling
|
|
34
|
+
shelbymcp onboard Get started with the onboarding interview
|
|
35
|
+
shelbymcp migrate Export memories from ChatGPT/Gemini/etc.
|
|
32
36
|
|
|
33
37
|
Docs: https://github.com/Studio-Moser/shelbymcp/docs/AGENT-SETUP.md`);
|
|
34
38
|
}
|
package/dist/cli/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oEAmCsD,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"AAmCA,wBAAgB,YAAY,IAAI,IAAI,CAOnC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const MIGRATE_PROMPT = `I'm moving my AI memory to a new system. I need you to export everything you know about me in a structured format.
|
|
2
|
+
|
|
3
|
+
Go through your memory, conversation history, and any context you have about me. For each distinct piece of information, output it as a block in this exact format:
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
type: [reference | decision | insight | task | note]
|
|
7
|
+
summary: [One line, under 100 characters — the key fact]
|
|
8
|
+
topics: [comma-separated tags]
|
|
9
|
+
people: [comma-separated names, if any]
|
|
10
|
+
---
|
|
11
|
+
[The full detail about this item. Be specific — include names, dates, tools, and reasoning.]
|
|
12
|
+
|
|
13
|
+
Use these types:
|
|
14
|
+
- **reference** — Facts about me, my role, my team, my projects, my tech stack
|
|
15
|
+
- **decision** — Preferences, rules, choices I've made about how I work or how AI should behave
|
|
16
|
+
- **insight** — Non-obvious things you've learned about my work or domain
|
|
17
|
+
- **task** — Active goals, deadlines, or things I'm working toward
|
|
18
|
+
- **note** — Anything else worth remembering that doesn't fit the above
|
|
19
|
+
|
|
20
|
+
Cover these areas (skip any you don't have information about):
|
|
21
|
+
1. **Who I am** — Name, role, company, expertise, background, location, personal interests
|
|
22
|
+
2. **What I'm building** — Active projects, goals, tech stack, architecture decisions
|
|
23
|
+
3. **Who I work with** — Team members, their roles, key relationships
|
|
24
|
+
4. **How I like to work** — Communication preferences, code style, what role I want AI to play
|
|
25
|
+
5. **What to avoid** — Anti-patterns, pet peeves, things I've corrected you about
|
|
26
|
+
6. **Corrections and behavioral rules** — Things I've repeatedly asked you to do differently, specific instructions I've given about how to respond
|
|
27
|
+
7. **Key decisions** — Important choices I've made and why, including things I changed my mind about
|
|
28
|
+
8. **Active context** — Current deadlines, blockers, priorities
|
|
29
|
+
9. **Learning and growth** — Skills I'm developing, things I'm trying to get better at
|
|
30
|
+
10. **Anything else** — Personal context, values, habits, or patterns you've noticed
|
|
31
|
+
|
|
32
|
+
Be thorough. Include everything you'd want a new AI assistant to know about me on day one. Don't summarize or compress — detail is valuable. Preserve my exact words when possible.
|
|
33
|
+
|
|
34
|
+
Output ONLY the formatted blocks, no introduction or conclusion.`;
|
|
35
|
+
export function printMigrate() {
|
|
36
|
+
console.error("Paste this prompt into any AI tool that knows about you (ChatGPT, Claude, Gemini, etc.).\n" +
|
|
37
|
+
"Copy the response and paste it into your ShelbyMCP-connected agent during onboarding.\n" +
|
|
38
|
+
"The onboard skill will parse and import it automatically.\n");
|
|
39
|
+
console.log(MIGRATE_PROMPT);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iEAiC0C,CAAC;AAElE,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,KAAK,CACX,4FAA4F;QAC5F,yFAAyF;QACzF,6DAA6D,CAC9D,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/cli/onboard.ts"],"names":[],"mappings":"AASA,wBAAgB,YAAY,IAAI,IAAI,CAgBnC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { resolve, dirname } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
function getSkillPath() {
|
|
5
|
+
const thisFile = fileURLToPath(import.meta.url);
|
|
6
|
+
return resolve(dirname(thisFile), "..", "..", "skills", "shelby-onboard", "SKILL.md");
|
|
7
|
+
}
|
|
8
|
+
export function printOnboard() {
|
|
9
|
+
console.error("Paste this into a conversation with your primary AI tool.\n" +
|
|
10
|
+
"It will run an interactive interview and seed your ShelbyMCP memory.\n" +
|
|
11
|
+
"Run once — after that, memories accumulate naturally.\n");
|
|
12
|
+
try {
|
|
13
|
+
const skill = readFileSync(getSkillPath(), "utf-8");
|
|
14
|
+
// Strip YAML frontmatter — agents don't need it when pasted directly
|
|
15
|
+
const body = skill.replace(/^---[\s\S]*?---\n*/, "");
|
|
16
|
+
console.log(body);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
console.error("Could not read skills/shelby-onboard/SKILL.md from the package.");
|
|
20
|
+
console.error("Reinstall: npm install -g shelbymcp");
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=onboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../src/cli/onboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,SAAS,YAAY;IACnB,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,KAAK,CACX,6DAA6D;QAC7D,wEAAwE;QACxE,yDAAyD,CAC1D,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,YAAY,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;QACpD,qEAAqE;QACrE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACjF,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
|
package/dist/cli/setup.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function runSetup(agent: string | undefined, forage: boolean): void;
|
|
1
|
+
export declare function runSetup(agent: string | undefined, forage: boolean, onboard?: boolean): void;
|
|
2
2
|
//# sourceMappingURL=setup.d.ts.map
|
package/dist/cli/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AAwfA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAkD5F"}
|
package/dist/cli/setup.js
CHANGED
|
@@ -77,6 +77,47 @@ function appendProtocolToFile(filePath) {
|
|
|
77
77
|
appendFileSync(filePath, "\n" + MEMORY_PROTOCOL + "\n");
|
|
78
78
|
console.log(`\nMemory Protocol added to ${filePath}`);
|
|
79
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Build the TOML block for a Codex MCP server entry.
|
|
82
|
+
* Handles nvm detection the same way buildServerCommand() does for JSON configs.
|
|
83
|
+
*/
|
|
84
|
+
function buildTomlBlock(serverKey = "shelbymcp") {
|
|
85
|
+
const cmd = buildServerCommand();
|
|
86
|
+
const lines = [`[mcp_servers.${serverKey}]`];
|
|
87
|
+
lines.push(`command = ${JSON.stringify(cmd.command)}`);
|
|
88
|
+
lines.push(`args = ${JSON.stringify(cmd.args)}`);
|
|
89
|
+
if (cmd.env) {
|
|
90
|
+
lines.push("[mcp_servers." + serverKey + ".env]");
|
|
91
|
+
for (const [k, v] of Object.entries(cmd.env)) {
|
|
92
|
+
lines.push(`${k} = ${JSON.stringify(v)}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return lines.join("\n");
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Merge a ShelbyMCP server entry into a TOML config file.
|
|
99
|
+
* Does a simple text-based check/append — avoids pulling in a TOML parser dependency.
|
|
100
|
+
*/
|
|
101
|
+
function mergeTomlConfig(filePath, serverKey = "shelbymcp") {
|
|
102
|
+
let existing = "";
|
|
103
|
+
if (existsSync(filePath)) {
|
|
104
|
+
existing = readFileSync(filePath, "utf-8");
|
|
105
|
+
if (existing.includes(`[mcp_servers.${serverKey}]`)) {
|
|
106
|
+
console.log(`"${serverKey}" server already exists in ${filePath}`);
|
|
107
|
+
console.log("To reconfigure, remove the existing entry first.");
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const dir = dirname(filePath);
|
|
112
|
+
if (!existsSync(dir)) {
|
|
113
|
+
mkdirSync(dir, { recursive: true });
|
|
114
|
+
}
|
|
115
|
+
const block = buildTomlBlock(serverKey);
|
|
116
|
+
const content = existing ? existing.trimEnd() + "\n\n" + block + "\n" : block + "\n";
|
|
117
|
+
writeFileSync(filePath, content);
|
|
118
|
+
console.log(`Added ShelbyMCP to ${filePath}`);
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
80
121
|
function mergeJsonConfig(filePath, serverEntry, serverKey = "shelbymcp") {
|
|
81
122
|
let config = {};
|
|
82
123
|
if (existsSync(filePath)) {
|
|
@@ -114,7 +155,8 @@ function printForageInstructions(agent) {
|
|
|
114
155
|
console.log(" 2. Create a new local task, set frequency to Daily");
|
|
115
156
|
console.log(" 3. Paste the Forage prompt: run `shelbymcp forage` to get it");
|
|
116
157
|
console.log("");
|
|
117
|
-
console.log("
|
|
158
|
+
console.log("Optional: Add this to your Profile Preferences");
|
|
159
|
+
console.log(" (Settings > General > personal preferences):");
|
|
118
160
|
console.log("");
|
|
119
161
|
console.log(" When starting a conversation, check ShelbyMCP for items that need attention:");
|
|
120
162
|
console.log(' use `list_thoughts` with `topic: "needs-attention"` and `limit: 5`.');
|
|
@@ -179,9 +221,9 @@ function setupClaudeCode(forage) {
|
|
|
179
221
|
console.log("\nCould not add automatically. Run manually:");
|
|
180
222
|
console.log(" claude mcp add -s user -t stdio shelbymcp -- npx shelbymcp");
|
|
181
223
|
}
|
|
182
|
-
//
|
|
183
|
-
|
|
184
|
-
|
|
224
|
+
// Claude Code supports MCP prompts — the Memory Protocol is served
|
|
225
|
+
// directly from the MCP server. No need to append to CLAUDE.md.
|
|
226
|
+
console.log("\nMemory Protocol is available via MCP prompts (no rules file needed).");
|
|
185
227
|
if (!forage) {
|
|
186
228
|
console.log("\nShelbyMCP installed for Claude Code!");
|
|
187
229
|
}
|
|
@@ -237,11 +279,8 @@ function setupClaudeDesktop(forage) {
|
|
|
237
279
|
console.log("\nIMPORTANT: Quit and restart Claude Desktop after editing.");
|
|
238
280
|
console.log("\nNote: Claude Desktop and Claude Code CLI have separate configs.");
|
|
239
281
|
console.log("Setting up one does NOT configure the other.");
|
|
240
|
-
|
|
241
|
-
console.log("
|
|
242
|
-
console.log(" 2. Copy the output");
|
|
243
|
-
console.log(" 3. Open Settings > General > \"What personal preferences should Claude consider in responses?\"");
|
|
244
|
-
console.log(" 4. Paste the protocol text into that field");
|
|
282
|
+
// Claude Desktop supports MCP prompts — no need to paste protocol manually.
|
|
283
|
+
console.log("\nMemory Protocol is available via MCP prompts (no manual paste needed).");
|
|
245
284
|
if (forage) {
|
|
246
285
|
printForageInstructions("claude-desktop");
|
|
247
286
|
}
|
|
@@ -252,57 +291,43 @@ function setupCursor(forage) {
|
|
|
252
291
|
const entry = { type: "stdio", ...buildServerCommand() };
|
|
253
292
|
mergeJsonConfig(configPath, entry);
|
|
254
293
|
console.log("\nOr add via UI: Settings > Tools & MCP > New MCP Server");
|
|
255
|
-
|
|
256
|
-
console.log("
|
|
257
|
-
console.log(" 2. Under \"User Rules\", paste the output of: shelbymcp protocol");
|
|
258
|
-
console.log(" (This applies the Memory Protocol to all your Cursor projects)");
|
|
259
|
-
console.log("");
|
|
260
|
-
console.log(" Or, to add per-project instead, run from your project root:");
|
|
261
|
-
console.log(" mkdir -p .cursor/rules");
|
|
262
|
-
console.log(" shelbymcp protocol > .cursor/rules/shelbymcp.mdc");
|
|
263
|
-
console.log(" (Then prepend '---\\nalwaysApply: true\\n---\\n' to the file)");
|
|
294
|
+
// Cursor supports MCP prompts — no need to add rules files.
|
|
295
|
+
console.log("\nMemory Protocol is available via MCP prompts (no rules file needed).");
|
|
264
296
|
if (forage) {
|
|
265
297
|
printForageInstructions("cursor");
|
|
266
298
|
}
|
|
267
299
|
console.log("\nShelbyMCP MCP server installed for Cursor!");
|
|
268
300
|
}
|
|
269
301
|
function setupCodex(forage) {
|
|
302
|
+
const configPath = resolve(homedir(), ".codex/config.toml");
|
|
303
|
+
let installed = false;
|
|
304
|
+
// Try the CLI first, fall back to direct file write
|
|
270
305
|
try {
|
|
271
306
|
execSync(whichCmd("codex"), { stdio: "ignore" });
|
|
307
|
+
console.log("Adding ShelbyMCP to Codex...\n");
|
|
308
|
+
try {
|
|
309
|
+
const cmd = buildServerCommand();
|
|
310
|
+
const addCmd = `codex mcp add shelbymcp -- ${cmd.command} ${cmd.args.join(" ")}`;
|
|
311
|
+
execSync(addCmd, { stdio: "inherit" });
|
|
312
|
+
console.log("\nShelbyMCP added to Codex.");
|
|
313
|
+
installed = true;
|
|
314
|
+
}
|
|
315
|
+
catch {
|
|
316
|
+
console.log("\nCould not add via CLI. Writing config directly...");
|
|
317
|
+
}
|
|
272
318
|
}
|
|
273
319
|
catch {
|
|
274
|
-
|
|
275
|
-
console.log("Add this to ~/.codex/config.toml:\n");
|
|
276
|
-
console.log("[mcp_servers.shelbymcp]");
|
|
277
|
-
console.log('command = "npx"');
|
|
278
|
-
console.log('args = ["shelbymcp"]');
|
|
279
|
-
// Auto-append Memory Protocol to ~/.codex/AGENTS.md
|
|
280
|
-
const agentsMdPath = resolve(homedir(), ".codex/AGENTS.md");
|
|
281
|
-
appendProtocolToFile(agentsMdPath);
|
|
282
|
-
if (forage) {
|
|
283
|
-
printForageInstructions("codex");
|
|
284
|
-
}
|
|
285
|
-
console.log("\nShelbyMCP installed for Codex!");
|
|
286
|
-
return;
|
|
320
|
+
// Codex CLI not found — write directly
|
|
287
321
|
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
execSync("codex mcp add shelbymcp -- npx shelbymcp", { stdio: "inherit" });
|
|
291
|
-
console.log("\nShelbyMCP added to Codex.");
|
|
322
|
+
if (!installed) {
|
|
323
|
+
mergeTomlConfig(configPath);
|
|
292
324
|
}
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
console.log("[mcp_servers.shelbymcp]");
|
|
296
|
-
console.log('command = "npx"');
|
|
297
|
-
console.log('args = ["shelbymcp"]');
|
|
298
|
-
}
|
|
299
|
-
// Auto-append Memory Protocol to ~/.codex/AGENTS.md
|
|
300
|
-
const agentsMdPath = resolve(homedir(), ".codex/AGENTS.md");
|
|
301
|
-
appendProtocolToFile(agentsMdPath);
|
|
325
|
+
// Codex supports MCP prompts — no need to append to AGENTS.md.
|
|
326
|
+
console.log("\nMemory Protocol is available via MCP prompts (no rules file needed).");
|
|
302
327
|
if (forage) {
|
|
303
328
|
printForageInstructions("codex");
|
|
304
329
|
}
|
|
305
|
-
console.log("\nShelbyMCP installed for Codex!");
|
|
330
|
+
console.log("\nShelbyMCP installed for Codex (CLI, Desktop & IDE Extension)!");
|
|
306
331
|
}
|
|
307
332
|
function setupWindsurf(forage) {
|
|
308
333
|
const configPath = resolve(homedir(), ".codeium/windsurf/mcp_config.json");
|
|
@@ -391,9 +416,23 @@ function setupAntigravity(forage) {
|
|
|
391
416
|
// ---------------------------------------------------------------------------
|
|
392
417
|
// Entry point
|
|
393
418
|
// ---------------------------------------------------------------------------
|
|
394
|
-
|
|
419
|
+
function printOnboardInstructions() {
|
|
420
|
+
console.log("\n--- Get Started ---\n");
|
|
421
|
+
console.log("Your memory database is empty. To seed it with foundational context:");
|
|
422
|
+
console.log("");
|
|
423
|
+
console.log(" Option 1: Run the onboarding interview");
|
|
424
|
+
console.log(" Paste the output of `shelbymcp onboard` into a conversation.");
|
|
425
|
+
console.log(" It will ask a few questions and save 15-30 memories about you.");
|
|
426
|
+
console.log("");
|
|
427
|
+
console.log(" Option 2: Import from another AI tool");
|
|
428
|
+
console.log(" Run `shelbymcp migrate` and paste the prompt into ChatGPT/Gemini/etc.");
|
|
429
|
+
console.log(" Copy the response back into your ShelbyMCP-connected agent.");
|
|
430
|
+
console.log("");
|
|
431
|
+
console.log(" Or just start working — memories will accumulate naturally over time.");
|
|
432
|
+
}
|
|
433
|
+
export function runSetup(agent, forage, onboard) {
|
|
395
434
|
if (!agent) {
|
|
396
|
-
console.log("Usage: shelbymcp setup <agent> [--forage]\n");
|
|
435
|
+
console.log("Usage: shelbymcp setup <agent> [--forage] [--onboard]\n");
|
|
397
436
|
console.log("Agents:");
|
|
398
437
|
console.log(" claude-code Claude Code CLI");
|
|
399
438
|
console.log(" claude-desktop Claude Desktop app");
|
|
@@ -404,6 +443,7 @@ export function runSetup(agent, forage) {
|
|
|
404
443
|
console.log(" antigravity Antigravity (Google)");
|
|
405
444
|
console.log("\nFlags:");
|
|
406
445
|
console.log(" --forage Also set up the Forage enrichment skill");
|
|
446
|
+
console.log(" --onboard Show onboarding instructions after setup");
|
|
407
447
|
return;
|
|
408
448
|
}
|
|
409
449
|
if (!isAgent(agent)) {
|
|
@@ -434,5 +474,8 @@ export function runSetup(agent, forage) {
|
|
|
434
474
|
setupAntigravity(forage);
|
|
435
475
|
break;
|
|
436
476
|
}
|
|
477
|
+
if (onboard) {
|
|
478
|
+
printOnboardInstructions();
|
|
479
|
+
}
|
|
437
480
|
}
|
|
438
481
|
//# sourceMappingURL=setup.js.map
|
package/dist/cli/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -4,9 +4,10 @@ export interface ShelbyConfig {
|
|
|
4
4
|
logFile: string | null;
|
|
5
5
|
}
|
|
6
6
|
export interface CliCommand {
|
|
7
|
-
command: "help" | "setup" | "uninstall" | "protocol" | "forage";
|
|
7
|
+
command: "help" | "setup" | "uninstall" | "protocol" | "forage" | "onboard" | "migrate";
|
|
8
8
|
agent?: string;
|
|
9
9
|
forage?: boolean;
|
|
10
|
+
onboard?: boolean;
|
|
10
11
|
}
|
|
11
12
|
export declare function parseArgs(argv: string[]): ShelbyConfig | "version" | CliCommand;
|
|
12
13
|
export declare function getDefaultDbPath(): string;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAKD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU,CA6D/E;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
|
package/dist/config.js
CHANGED
|
@@ -10,8 +10,9 @@ export function parseArgs(argv) {
|
|
|
10
10
|
}
|
|
11
11
|
if (first === "setup") {
|
|
12
12
|
const forage = argv.includes("--forage");
|
|
13
|
+
const onboard = argv.includes("--onboard");
|
|
13
14
|
const agent = argv[1] && !argv[1].startsWith("--") ? argv[1] : undefined;
|
|
14
|
-
return { command: "setup", agent, forage };
|
|
15
|
+
return { command: "setup", agent, forage, onboard };
|
|
15
16
|
}
|
|
16
17
|
if (first === "uninstall") {
|
|
17
18
|
const agent = argv[1] && !argv[1].startsWith("--") ? argv[1] : undefined;
|
|
@@ -23,6 +24,12 @@ export function parseArgs(argv) {
|
|
|
23
24
|
if (first === "forage") {
|
|
24
25
|
return { command: "forage" };
|
|
25
26
|
}
|
|
27
|
+
if (first === "onboard") {
|
|
28
|
+
return { command: "onboard" };
|
|
29
|
+
}
|
|
30
|
+
if (first === "migrate") {
|
|
31
|
+
return { command: "migrate" };
|
|
32
|
+
}
|
|
26
33
|
// Parse flags for server mode
|
|
27
34
|
const config = {
|
|
28
35
|
dbPath: DEFAULT_DB_PATH,
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/db/database.d.ts
CHANGED
|
@@ -3,6 +3,16 @@ export declare class ThoughtDatabase {
|
|
|
3
3
|
readonly db: Database.Database;
|
|
4
4
|
constructor(dbPath: string);
|
|
5
5
|
getSchemaVersion(): number;
|
|
6
|
+
/**
|
|
7
|
+
* Return distinct values for a JSON array column (topics, people) that
|
|
8
|
+
* start with the given prefix. Used by MCP completion.
|
|
9
|
+
*/
|
|
10
|
+
getDistinctArrayValues(column: "topics" | "people", prefix: string, limit?: number): string[];
|
|
11
|
+
/**
|
|
12
|
+
* Return distinct scalar column values that start with the given prefix.
|
|
13
|
+
* Used by MCP completion for project, source, type.
|
|
14
|
+
*/
|
|
15
|
+
getDistinctValues(column: "project" | "source" | "type", prefix: string, limit?: number): string[];
|
|
6
16
|
close(): void;
|
|
7
17
|
}
|
|
8
18
|
//# sourceMappingURL=database.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAKtC,qBAAa,eAAe;IAC1B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;gBAEnB,MAAM,EAAE,MAAM;IAc1B,gBAAgB,IAAI,MAAM;IAI1B,KAAK,IAAI,IAAI;CAGd"}
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAKtC,qBAAa,eAAe;IAC1B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;gBAEnB,MAAM,EAAE,MAAM;IAc1B,gBAAgB,IAAI,MAAM;IAI1B;;;OAGG;IACH,sBAAsB,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,MAAM,EAAE;IAgBzF;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,MAAM,EAAE;IAc9F,KAAK,IAAI,IAAI;CAGd"}
|
package/dist/db/database.js
CHANGED
|
@@ -18,6 +18,36 @@ export class ThoughtDatabase {
|
|
|
18
18
|
getSchemaVersion() {
|
|
19
19
|
return getSchemaVersion(this.db);
|
|
20
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Return distinct values for a JSON array column (topics, people) that
|
|
23
|
+
* start with the given prefix. Used by MCP completion.
|
|
24
|
+
*/
|
|
25
|
+
getDistinctArrayValues(column, prefix, limit = 20) {
|
|
26
|
+
// topics and people are stored as JSON arrays, so we use json_each to
|
|
27
|
+
// explode them and then filter/dedupe.
|
|
28
|
+
const rows = this.db
|
|
29
|
+
.prepare(`SELECT DISTINCT je.value AS val
|
|
30
|
+
FROM thoughts, json_each(thoughts.${column}) AS je
|
|
31
|
+
WHERE je.value LIKE @prefix
|
|
32
|
+
ORDER BY je.value
|
|
33
|
+
LIMIT @limit`)
|
|
34
|
+
.all({ prefix: `${prefix}%`, limit });
|
|
35
|
+
return rows.map((r) => r.val);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Return distinct scalar column values that start with the given prefix.
|
|
39
|
+
* Used by MCP completion for project, source, type.
|
|
40
|
+
*/
|
|
41
|
+
getDistinctValues(column, prefix, limit = 20) {
|
|
42
|
+
const rows = this.db
|
|
43
|
+
.prepare(`SELECT DISTINCT ${column} AS val
|
|
44
|
+
FROM thoughts
|
|
45
|
+
WHERE ${column} IS NOT NULL AND ${column} LIKE @prefix
|
|
46
|
+
ORDER BY ${column}
|
|
47
|
+
LIMIT @limit`)
|
|
48
|
+
.all({ prefix: `${prefix}%`, limit });
|
|
49
|
+
return rows.map((r) => r.val);
|
|
50
|
+
}
|
|
21
51
|
close() {
|
|
22
52
|
this.db.close();
|
|
23
53
|
}
|
package/dist/db/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAElE,MAAM,OAAO,eAAe;IACjB,EAAE,CAAoB;IAE/B,YAAY,MAAc;QACxB,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1B,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAEpC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAED,gBAAgB;QACd,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAElE,MAAM,OAAO,eAAe;IACjB,EAAE,CAAoB;IAE/B,YAAY,MAAc;QACxB,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1B,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAEpC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAED,gBAAgB;QACd,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,sBAAsB,CAAC,MAA2B,EAAE,MAAc,EAAE,KAAK,GAAG,EAAE;QAC5E,sEAAsE;QACtE,uCAAuC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;6CACqC,MAAM;;;sBAG7B,CACf;aACA,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,EAAE,KAAK,EAAE,CAAsB,CAAC;QAE7D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,MAAqC,EAAE,MAAc,EAAE,KAAK,GAAG,EAAE;QACjF,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN,mBAAmB,MAAM;;iBAEhB,MAAM,oBAAoB,MAAM;oBAC7B,MAAM;sBACJ,CACf;aACA,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,EAAE,KAAK,EAAE,CAAsB,CAAC;QAE7D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CACF"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,8 @@ import { createServer } from "./mcp/server.js";
|
|
|
5
5
|
import { printHelp } from "./cli/help.js";
|
|
6
6
|
import { printProtocol } from "./cli/protocol.js";
|
|
7
7
|
import { printForage } from "./cli/forage.js";
|
|
8
|
+
import { printOnboard } from "./cli/onboard.js";
|
|
9
|
+
import { printMigrate } from "./cli/migrate.js";
|
|
8
10
|
import { runSetup } from "./cli/setup.js";
|
|
9
11
|
import { runUninstall } from "./cli/uninstall.js";
|
|
10
12
|
async function main() {
|
|
@@ -19,7 +21,7 @@ async function main() {
|
|
|
19
21
|
printHelp();
|
|
20
22
|
break;
|
|
21
23
|
case "setup":
|
|
22
|
-
runSetup(config.agent, config.forage ?? false);
|
|
24
|
+
runSetup(config.agent, config.forage ?? false, config.onboard);
|
|
23
25
|
break;
|
|
24
26
|
case "uninstall":
|
|
25
27
|
runUninstall(config.agent);
|
|
@@ -30,6 +32,12 @@ async function main() {
|
|
|
30
32
|
case "forage":
|
|
31
33
|
printForage();
|
|
32
34
|
break;
|
|
35
|
+
case "onboard":
|
|
36
|
+
printOnboard();
|
|
37
|
+
break;
|
|
38
|
+
case "migrate":
|
|
39
|
+
printMigrate();
|
|
40
|
+
break;
|
|
33
41
|
}
|
|
34
42
|
process.exit(0);
|
|
35
43
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QACtD,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,KAAK,MAAM;gBACT,SAAS,EAAE,CAAC;gBACZ,MAAM;YACR,KAAK,OAAO;gBACV,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;gBAC/
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QACtD,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,KAAK,MAAM;gBACT,SAAS,EAAE,CAAC;gBACZ,MAAM;YACR,KAAK,OAAO;gBACV,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC/D,MAAM;YACR,KAAK,WAAW;gBACd,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,MAAM;YACR,KAAK,UAAU;gBACb,aAAa,EAAE,CAAC;gBAChB,MAAM;YACR,KAAK,QAAQ;gBACX,WAAW,EAAE,CAAC;gBACd,MAAM;YACR,KAAK,SAAS;gBACZ,YAAY,EAAE,CAAC;gBACf,MAAM;YACR,KAAK,SAAS;gBACZ,YAAY,EAAE,CAAC;gBACf,MAAM;QACV,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACrD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAmBpD,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,eAAe,CAAA;CAAE,CAme7F"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { CompleteRequestSchema, SetLevelRequestSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
2
3
|
import { z } from "zod";
|
|
3
4
|
import { ThoughtDatabase } from "../db/database.js";
|
|
4
5
|
import { VALID_EDGE_TYPES } from "../db/edges.js";
|
|
@@ -11,12 +12,59 @@ import { handleDeleteThought } from "../tools/delete.js";
|
|
|
11
12
|
import { handleManageEdges, handleExploreGraph } from "../tools/graph.js";
|
|
12
13
|
import { handleThoughtStats } from "../tools/stats.js";
|
|
13
14
|
const VERSION = "0.1.0";
|
|
15
|
+
// Logging levels in order of severity (syslog-style)
|
|
16
|
+
const LOG_LEVELS = [
|
|
17
|
+
"debug", "info", "notice", "warning", "error", "critical", "alert", "emergency",
|
|
18
|
+
];
|
|
14
19
|
export function createServer(config) {
|
|
15
20
|
const server = new McpServer({
|
|
16
21
|
name: "shelbymcp",
|
|
17
22
|
version: VERSION,
|
|
18
23
|
});
|
|
19
24
|
const db = new ThoughtDatabase(config.dbPath);
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
// Logging
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Register the logging capability so clients know we emit structured logs.
|
|
29
|
+
// The client can adjust verbosity via logging/setLevel.
|
|
30
|
+
let currentLogLevel = "info";
|
|
31
|
+
server.server.registerCapabilities({ logging: {} });
|
|
32
|
+
server.server.setRequestHandler(SetLevelRequestSchema, async (request) => {
|
|
33
|
+
currentLogLevel = request.params.level;
|
|
34
|
+
return {};
|
|
35
|
+
});
|
|
36
|
+
function shouldLog(level) {
|
|
37
|
+
return LOG_LEVELS.indexOf(level) >= LOG_LEVELS.indexOf(currentLogLevel);
|
|
38
|
+
}
|
|
39
|
+
function log(level, logger, data) {
|
|
40
|
+
if (!shouldLog(level))
|
|
41
|
+
return;
|
|
42
|
+
server.sendLoggingMessage({ level, logger, data }).catch(() => {
|
|
43
|
+
// Swallow — client may have disconnected
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Wrap a tool handler to emit structured log messages on invocation and completion.
|
|
48
|
+
*/
|
|
49
|
+
function withLogging(toolName, handler) {
|
|
50
|
+
return async (args) => {
|
|
51
|
+
log("debug", toolName, { event: "invoked", args });
|
|
52
|
+
try {
|
|
53
|
+
const result = await handler(args);
|
|
54
|
+
if (result.isError) {
|
|
55
|
+
log("warning", toolName, { event: "error", message: result.content[0]?.text });
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
log("info", toolName, { event: "completed" });
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
log("error", toolName, { event: "exception", message: String(err) });
|
|
64
|
+
throw err;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
20
68
|
// --- capture_thought ---
|
|
21
69
|
server.registerTool("capture_thought", {
|
|
22
70
|
title: "Capture Thought",
|
|
@@ -55,9 +103,7 @@ export function createServer(config) {
|
|
|
55
103
|
.describe("Bulk capture: array of thoughts")
|
|
56
104
|
.optional(),
|
|
57
105
|
},
|
|
58
|
-
},
|
|
59
|
-
return handleCaptureThought(db, args);
|
|
60
|
-
});
|
|
106
|
+
}, withLogging("capture_thought", (args) => handleCaptureThought(db, args)));
|
|
61
107
|
// --- search_thoughts ---
|
|
62
108
|
server.registerTool("search_thoughts", {
|
|
63
109
|
title: "Search Thoughts",
|
|
@@ -79,9 +125,7 @@ export function createServer(config) {
|
|
|
79
125
|
type: z.string().describe("Filter by thought type").optional(),
|
|
80
126
|
project: z.string().describe("Filter by project").optional(),
|
|
81
127
|
},
|
|
82
|
-
},
|
|
83
|
-
return handleSearchThoughts(db, args);
|
|
84
|
-
});
|
|
128
|
+
}, withLogging("search_thoughts", (args) => handleSearchThoughts(db, args)));
|
|
85
129
|
// --- list_thoughts ---
|
|
86
130
|
server.registerTool("list_thoughts", {
|
|
87
131
|
title: "List Thoughts",
|
|
@@ -104,9 +148,7 @@ export function createServer(config) {
|
|
|
104
148
|
limit: z.number().describe("Max results (default 20, max 100)").optional(),
|
|
105
149
|
offset: z.number().describe("Pagination offset").optional(),
|
|
106
150
|
},
|
|
107
|
-
},
|
|
108
|
-
return handleListThoughts(db, args);
|
|
109
|
-
});
|
|
151
|
+
}, withLogging("list_thoughts", (args) => handleListThoughts(db, args)));
|
|
110
152
|
// --- get_thought ---
|
|
111
153
|
server.registerTool("get_thought", {
|
|
112
154
|
title: "Get Thought",
|
|
@@ -120,9 +162,7 @@ export function createServer(config) {
|
|
|
120
162
|
inputSchema: {
|
|
121
163
|
id: z.string().describe("Thought UUID"),
|
|
122
164
|
},
|
|
123
|
-
},
|
|
124
|
-
return handleGetThought(db, args);
|
|
125
|
-
});
|
|
165
|
+
}, withLogging("get_thought", (args) => handleGetThought(db, args)));
|
|
126
166
|
// --- update_thought ---
|
|
127
167
|
server.registerTool("update_thought", {
|
|
128
168
|
title: "Update Thought",
|
|
@@ -146,9 +186,7 @@ export function createServer(config) {
|
|
|
146
186
|
metadata: z.record(z.unknown()).describe("New metadata").optional(),
|
|
147
187
|
visibility: z.string().describe("New visibility").optional(),
|
|
148
188
|
},
|
|
149
|
-
},
|
|
150
|
-
return handleUpdateThought(db, args);
|
|
151
|
-
});
|
|
189
|
+
}, withLogging("update_thought", (args) => handleUpdateThought(db, args)));
|
|
152
190
|
// --- delete_thought ---
|
|
153
191
|
server.registerTool("delete_thought", {
|
|
154
192
|
title: "Delete Thought",
|
|
@@ -162,9 +200,7 @@ export function createServer(config) {
|
|
|
162
200
|
inputSchema: {
|
|
163
201
|
id: z.string().describe("Thought UUID to delete"),
|
|
164
202
|
},
|
|
165
|
-
},
|
|
166
|
-
return handleDeleteThought(db, args);
|
|
167
|
-
});
|
|
203
|
+
}, withLogging("delete_thought", (args) => handleDeleteThought(db, args)));
|
|
168
204
|
// --- manage_edges ---
|
|
169
205
|
server.registerTool("manage_edges", {
|
|
170
206
|
title: "Manage Edges",
|
|
@@ -184,9 +220,7 @@ export function createServer(config) {
|
|
|
184
220
|
.describe("Relationship type"),
|
|
185
221
|
metadata: z.record(z.unknown()).describe("Edge metadata").optional(),
|
|
186
222
|
},
|
|
187
|
-
},
|
|
188
|
-
return handleManageEdges(db, args);
|
|
189
|
-
});
|
|
223
|
+
}, withLogging("manage_edges", (args) => handleManageEdges(db, args)));
|
|
190
224
|
// --- explore_graph ---
|
|
191
225
|
server.registerTool("explore_graph", {
|
|
192
226
|
title: "Explore Graph",
|
|
@@ -208,9 +242,7 @@ export function createServer(config) {
|
|
|
208
242
|
.describe("Filter by edge types")
|
|
209
243
|
.optional(),
|
|
210
244
|
},
|
|
211
|
-
},
|
|
212
|
-
return handleExploreGraph(db, args);
|
|
213
|
-
});
|
|
245
|
+
}, withLogging("explore_graph", (args) => handleExploreGraph(db, args)));
|
|
214
246
|
// --- thought_stats ---
|
|
215
247
|
server.registerTool("thought_stats", {
|
|
216
248
|
title: "Thought Stats",
|
|
@@ -222,9 +254,171 @@ export function createServer(config) {
|
|
|
222
254
|
openWorldHint: false,
|
|
223
255
|
},
|
|
224
256
|
inputSchema: {},
|
|
225
|
-
},
|
|
226
|
-
|
|
257
|
+
}, withLogging("thought_stats", () => handleThoughtStats(db)));
|
|
258
|
+
// --- Resources ---
|
|
259
|
+
// Stub so that clients calling resources/list (e.g. Codex) get an empty
|
|
260
|
+
// list instead of "Method not found", which prevents them from registering
|
|
261
|
+
// the server.
|
|
262
|
+
server.registerResource("status", "shelbymcp://status", {
|
|
263
|
+
description: "ShelbyMCP server status",
|
|
264
|
+
}, async () => ({
|
|
265
|
+
contents: [{
|
|
266
|
+
uri: "shelbymcp://status",
|
|
267
|
+
text: JSON.stringify({ status: "ok", tools: 8, prompts: 3 }),
|
|
268
|
+
mimeType: "application/json",
|
|
269
|
+
}],
|
|
270
|
+
}));
|
|
271
|
+
// --- MCP Prompts ---
|
|
272
|
+
// These teach agents how to use ShelbyMCP effectively.
|
|
273
|
+
// Agents that support prompts get this automatically; the protocol
|
|
274
|
+
// appended to agent rules files (CLAUDE.md, AGENTS.md) is a fallback.
|
|
275
|
+
server.registerPrompt("memory-protocol", {
|
|
276
|
+
title: "Memory Protocol",
|
|
277
|
+
description: "Core rules for when and how to use ShelbyMCP. Read this at the start of every session.",
|
|
278
|
+
}, async () => ({
|
|
279
|
+
messages: [{
|
|
280
|
+
role: "user",
|
|
281
|
+
content: {
|
|
282
|
+
type: "text",
|
|
283
|
+
text: `# ShelbyMCP — Memory Protocol
|
|
284
|
+
|
|
285
|
+
You have persistent memory via ShelbyMCP tools. Memory survives across sessions and is shared across all AI tools the user works with. You MUST use it — do not rely on conversation context alone.
|
|
286
|
+
|
|
287
|
+
## When to SAVE (mandatory)
|
|
288
|
+
|
|
289
|
+
Call \`capture_thought\` after any of these events:
|
|
290
|
+
|
|
291
|
+
- **Decisions**: Architecture choices, library selections, tradeoffs
|
|
292
|
+
- **Preferences**: User likes/dislikes, workflow habits, coding style
|
|
293
|
+
- **People & roles**: Who does what
|
|
294
|
+
- **Project context**: Goals, deadlines, constraints, scope changes
|
|
295
|
+
- **Bugs & fixes**: Root cause discoveries, workarounds
|
|
296
|
+
- **Architecture & patterns**: System design, data flow, conventions
|
|
297
|
+
- **Insights**: Non-obvious learnings, things that surprised you
|
|
298
|
+
|
|
299
|
+
Always include: a \`summary\` (one-line, <100 chars), a \`type\`, relevant \`topics\`, and link to \`related_to\` thoughts when applicable.
|
|
300
|
+
|
|
301
|
+
## When to SEARCH (mandatory)
|
|
302
|
+
|
|
303
|
+
Call \`search_thoughts\` or \`list_thoughts\` before:
|
|
304
|
+
|
|
305
|
+
- Starting work on any task
|
|
306
|
+
- Making a decision — check for prior decisions on the same topic
|
|
307
|
+
- When something feels familiar — it probably is
|
|
308
|
+
- After context compaction — immediately search to recover session context
|
|
309
|
+
- When the user says "remember", "recall", "what do we know about", "what did we decide"
|
|
310
|
+
|
|
311
|
+
## What NOT to save
|
|
312
|
+
|
|
313
|
+
- Ephemeral debugging output (stack traces, log lines)
|
|
314
|
+
- Code content already in git — save the *decision*, not the code
|
|
315
|
+
- Transient conversation — save the conclusion, not the process
|
|
316
|
+
- Duplicates — search first, use \`update_thought\` instead of creating new ones`,
|
|
317
|
+
},
|
|
318
|
+
}],
|
|
319
|
+
}));
|
|
320
|
+
server.registerPrompt("save-guide", {
|
|
321
|
+
title: "How to Save Thoughts Well",
|
|
322
|
+
description: "Best practices for creating high-quality, searchable memories. Read when saving important information.",
|
|
323
|
+
}, async () => ({
|
|
324
|
+
messages: [{
|
|
325
|
+
role: "user",
|
|
326
|
+
content: {
|
|
327
|
+
type: "text",
|
|
328
|
+
text: `# How to Save Thoughts Well
|
|
329
|
+
|
|
330
|
+
1. **Summary first.** Search results only show summaries. A thought without a summary is invisible to future searches. Keep summaries under 100 characters.
|
|
331
|
+
|
|
332
|
+
2. **Type accurately.** Use \`decision\`, \`task\`, \`question\`, \`reference\`, \`insight\`, or \`note\`. Don't default everything to \`note\`.
|
|
333
|
+
|
|
334
|
+
3. **Tag topics and people.** These are the primary filters for \`list_thoughts\`. Use consistent topic names across thoughts (e.g., always "auth" not sometimes "authentication").
|
|
335
|
+
|
|
336
|
+
4. **Link related thoughts.** Use \`manage_edges\` to connect decisions to the tasks they affect, references to the insights they support. Edge types: \`refines\`, \`cites\`, \`refuted_by\`, \`tags\`, \`related\`, \`follows\`.
|
|
337
|
+
|
|
338
|
+
5. **Update, don't duplicate.** If a thought exists but is outdated, use \`update_thought\`. Don't create a new one.
|
|
339
|
+
|
|
340
|
+
6. **Be specific.** "We discussed the API" is useless. "Chose REST over GraphQL for the public API because most consumers are mobile apps with bandwidth constraints" is searchable and actionable.
|
|
341
|
+
|
|
342
|
+
7. **Capture the why.** Facts change; reasoning persists. "Using SQLite" is a fact you can see in the code. "Chose SQLite over Postgres because all 4 machines need offline access without a central server" is the decision worth saving.`,
|
|
343
|
+
},
|
|
344
|
+
}],
|
|
345
|
+
}));
|
|
346
|
+
server.registerPrompt("tool-guide", {
|
|
347
|
+
title: "ShelbyMCP Tool Guide",
|
|
348
|
+
description: "Quick reference for all available tools and when to use each one.",
|
|
349
|
+
}, async () => ({
|
|
350
|
+
messages: [{
|
|
351
|
+
role: "user",
|
|
352
|
+
content: {
|
|
353
|
+
type: "text",
|
|
354
|
+
text: `# ShelbyMCP Tool Guide
|
|
355
|
+
|
|
356
|
+
## Capture & Update
|
|
357
|
+
- \`capture_thought\` — Save a new thought. Supports bulk capture via the \`thoughts\` array parameter.
|
|
358
|
+
- \`update_thought\` — Modify an existing thought. Supports bulk update via \`ids\` array. Use this instead of deleting and recreating.
|
|
359
|
+
- \`delete_thought\` — Remove a thought and all its edges. Use sparingly — prefer updating.
|
|
360
|
+
|
|
361
|
+
## Search & Browse
|
|
362
|
+
- \`search_thoughts\` — Full-text search. Returns summaries only. Use \`get_thought\` to read full content of interesting results.
|
|
363
|
+
- \`list_thoughts\` — Filter by type, topic, person, project, date range, or summary presence. Good for browsing a category.
|
|
364
|
+
- \`get_thought\` — Fetch a single thought by ID with full content. Use after search/list to drill into details.
|
|
365
|
+
|
|
366
|
+
## Graph
|
|
367
|
+
- \`manage_edges\` — Create or remove typed relationships between thoughts. Actions: \`link\`, \`unlink\`. Types: \`refines\`, \`cites\`, \`refuted_by\`, \`tags\`, \`related\`, \`follows\`.
|
|
368
|
+
- \`explore_graph\` — Traverse relationships from a starting thought. Set \`max_depth\` (1-5) and optionally filter by \`edge_types\`.
|
|
369
|
+
|
|
370
|
+
## Stats
|
|
371
|
+
- \`thought_stats\` — Aggregate counts by type, top topics, recent activity. Good for understanding what's in memory.`,
|
|
372
|
+
},
|
|
373
|
+
}],
|
|
374
|
+
}));
|
|
375
|
+
// ---------------------------------------------------------------------------
|
|
376
|
+
// Completion
|
|
377
|
+
// ---------------------------------------------------------------------------
|
|
378
|
+
// Provides auto-complete suggestions for prompt arguments and resource
|
|
379
|
+
// template variables. Agents can call completion/complete to get matching
|
|
380
|
+
// topics, people, projects, types, and sources from the database.
|
|
381
|
+
server.server.registerCapabilities({ completions: {} });
|
|
382
|
+
server.server.setRequestHandler(CompleteRequestSchema, async (request) => {
|
|
383
|
+
const { argument } = request.params;
|
|
384
|
+
const prefix = argument.value ?? "";
|
|
385
|
+
let values = [];
|
|
386
|
+
switch (argument.name) {
|
|
387
|
+
case "topic":
|
|
388
|
+
case "topics":
|
|
389
|
+
values = db.getDistinctArrayValues("topics", prefix);
|
|
390
|
+
break;
|
|
391
|
+
case "person":
|
|
392
|
+
case "people":
|
|
393
|
+
values = db.getDistinctArrayValues("people", prefix);
|
|
394
|
+
break;
|
|
395
|
+
case "project":
|
|
396
|
+
values = db.getDistinctValues("project", prefix);
|
|
397
|
+
break;
|
|
398
|
+
case "type":
|
|
399
|
+
// Static list — filter by prefix
|
|
400
|
+
values = ["note", "decision", "task", "question", "reference", "insight"]
|
|
401
|
+
.filter((t) => t.startsWith(prefix.toLowerCase()));
|
|
402
|
+
break;
|
|
403
|
+
case "source":
|
|
404
|
+
values = db.getDistinctValues("source", prefix);
|
|
405
|
+
break;
|
|
406
|
+
case "edge_type":
|
|
407
|
+
values = VALID_EDGE_TYPES
|
|
408
|
+
.filter((t) => t.startsWith(prefix.toLowerCase()));
|
|
409
|
+
break;
|
|
410
|
+
default:
|
|
411
|
+
break;
|
|
412
|
+
}
|
|
413
|
+
return {
|
|
414
|
+
completion: {
|
|
415
|
+
values,
|
|
416
|
+
hasMore: false,
|
|
417
|
+
total: values.length,
|
|
418
|
+
},
|
|
419
|
+
};
|
|
227
420
|
});
|
|
421
|
+
log("info", "server", { event: "started", version: VERSION, db: config.dbPath });
|
|
228
422
|
return { server, db };
|
|
229
423
|
}
|
|
230
424
|
//# sourceMappingURL=server.js.map
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: shelby-onboard
|
|
3
|
+
description: One-time onboarding interview that seeds ShelbyMCP with foundational memories about the user. Run this when a user first installs ShelbyMCP, says "get to know me", "onboard", "set up my memory", or asks why their memory is empty. Also triggers when thought_stats shows zero or very few thoughts.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Shelby Onboard — First-Run Memory Seeding
|
|
7
|
+
|
|
8
|
+
You're running the ShelbyMCP onboarding interview. Your goal: learn enough about the user to make their AI tools immediately useful — then save it all as structured memories.
|
|
9
|
+
|
|
10
|
+
This is a conversation, not a form. Ask a few questions, listen carefully, capture what you learn, then ask smarter follow-ups based on what they told you. By the end, the user should have 15-30 well-tagged memories that make every future AI interaction better.
|
|
11
|
+
|
|
12
|
+
## Before You Start
|
|
13
|
+
|
|
14
|
+
1. Run `thought_stats` to check the current state of the memory database.
|
|
15
|
+
2. **If the database has < 5 thoughts:** This is a fresh install. Start from Round 1.
|
|
16
|
+
3. **If the database has 5+ thoughts:** The user already has some context saved. Run `list_thoughts` with `limit: 10` to see what's there, then tell the user what you already know and offer to fill gaps. Skip rounds that are already well-covered.
|
|
17
|
+
4. Ask the user if they have a **migration export** from another AI tool they'd like to import (see "Importing Migration Data" below). If yes, handle that first — it gives you a head start and makes the interview smarter.
|
|
18
|
+
|
|
19
|
+
## The Interview
|
|
20
|
+
|
|
21
|
+
Run through these rounds in order. After each round, capture the relevant thoughts immediately — don't batch them up for later. Give the user a brief confirmation of what you saved ("Got it — saved your role, team, and current project").
|
|
22
|
+
|
|
23
|
+
Adapt your questions based on what the user tells you. If someone says "I'm a solo founder," don't ask about team structure. If they mention three active projects, dig into each one.
|
|
24
|
+
|
|
25
|
+
### Round 1: Who Are You?
|
|
26
|
+
|
|
27
|
+
Get the basics that shape every future interaction. Go beyond just the job title — understanding the whole person leads to better AI interactions.
|
|
28
|
+
|
|
29
|
+
Ask about:
|
|
30
|
+
- Name and what they go by
|
|
31
|
+
- Role and company (or if they're independent/student/hobbyist)
|
|
32
|
+
- Experience level — are they a senior engineer, a designer learning to code, a PM who scripts?
|
|
33
|
+
- What they're primarily building right now
|
|
34
|
+
- Where they're based (city/timezone — useful for deadline context and collaboration)
|
|
35
|
+
- Anything outside of work that's relevant — side projects, interests, or context they'd want AI to know about (keep this light and optional — some people want AI to know them as a whole person, others want to keep it professional)
|
|
36
|
+
|
|
37
|
+
**Capture as:**
|
|
38
|
+
- Type: `reference` — these are stable facts about the person
|
|
39
|
+
- Topics: `["identity"]` plus anything specific (e.g., `["identity", "ios", "startup"]`)
|
|
40
|
+
- Summary: one-line distillation (e.g., "Tim is a senior iOS engineer and solo founder building Shelby, based in Austin")
|
|
41
|
+
|
|
42
|
+
### Round 2: What Are You Working On?
|
|
43
|
+
|
|
44
|
+
Understand their active projects and goals.
|
|
45
|
+
|
|
46
|
+
Ask about:
|
|
47
|
+
- Active projects — names, what they do, where they are in the lifecycle
|
|
48
|
+
- Goals and deadlines — what's the next milestone?
|
|
49
|
+
- Constraints — what's blocking progress, what are they worried about?
|
|
50
|
+
- The tech stack for each project — languages, frameworks, infrastructure
|
|
51
|
+
|
|
52
|
+
**Capture as:**
|
|
53
|
+
- Type: `reference` for project descriptions, `task` for active goals with deadlines
|
|
54
|
+
- Topics: project names, relevant tech (e.g., `["shelby", "swift", "cloudkit"]`)
|
|
55
|
+
- One thought per project is ideal — don't fragment a single project across many thoughts
|
|
56
|
+
- If they mention deadlines, convert relative dates to absolute (e.g., "next Thursday" becomes the actual date)
|
|
57
|
+
|
|
58
|
+
### Round 3: Who Do You Work With?
|
|
59
|
+
|
|
60
|
+
Understand the people in their world (skip if they're solo).
|
|
61
|
+
|
|
62
|
+
Ask about:
|
|
63
|
+
- Key collaborators — names, roles, what they own
|
|
64
|
+
- Who makes decisions about what
|
|
65
|
+
- Any external stakeholders (clients, partners, contractors)
|
|
66
|
+
|
|
67
|
+
**Capture as:**
|
|
68
|
+
- Type: `reference`
|
|
69
|
+
- Topics: `["team"]` plus project names
|
|
70
|
+
- People: fill the `people` array with names mentioned
|
|
71
|
+
- Summary: role-focused (e.g., "Sarah owns backend auth, Mike handles DevOps and CI")
|
|
72
|
+
|
|
73
|
+
### Round 4: How Do You Like to Work?
|
|
74
|
+
|
|
75
|
+
This is where the AI becomes personalized — understand both work preferences and the role AI should play.
|
|
76
|
+
|
|
77
|
+
Ask about:
|
|
78
|
+
- **AI role** — what do they want AI to be for them? A pair programmer who thinks out loud? A research assistant who digs deep? A terse code generator? A patient teacher? This shapes every future interaction, so get it right.
|
|
79
|
+
- Communication style — terse or detailed? Explain reasoning or just give the answer?
|
|
80
|
+
- Code style — functional vs OOP? Tabs vs spaces? Framework preferences?
|
|
81
|
+
- Output format — do they want bullet points, prose, code-first?
|
|
82
|
+
- **Learning goals** — what are they actively trying to get better at? (e.g., "learning Rust," "getting better at system design," "trying to write more tests"). This helps AI tailor explanations and suggest growth opportunities.
|
|
83
|
+
|
|
84
|
+
**Capture as:**
|
|
85
|
+
- Type: `decision` — these are choices the user has made about how they work
|
|
86
|
+
- Topics: `["preferences"]` plus specifics (e.g., `["preferences", "code-style"]`, `["preferences", "ai-role"]`)
|
|
87
|
+
- Capture the AI role definition as its own thought — it's high-value and worth finding later
|
|
88
|
+
- Summary: the preference itself (e.g., "Wants AI as a senior pair programmer — think out loud, challenge assumptions")
|
|
89
|
+
|
|
90
|
+
### Round 5: What Should AI Never Do?
|
|
91
|
+
|
|
92
|
+
Anti-patterns are often more useful than preferences — they prevent the frustrations that make people abandon AI tools.
|
|
93
|
+
|
|
94
|
+
Ask about:
|
|
95
|
+
- Past frustrations with AI tools — what drove them crazy?
|
|
96
|
+
- Things AI should never assume or do unprompted
|
|
97
|
+
- **Corrections they've had to make repeatedly** — "I keep having to tell AI to..." is gold. These are the patterns AI gets wrong by default for this specific person.
|
|
98
|
+
- Any domain-specific rules (e.g., "never use Firebase," "always use snake_case")
|
|
99
|
+
- **Things they've changed their mind about** — "I used to do X but now I do Y." These are high-signal because they reveal how the user thinks and prevent AI from suggesting outdated approaches. (Keep this light — one or two is plenty.)
|
|
100
|
+
|
|
101
|
+
**Capture as:**
|
|
102
|
+
- Type: `decision`
|
|
103
|
+
- Topics: `["anti-patterns"]` plus context
|
|
104
|
+
- Summary: the rule itself (e.g., "Never add comments to code that wasn't changed")
|
|
105
|
+
- For changed-mind items, capture both the old and new position — this prevents AI from accidentally recommending the abandoned approach
|
|
106
|
+
- These are high-value — be specific and preserve the user's exact framing
|
|
107
|
+
|
|
108
|
+
### Round 6: Anything Else?
|
|
109
|
+
|
|
110
|
+
Open-ended — let the user share whatever they think is important.
|
|
111
|
+
|
|
112
|
+
Ask:
|
|
113
|
+
- "Is there anything else you'd want a new team member to know on their first day?"
|
|
114
|
+
- "Anything I missed that would help me help you better?"
|
|
115
|
+
|
|
116
|
+
**Capture** with whatever type fits best.
|
|
117
|
+
|
|
118
|
+
## Importing Migration Data
|
|
119
|
+
|
|
120
|
+
If the user has output from the migration prompt (from `shelbymcp migrate`), they'll paste a structured block of text. Parse it and capture each item as a thought:
|
|
121
|
+
|
|
122
|
+
1. Read through the entire pasted content first to understand the structure
|
|
123
|
+
2. For each distinct piece of information, create a thought with:
|
|
124
|
+
- Appropriate `type` (match to `reference`, `decision`, `insight`, `task`, or `note`)
|
|
125
|
+
- A concise `summary` (under 100 characters)
|
|
126
|
+
- Relevant `topics` and `people` arrays
|
|
127
|
+
- `source` set to `"migration"`
|
|
128
|
+
3. After importing, run `search_thoughts` on a few key terms to verify the import worked
|
|
129
|
+
4. Tell the user how many memories were imported and what topics they cover
|
|
130
|
+
5. Use the imported data to skip interview rounds that are already well-covered — jump to filling gaps
|
|
131
|
+
|
|
132
|
+
Don't duplicate information that's already in the database. If the migration data overlaps with existing memories, update the existing ones rather than creating duplicates.
|
|
133
|
+
|
|
134
|
+
## Wrapping Up
|
|
135
|
+
|
|
136
|
+
After the final round:
|
|
137
|
+
|
|
138
|
+
1. Run `thought_stats` to show the user the final count
|
|
139
|
+
2. Give a brief summary of what was captured — group by area (identity, projects, team, preferences, anti-patterns)
|
|
140
|
+
3. Suggest connecting related thoughts: "I can run a quick pass to link related memories — want me to?" If yes, use `manage_edges` to create `related` edges between thoughts that reference the same projects, people, or topics.
|
|
141
|
+
4. Mention Forage: "ShelbyMCP has a daily maintenance skill called Forage that will automatically enrich and connect your memories over time. If you haven't set it up yet, run `shelbymcp setup <your-agent> --forage`."
|
|
142
|
+
5. End with something like: "You're all set. Your AI tools now have context about who you are, what you're building, and how you like to work. This will get better over time as more memories are captured naturally."
|
|
143
|
+
|
|
144
|
+
## Guidelines
|
|
145
|
+
|
|
146
|
+
- **Be conversational.** This should feel like a first meeting with a thoughtful colleague, not a government form. Adapt your tone to the user — if they're casual, be casual. If they're precise, be precise.
|
|
147
|
+
- **Capture after each round.** The user should see memories being saved in real time. This makes the value tangible and builds trust in the tool.
|
|
148
|
+
- **Quality over quantity.** 20 well-structured memories beat 50 vague ones. Each thought should have a good summary, accurate type, and relevant topics.
|
|
149
|
+
- **Don't over-ask.** If the user gives short answers, take the hint. Not everyone has a large team or complex preferences. 3 excellent rounds are better than 6 awkward ones.
|
|
150
|
+
- **Respect boundaries.** If the user doesn't want to share something, move on. This is about making AI useful, not a personnel file.
|
|
151
|
+
- **Use `source: "onboard"`** on all thoughts captured during this session so they're identifiable later.
|