@critical-path/mcp 0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { CriticalPathClient } from '@critical-path/client';
2
+ export interface WebMcpToolRegistration {
3
+ name: string;
4
+ title?: string;
5
+ description: string;
6
+ inputSchema: Record<string, unknown>;
7
+ annotations?: {
8
+ readOnlyHint?: boolean;
9
+ };
10
+ execute: (input: any) => Promise<any>;
11
+ }
12
+ export interface ModelContextInterface {
13
+ registerTool: (tool: WebMcpToolRegistration, options?: {
14
+ signal?: AbortSignal;
15
+ }) => Promise<void> | void;
16
+ unregisterTool?: (toolName: string) => void;
17
+ getTools?: () => Promise<WebMcpToolRegistration[]> | WebMcpToolRegistration[];
18
+ executeTool?: (name: string, input?: any) => Promise<any>;
19
+ }
20
+ export interface RegisterWebMcpOptions {
21
+ client: CriticalPathClient;
22
+ projectId?: string;
23
+ tools?: string[];
24
+ signal?: AbortSignal;
25
+ document?: any;
26
+ navigator?: any;
27
+ window?: any;
28
+ onToolExecuted?: (toolName: string, input: any, result: any) => void;
29
+ }
30
+ export interface WebMcpRegistryHandle {
31
+ unregister: () => void;
32
+ getRegisteredTools: () => WebMcpToolRegistration[];
33
+ }
34
+ /**
35
+ * Polyfill/shim a minimal ModelContextInterface onto the document/window if not natively present.
36
+ */
37
+ export declare function ensureModelContextShim(doc?: any): ModelContextInterface | null;
38
+ /**
39
+ * Registers Critical Path tools with the browser's WebMCP modelContext.
40
+ */
41
+ export declare function registerWebMcpTools(options: RegisterWebMcpOptions): WebMcpRegistryHandle;
42
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE;QACZ,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACzG,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,sBAAsB,EAAE,CAAC,GAAG,sBAAsB,EAAE,CAAC;IAC9E,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;CACtE;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,kBAAkB,EAAE,MAAM,sBAAsB,EAAE,CAAC;CACpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,GAAuD,GAAG,qBAAqB,GAAG,IAAI,CAkCjI;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CAkFxF"}
@@ -0,0 +1,117 @@
1
+ import { ALL_TOOLS } from '../tools/definitions.js';
2
+ /**
3
+ * Polyfill/shim a minimal ModelContextInterface onto the document/window if not natively present.
4
+ */
5
+ export function ensureModelContextShim(doc = typeof document !== 'undefined' ? document : null) {
6
+ if (!doc)
7
+ return null;
8
+ if (!doc.modelContext) {
9
+ const registeredTools = new Map();
10
+ const shim = {
11
+ registerTool(tool, options) {
12
+ registeredTools.set(tool.name, tool);
13
+ if (options?.signal) {
14
+ options.signal.addEventListener('abort', () => {
15
+ registeredTools.delete(tool.name);
16
+ }, { once: true });
17
+ }
18
+ },
19
+ unregisterTool(toolName) {
20
+ registeredTools.delete(toolName);
21
+ },
22
+ async getTools() {
23
+ return Array.from(registeredTools.values());
24
+ },
25
+ async executeTool(name, input) {
26
+ const tool = registeredTools.get(name);
27
+ if (!tool) {
28
+ throw new Error(`Tool "${name}" is not registered on modelContext.`);
29
+ }
30
+ return tool.execute(input || {});
31
+ }
32
+ };
33
+ doc.modelContext = shim;
34
+ }
35
+ return doc.modelContext;
36
+ }
37
+ /**
38
+ * Registers Critical Path tools with the browser's WebMCP modelContext.
39
+ */
40
+ export function registerWebMcpTools(options) {
41
+ const doc = options.document ?? (typeof document !== 'undefined' ? document : null);
42
+ const nav = options.navigator ?? (typeof navigator !== 'undefined' ? navigator : null);
43
+ const win = options.window ?? (typeof window !== 'undefined' ? window : null);
44
+ // Target modelContext: document.modelContext (W3C standard draft) -> navigator.modelContext -> document shim
45
+ let modelContext;
46
+ if (doc?.modelContext) {
47
+ modelContext = doc.modelContext;
48
+ }
49
+ else if (nav?.modelContext) {
50
+ modelContext = nav.modelContext;
51
+ }
52
+ else if (doc) {
53
+ modelContext = ensureModelContextShim(doc) ?? undefined;
54
+ }
55
+ const selectedTools = options.tools
56
+ ? ALL_TOOLS.filter((t) => options.tools.includes(t.name))
57
+ : ALL_TOOLS;
58
+ const registeredTools = [];
59
+ const abortController = new AbortController();
60
+ // Combine caller signal with our internal abort controller
61
+ if (options.signal) {
62
+ options.signal.addEventListener('abort', () => abortController.abort(), { once: true });
63
+ }
64
+ for (const toolDef of selectedTools) {
65
+ const webTool = {
66
+ name: toolDef.name,
67
+ title: toolDef.title,
68
+ description: toolDef.description,
69
+ inputSchema: toolDef.inputSchema,
70
+ annotations: toolDef.annotations,
71
+ execute: async (input) => {
72
+ const ambientContext = options.projectId ? { projectId: options.projectId } : undefined;
73
+ const result = await toolDef.execute(input, options.client, ambientContext);
74
+ options.onToolExecuted?.(toolDef.name, input, result);
75
+ return result;
76
+ }
77
+ };
78
+ registeredTools.push(webTool);
79
+ if (modelContext?.registerTool) {
80
+ try {
81
+ modelContext.registerTool(webTool, { signal: abortController.signal });
82
+ }
83
+ catch (err) {
84
+ console.warn(`[Critical Path WebMCP] Failed to register tool "${webTool.name}":`, err);
85
+ }
86
+ }
87
+ }
88
+ // Also publish to window fallback registry for browser extensions & DevTools
89
+ if (win) {
90
+ win.__CRITICAL_PATH_WEBMCP__ = {
91
+ projectId: options.projectId,
92
+ tools: registeredTools,
93
+ execute: async (name, input) => {
94
+ const tool = registeredTools.find((t) => t.name === name);
95
+ if (!tool)
96
+ throw new Error(`WebMCP tool "${name}" not found in Critical Path registry.`);
97
+ return tool.execute(input);
98
+ }
99
+ };
100
+ }
101
+ const unregister = () => {
102
+ abortController.abort();
103
+ if (modelContext?.unregisterTool) {
104
+ for (const t of registeredTools) {
105
+ modelContext.unregisterTool(t.name);
106
+ }
107
+ }
108
+ if (win && win.__CRITICAL_PATH_WEBMCP__?.tools === registeredTools) {
109
+ delete win.__CRITICAL_PATH_WEBMCP__;
110
+ }
111
+ };
112
+ return {
113
+ unregister,
114
+ getRegisteredTools: () => registeredTools
115
+ };
116
+ }
117
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAiC,MAAM,yBAAyB,CAAC;AAoCnF;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAW,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;IACjG,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkC,CAAC;QAElE,MAAM,IAAI,GAA0B;YAClC,YAAY,CAAC,IAAI,EAAE,OAAO;gBACxB,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrC,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;oBACpB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;wBAC5C,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;YACD,cAAc,CAAC,QAAQ;gBACrB,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC;YACD,KAAK,CAAC,QAAQ;gBACZ,OAAO,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK;gBAC3B,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,sCAAsC,CAAC,CAAC;gBACvE,CAAC;gBACD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC;SACF,CAAC;QAEF,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,OAAO,GAAG,CAAC,YAAY,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA8B;IAChE,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpF,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvF,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE9E,6GAA6G;IAC7G,IAAI,YAA+C,CAAC;IACpD,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC;QACtB,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;IAClC,CAAC;SAAM,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC;QAC7B,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;IAClC,CAAC;SAAM,IAAI,GAAG,EAAE,CAAC;QACf,YAAY,GAAG,sBAAsB,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;IAC1D,CAAC;IAED,MAAM,aAAa,GAAqB,OAAO,CAAC,KAAK;QACnD,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,eAAe,GAA6B,EAAE,CAAC;IACrD,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAE9C,2DAA2D;IAC3D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACpC,MAAM,OAAO,GAA2B;YACtC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;gBAC5B,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBACxF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;gBAC5E,OAAO,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBACtD,OAAO,MAAM,CAAC;YAChB,CAAC;SACF,CAAC;QAEF,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE9B,IAAI,YAAY,EAAE,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,YAAY,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,mDAAmD,OAAO,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,IAAI,GAAG,EAAE,CAAC;QACR,GAAG,CAAC,wBAAwB,GAAG;YAC7B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,KAAK,EAAE,IAAY,EAAE,KAAU,EAAE,EAAE;gBAC1C,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;gBAC1D,IAAI,CAAC,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,wCAAwC,CAAC,CAAC;gBACzF,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;SACF,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,eAAe,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,YAAY,EAAE,cAAc,EAAE,CAAC;YACjC,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;gBAChC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QACD,IAAI,GAAG,IAAI,GAAG,CAAC,wBAAwB,EAAE,KAAK,KAAK,eAAe,EAAE,CAAC;YACnE,OAAO,GAAG,CAAC,wBAAwB,CAAC;QACtC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,UAAU;QACV,kBAAkB,EAAE,GAAG,EAAE,CAAC,eAAe;KAC1C,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@critical-path/mcp",
3
+ "version": "0.1.0",
4
+ "description": "Standard Model Context Protocol (MCP) server and client-side WebMCP support for Critical Path",
5
+ "author": "Jack James",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/Pixerate/critical-path.git"
10
+ },
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "type": "module",
15
+ "main": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "bin": {
18
+ "critical-path-mcp": "./dist/bin/cli.js"
19
+ },
20
+ "exports": {
21
+ ".": {
22
+ "import": "./dist/index.js",
23
+ "types": "./dist/index.d.ts"
24
+ },
25
+ "./server": {
26
+ "import": "./dist/server/index.js",
27
+ "types": "./dist/server/index.d.ts"
28
+ },
29
+ "./web": {
30
+ "import": "./dist/web/index.js",
31
+ "types": "./dist/web/index.d.ts"
32
+ }
33
+ },
34
+ "scripts": {
35
+ "build": "tsc --build",
36
+ "test": "vitest run",
37
+ "clean": "rm -rf dist *.tsbuildinfo"
38
+ },
39
+ "dependencies": {
40
+ "@critical-path/client": "workspace:*",
41
+ "@critical-path/core": "workspace:*",
42
+ "@modelcontextprotocol/sdk": "^1.6.0",
43
+ "zod": "^3.24.0"
44
+ },
45
+ "devDependencies": {
46
+ "@types/node": "^24.0.0",
47
+ "typescript": "^5.7.0",
48
+ "vitest": "^3.0.0"
49
+ },
50
+ "engines": {
51
+ "node": ">=24.0.0"
52
+ }
53
+ }
package/src/bin/cli.ts ADDED
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env node
2
+ import { CriticalPathEngine, SQLiteStore, InMemoryStore } from '@critical-path/core';
3
+ import { CriticalPathClient } from '@critical-path/client';
4
+ import { createCriticalPathMcpServer, startStdioServer } from '../server/index.js';
5
+
6
+ function parseArgs(args: string[]) {
7
+ const options: { db?: string; api?: string; help?: boolean } = {};
8
+ for (let i = 0; i < args.length; i++) {
9
+ const arg = args[i];
10
+ if (arg === '--help' || arg === '-h') {
11
+ options.help = true;
12
+ } else if (arg === '--db' && args[i + 1]) {
13
+ options.db = args[++i];
14
+ } else if (arg === '--api' && args[i + 1]) {
15
+ options.api = args[++i];
16
+ }
17
+ }
18
+ return options;
19
+ }
20
+
21
+ function showHelp() {
22
+ console.log(`
23
+ Critical Path MCP Server (Stdio)
24
+
25
+ Usage:
26
+ npx @critical-path/mcp [options]
27
+
28
+ Options:
29
+ --db <path> Path to SQLite database file (uses SQLiteStore)
30
+ --api <url> Base URL of remote Critical Path server (uses CriticalPathClient)
31
+ --help, -h Display this help message
32
+
33
+ Examples:
34
+ # Run against local SQLite database
35
+ npx @critical-path/mcp --db ./critical-path.db
36
+
37
+ # Run against remote Next.js or SvelteKit route handler
38
+ npx @critical-path/mcp --api http://localhost:3000/api/critical-path
39
+
40
+ # Run with in-memory store (for testing)
41
+ npx @critical-path/mcp
42
+ `);
43
+ }
44
+
45
+ async function main() {
46
+ const args = process.argv.slice(2);
47
+ const options = parseArgs(args);
48
+
49
+ if (options.help) {
50
+ showHelp();
51
+ process.exit(0);
52
+ }
53
+
54
+ let server;
55
+
56
+ if (options.api) {
57
+ const client = new CriticalPathClient({ baseUrl: options.api });
58
+ server = createCriticalPathMcpServer({ client, name: 'critical-path-api-mcp' });
59
+ console.error(`[Critical Path MCP] Connecting to remote API at ${options.api} over stdio...`);
60
+ } else if (options.db) {
61
+ const store = new SQLiteStore({ filename: options.db });
62
+ const engine = new CriticalPathEngine({ store });
63
+ server = createCriticalPathMcpServer({ engine, name: 'critical-path-sqlite-mcp' });
64
+ console.error(`[Critical Path MCP] Loaded SQLite database from "${options.db}" over stdio...`);
65
+ } else {
66
+ const store = new InMemoryStore();
67
+ const engine = new CriticalPathEngine({ store });
68
+ server = createCriticalPathMcpServer({ engine, name: 'critical-path-inmemory-mcp' });
69
+ console.error('[Critical Path MCP] Initialized in-memory store over stdio...');
70
+ }
71
+
72
+ await startStdioServer(server);
73
+ }
74
+
75
+ main().catch((err) => {
76
+ console.error('[Critical Path MCP] Fatal error:', err);
77
+ process.exit(1);
78
+ });
@@ -0,0 +1,211 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ import { CriticalPathEngine, InMemoryStore } from '@critical-path/core';
3
+ import {
4
+ ALL_TOOLS,
5
+ TOOL_MAP,
6
+ createCriticalPathMcpServer,
7
+ registerWebMcpTools,
8
+ ensureModelContextShim
9
+ } from './index.js';
10
+
11
+ describe('@critical-path/mcp', () => {
12
+ let engine: CriticalPathEngine;
13
+
14
+ beforeEach(() => {
15
+ engine = new CriticalPathEngine({ store: new InMemoryStore() });
16
+ });
17
+
18
+ describe('Tool Definitions', () => {
19
+ it('registers all core project management tools', () => {
20
+ const toolNames = ALL_TOOLS.map((t) => t.name);
21
+ expect(toolNames).toContain('list_projects');
22
+ expect(toolNames).toContain('get_project');
23
+ expect(toolNames).toContain('create_project');
24
+ expect(toolNames).toContain('list_tasks');
25
+ expect(toolNames).toContain('get_task');
26
+ expect(toolNames).toContain('create_task');
27
+ expect(toolNames).toContain('update_task');
28
+ expect(toolNames).toContain('delete_task');
29
+ expect(toolNames).toContain('list_deliverables');
30
+ expect(toolNames).toContain('create_deliverable');
31
+ expect(toolNames).toContain('list_comments');
32
+ expect(toolNames).toContain('add_comment');
33
+ });
34
+
35
+ it('executes project and task workflows through tool definitions', async () => {
36
+ // 1. Create project
37
+ const createProjTool = TOOL_MAP.get('create_project')!;
38
+ const project = await createProjTool.execute(
39
+ { name: 'Core Engine Dev', key: 'CED' },
40
+ engine
41
+ );
42
+ expect(project.id).toBeDefined();
43
+ expect(project.name).toBe('Core Engine Dev');
44
+
45
+ // 2. List projects
46
+ const listProjTool = TOOL_MAP.get('list_projects')!;
47
+ const projects = await listProjTool.execute({}, engine);
48
+ expect(projects).toHaveLength(1);
49
+ expect(projects[0].id).toBe(project.id);
50
+
51
+ // 3. Create task
52
+ const createTaskTool = TOOL_MAP.get('create_task')!;
53
+ const task = await createTaskTool.execute(
54
+ {
55
+ projectId: project.id,
56
+ title: 'Implement WebMCP Spec',
57
+ priority: 'urgent',
58
+ tags: ['agent', 'mcp']
59
+ },
60
+ engine
61
+ );
62
+ expect(task.id).toBeDefined();
63
+ expect(task.title).toBe('Implement WebMCP Spec');
64
+ expect(task.priority).toBe('urgent');
65
+
66
+ // 4. Update task
67
+ const updateTaskTool = TOOL_MAP.get('update_task')!;
68
+ const updated = await updateTaskTool.execute(
69
+ {
70
+ id: task.id,
71
+ status: 'in_progress',
72
+ estimatedHours: 5
73
+ },
74
+ engine
75
+ );
76
+ expect(updated.status).toBe('in_progress');
77
+ expect(updated.estimatedHours).toBe(5);
78
+
79
+ // 5. Add comment
80
+ const addCommentTool = TOOL_MAP.get('add_comment')!;
81
+ const comment = await addCommentTool.execute(
82
+ {
83
+ taskId: task.id,
84
+ content: 'Started drafting the WebMCP handler',
85
+ authorId: 'agent-1'
86
+ },
87
+ engine
88
+ );
89
+ expect(comment.content).toBe('Started drafting the WebMCP handler');
90
+
91
+ // 6. List tasks with filter
92
+ const listTasksTool = TOOL_MAP.get('list_tasks')!;
93
+ const filtered = await listTasksTool.execute(
94
+ { projectId: project.id, status: 'in_progress' },
95
+ engine
96
+ );
97
+ expect(filtered).toHaveLength(1);
98
+
99
+ // 7. Delete task
100
+ const deleteTaskTool = TOOL_MAP.get('delete_task')!;
101
+ const delRes = await deleteTaskTool.execute({ id: task.id }, engine);
102
+ expect(delRes.success).toBe(true);
103
+
104
+ const afterDelete = await listTasksTool.execute({ projectId: project.id }, engine);
105
+ expect(afterDelete).toHaveLength(0);
106
+ });
107
+ });
108
+
109
+ describe('Standard MCP Server Creation', () => {
110
+ it('creates an MCP Server instance with capabilities', () => {
111
+ const server = createCriticalPathMcpServer({
112
+ engine,
113
+ name: 'test-mcp-server',
114
+ version: '1.0.0'
115
+ });
116
+ expect(server).toBeDefined();
117
+ });
118
+
119
+ it('throws if neither engine nor client is provided', () => {
120
+ expect(() => createCriticalPathMcpServer({} as any)).toThrow(
121
+ 'Either engine or client must be provided'
122
+ );
123
+ });
124
+ });
125
+
126
+ describe('WebMCP Client Layer', () => {
127
+ let mockDoc: any;
128
+ let mockWin: any;
129
+
130
+ beforeEach(() => {
131
+ mockDoc = {};
132
+ mockWin = {};
133
+ });
134
+
135
+ it('creates a modelContext shim if document.modelContext is not natively present', () => {
136
+ const shim = ensureModelContextShim(mockDoc);
137
+ expect(shim).toBeDefined();
138
+ expect(mockDoc.modelContext).toBe(shim);
139
+ expect(typeof shim!.registerTool).toBe('function');
140
+ });
141
+
142
+ it('registers tools into modelContext and allows execution', async () => {
143
+ const project = await engine.createProject({ name: 'WebMCP Test Project' });
144
+
145
+ // Mock client that delegates to engine
146
+ const mockClient: any = {
147
+ getProjects: () => engine.getProjects(),
148
+ getProject: (id: string) => engine.getProject(id),
149
+ createProject: (d: any) => engine.createProject(d),
150
+ getTasks: (pId?: string) => engine.getTasks(pId),
151
+ getTask: (id: string) => engine.getTask(id),
152
+ createTask: (d: any) => engine.createTask(d),
153
+ updateTask: (id: string, u: any) => engine.updateTask(id, u),
154
+ deleteTask: (id: string) => engine.deleteTask(id)
155
+ };
156
+
157
+ const handle = registerWebMcpTools({
158
+ client: mockClient,
159
+ projectId: project.id,
160
+ document: mockDoc,
161
+ window: mockWin
162
+ });
163
+
164
+ expect(handle.getRegisteredTools().length).toBeGreaterThan(0);
165
+ expect(mockDoc.modelContext).toBeDefined();
166
+
167
+ const registered = await mockDoc.modelContext.getTools();
168
+ expect(registered.length).toBe(handle.getRegisteredTools().length);
169
+
170
+ // Execute create_task via WebMCP modelContext, inheriting ambient projectId
171
+ const createdTask = await mockDoc.modelContext.executeTool('create_task', {
172
+ title: 'Task Created via WebMCP'
173
+ });
174
+ expect(createdTask.id).toBeDefined();
175
+ expect(createdTask.projectId).toBe(project.id);
176
+ expect(createdTask.title).toBe('Task Created via WebMCP');
177
+
178
+ // Verify window fallback
179
+ expect(mockWin.__CRITICAL_PATH_WEBMCP__).toBeDefined();
180
+ expect(mockWin.__CRITICAL_PATH_WEBMCP__.projectId).toBe(project.id);
181
+
182
+ // Cleanup
183
+ handle.unregister();
184
+ const afterUnregister = await mockDoc.modelContext.getTools();
185
+ expect(afterUnregister).toHaveLength(0);
186
+ expect(mockWin.__CRITICAL_PATH_WEBMCP__).toBeUndefined();
187
+ });
188
+
189
+ it('supports AbortSignal unregistration lifecycle', async () => {
190
+ const controller = new AbortController();
191
+ const mockClient: any = {
192
+ getTasks: () => Promise.resolve([])
193
+ };
194
+
195
+ registerWebMcpTools({
196
+ client: mockClient,
197
+ signal: controller.signal,
198
+ document: mockDoc,
199
+ window: mockWin
200
+ });
201
+
202
+ let tools = await mockDoc.modelContext.getTools();
203
+ expect(tools.length).toBeGreaterThan(0);
204
+
205
+ controller.abort();
206
+
207
+ tools = await mockDoc.modelContext.getTools();
208
+ expect(tools).toHaveLength(0);
209
+ });
210
+ });
211
+ });
package/src/index.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './tools/definitions.js';
2
+ export * from './server/index.js';
3
+ export * from './web/index.js';