@ign8t/mcp 0.2.0 → 0.3.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/README.md +10 -1
- package/dist/index.js +64 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -205,9 +205,18 @@ The MCP server also provides quick access to resources:
|
|
|
205
205
|
| `reject_recommendations` | Reject recommendations | "Reject this duplicate recommendation" |
|
|
206
206
|
| `add_user_persona` | Add or replace a user persona in context | "Add admin operator persona" |
|
|
207
207
|
| `update_success_criteria`| Add or update measurable success criteria | "Add activation-rate target" |
|
|
208
|
+
| `update_context` | Change the tech stack and constraints after you confirm the exact change | "We moved from Firebase to Supabase" |
|
|
208
209
|
| `import_project` | Import the local codebase into project context (28 Sparks) | "Import this codebase into project abc123" |
|
|
209
210
|
|
|
210
|
-
The write tools (`create_task`, `update_task_status`, `accept_recommendations`, `reject_recommendations`, `add_feature_request`, `add_user_persona`, `update_success_criteria`) are free. Only `import_project` costs Sparks.
|
|
211
|
+
The write tools (`create_task`, `update_task_status`, `accept_recommendations`, `reject_recommendations`, `add_feature_request`, `add_user_persona`, `update_success_criteria`, `update_context`) are free. Only `import_project` costs Sparks.
|
|
212
|
+
|
|
213
|
+
### Updating the implementation context
|
|
214
|
+
|
|
215
|
+
`update_context` lets the project owner's AI change what ign8t knows about the implementation: the tech stack's platform and framework (set or unset), its databases and AI models, and the project constraints (add or remove items: added values are trimmed, removed values must match the stored text exactly). Vision, features, users and success criteria are not writable through it.
|
|
216
|
+
|
|
217
|
+
- The AI reads the project with `get_project` first, shows you the exact change, and applies it only after you agree. The change is saved immediately and costs no Sparks.
|
|
218
|
+
- All previously generated documents (BRD/PRD/TRD, delivery brief, master spec, task specs) may be marked stale. They are not regenerated automatically, and regenerating them costs Sparks.
|
|
219
|
+
- If the context changed since the AI read it, nothing is saved: the AI reads it again and asks you again.
|
|
211
220
|
|
|
212
221
|
### Importing a local codebase
|
|
213
222
|
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
import { CallToolRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
5
5
|
import { buildWorkspaceSnapshot } from "./workspace-snapshot.js";
|
|
6
|
-
const VERSION = "0.
|
|
6
|
+
const VERSION = "0.3.0";
|
|
7
7
|
// Parse command line arguments
|
|
8
8
|
function parseArgs() {
|
|
9
9
|
const args = process.argv.slice(2);
|
|
@@ -93,6 +93,12 @@ async function callIgn8tAPI(endpoint, data = {}) {
|
|
|
93
93
|
}
|
|
94
94
|
return response.json();
|
|
95
95
|
}
|
|
96
|
+
// update_context's add/remove of list items, each at most maxLength characters; the
|
|
97
|
+
// 20-operation cap is on the whole patch (see its description).
|
|
98
|
+
const listOps = (maxLength) => {
|
|
99
|
+
const items = { type: "array", items: { type: "string", minLength: 1, maxLength } };
|
|
100
|
+
return { type: "object", properties: { add: items, remove: items }, additionalProperties: false };
|
|
101
|
+
};
|
|
96
102
|
// Define available tools
|
|
97
103
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
98
104
|
return {
|
|
@@ -577,6 +583,60 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
577
583
|
required: ["project_id", "criteria"],
|
|
578
584
|
},
|
|
579
585
|
},
|
|
586
|
+
{
|
|
587
|
+
name: "update_context",
|
|
588
|
+
description: "Change the project's implementation context: tech_stack platform/framework (set, or list them in tech_stack.unset to clear), tech_stack database/ai_models and constraints (add/remove items: add values are trimmed; remove values must match the stored text exactly). Writes immediately and costs zero Sparks. Call get_project first and pass its context.context_version as expected_context_version. Before calling, show the user the exact change and tell them that all previously generated documents (BRD/PRD/TRD, delivery brief, master spec, task specs) may be marked stale, and that regenerating them costs Sparks; set confirmed_with_user to true only after the user agreed. A CONTEXT_CHANGED error means the context changed since you read it: read it again, reconcile, and ask the user again. Vision, features, users and success criteria are not writable here: use add_user_persona, update_success_criteria or add_feature_request.",
|
|
589
|
+
inputSchema: {
|
|
590
|
+
type: "object",
|
|
591
|
+
properties: {
|
|
592
|
+
project_id: {
|
|
593
|
+
type: "string",
|
|
594
|
+
format: "uuid",
|
|
595
|
+
description: "The project ID",
|
|
596
|
+
},
|
|
597
|
+
expected_context_version: {
|
|
598
|
+
type: "integer",
|
|
599
|
+
minimum: 1,
|
|
600
|
+
description: "context.context_version from the get_project call the user's confirmation was based on",
|
|
601
|
+
},
|
|
602
|
+
reason: {
|
|
603
|
+
type: "string",
|
|
604
|
+
minLength: 10,
|
|
605
|
+
maxLength: 500,
|
|
606
|
+
description: "Why this change is needed (e.g., what was discovered while implementing)",
|
|
607
|
+
},
|
|
608
|
+
confirmed_with_user: {
|
|
609
|
+
type: "boolean",
|
|
610
|
+
description: "Must be true, set only after the user saw the exact change and agreed to it; anything else is rejected",
|
|
611
|
+
},
|
|
612
|
+
patch: {
|
|
613
|
+
type: "object",
|
|
614
|
+
description: "At most 20 operations in total (each set, unset, added or removed item counts). A list can grow to at most 50 items, and the tech stack and constraints to at most 12000 characters together.",
|
|
615
|
+
properties: {
|
|
616
|
+
tech_stack: {
|
|
617
|
+
type: "object",
|
|
618
|
+
properties: {
|
|
619
|
+
platform: { type: "string", minLength: 1, maxLength: 200 },
|
|
620
|
+
framework: { type: "string", minLength: 1, maxLength: 200 },
|
|
621
|
+
unset: {
|
|
622
|
+
type: "array",
|
|
623
|
+
items: { type: "string", enum: ["platform", "framework"] },
|
|
624
|
+
description: "Keys to clear; a key cannot be both set and unset",
|
|
625
|
+
},
|
|
626
|
+
database: listOps(200),
|
|
627
|
+
ai_models: listOps(200),
|
|
628
|
+
},
|
|
629
|
+
additionalProperties: false,
|
|
630
|
+
},
|
|
631
|
+
constraints: listOps(500),
|
|
632
|
+
},
|
|
633
|
+
additionalProperties: false,
|
|
634
|
+
},
|
|
635
|
+
},
|
|
636
|
+
required: ["project_id", "expected_context_version", "reason", "confirmed_with_user", "patch"],
|
|
637
|
+
additionalProperties: false,
|
|
638
|
+
},
|
|
639
|
+
},
|
|
580
640
|
],
|
|
581
641
|
};
|
|
582
642
|
});
|
|
@@ -688,6 +748,9 @@ server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
|
|
|
688
748
|
console.error("Success criteria updated successfully");
|
|
689
749
|
break;
|
|
690
750
|
}
|
|
751
|
+
case "update_context":
|
|
752
|
+
result = await callIgn8tAPI("/context/update", args);
|
|
753
|
+
break;
|
|
691
754
|
default:
|
|
692
755
|
throw new Error(`Unknown tool: ${name}`);
|
|
693
756
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ign8t/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "MCP server for ign8t project management - AI IDE integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"mcp": {
|
|
39
39
|
"name": "ign8t-mcp",
|
|
40
40
|
"description": "MCP server for ign8t project management - AI IDE integration",
|
|
41
|
-
"version": "0.
|
|
41
|
+
"version": "0.3.0"
|
|
42
42
|
},
|
|
43
43
|
"author": "nocodecat",
|
|
44
44
|
"license": "MIT",
|