@duckwalk/mcp-server 0.1.2
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/LICENSE +21 -0
- package/README.md +29 -0
- package/dist/chunk-IIW4JPFI.js +1295 -0
- package/dist/chunk-IIW4JPFI.js.map +1 -0
- package/dist/index.d.ts +568 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.js +239 -0
- package/dist/server.js.map +1 -0
- package/package.json +61 -0
package/dist/server.js
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createGuidedSession,
|
|
3
|
+
createPrReviewSession,
|
|
4
|
+
getDuckWalkContract,
|
|
5
|
+
getGuidedSession,
|
|
6
|
+
pathfinder,
|
|
7
|
+
updateStepStatus,
|
|
8
|
+
validateGuidedSessionInput
|
|
9
|
+
} from "./chunk-IIW4JPFI.js";
|
|
10
|
+
|
|
11
|
+
// src/server.ts
|
|
12
|
+
import path from "path";
|
|
13
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
14
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
15
|
+
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
16
|
+
var rootDir = process.env.DUCKWALK_ROOT ?? process.cwd();
|
|
17
|
+
var server = new Server(
|
|
18
|
+
{
|
|
19
|
+
name: "duckwalk-mcp",
|
|
20
|
+
version: "0.1.2"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
capabilities: {
|
|
24
|
+
tools: {}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
function textResult(payload) {
|
|
29
|
+
return {
|
|
30
|
+
content: [
|
|
31
|
+
{
|
|
32
|
+
type: "text",
|
|
33
|
+
text: JSON.stringify(payload, null, 2)
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function getArguments(input) {
|
|
39
|
+
if (!input || typeof input !== "object") {
|
|
40
|
+
return {};
|
|
41
|
+
}
|
|
42
|
+
return input;
|
|
43
|
+
}
|
|
44
|
+
function resolveTargetRoot(args) {
|
|
45
|
+
const workspaceRoot = args.workspaceRoot;
|
|
46
|
+
if (typeof workspaceRoot === "string" && workspaceRoot.trim().length > 0) {
|
|
47
|
+
return path.resolve(workspaceRoot);
|
|
48
|
+
}
|
|
49
|
+
return rootDir;
|
|
50
|
+
}
|
|
51
|
+
function resolveExpectedMode(value) {
|
|
52
|
+
return value === "implementation" || value === "pr_review" || value === "codebase_walkthrough" ? value : void 0;
|
|
53
|
+
}
|
|
54
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
55
|
+
tools: [
|
|
56
|
+
{
|
|
57
|
+
name: "get_duckwalk_contract",
|
|
58
|
+
description: "Return the duckWalk session contract, rules, and example payloads for Codex.",
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: "object",
|
|
61
|
+
properties: {}
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: "validate_guided_session",
|
|
66
|
+
description: "Validate a GuidedSession payload without writing files, and return a normalized summary.",
|
|
67
|
+
inputSchema: {
|
|
68
|
+
type: "object",
|
|
69
|
+
properties: {
|
|
70
|
+
session: {
|
|
71
|
+
type: "object",
|
|
72
|
+
description: "A full GuidedSession payload."
|
|
73
|
+
},
|
|
74
|
+
expectMode: {
|
|
75
|
+
type: "string",
|
|
76
|
+
enum: ["implementation", "pr_review", "codebase_walkthrough"],
|
|
77
|
+
description: "Optional expected mode check for the session."
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
required: ["session"]
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: "create_guided_session",
|
|
85
|
+
description: "Validate and persist an implementation guided session.",
|
|
86
|
+
inputSchema: {
|
|
87
|
+
type: "object",
|
|
88
|
+
properties: {
|
|
89
|
+
workspaceRoot: {
|
|
90
|
+
type: "string",
|
|
91
|
+
description: "Optional absolute workspace root where .guided-implementation files should be written."
|
|
92
|
+
},
|
|
93
|
+
session: {
|
|
94
|
+
type: "object",
|
|
95
|
+
description: "A full GuidedSession payload."
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
required: ["session"]
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: "create_pr_review_session",
|
|
103
|
+
description: "Validate and persist a PR review guided session.",
|
|
104
|
+
inputSchema: {
|
|
105
|
+
type: "object",
|
|
106
|
+
properties: {
|
|
107
|
+
workspaceRoot: {
|
|
108
|
+
type: "string",
|
|
109
|
+
description: "Optional absolute workspace root where .guided-implementation files should be written."
|
|
110
|
+
},
|
|
111
|
+
session: {
|
|
112
|
+
type: "object",
|
|
113
|
+
description: "A full GuidedSession payload with mode pr_review."
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
required: ["session"]
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: "pathfinder",
|
|
121
|
+
description: "Validate and persist a question-driven codebase walkthrough session.",
|
|
122
|
+
inputSchema: {
|
|
123
|
+
type: "object",
|
|
124
|
+
properties: {
|
|
125
|
+
workspaceRoot: {
|
|
126
|
+
type: "string",
|
|
127
|
+
description: "Optional absolute workspace root where .guided-implementation files should be written."
|
|
128
|
+
},
|
|
129
|
+
session: {
|
|
130
|
+
type: "object",
|
|
131
|
+
description: "A full GuidedSession payload with mode codebase_walkthrough."
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
required: ["session"]
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
name: "get_guided_session",
|
|
139
|
+
description: "Read the current session or a specific session by ID.",
|
|
140
|
+
inputSchema: {
|
|
141
|
+
type: "object",
|
|
142
|
+
properties: {
|
|
143
|
+
workspaceRoot: {
|
|
144
|
+
type: "string",
|
|
145
|
+
description: "Optional absolute workspace root where the guided session should be read."
|
|
146
|
+
},
|
|
147
|
+
sessionId: {
|
|
148
|
+
type: "string"
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
name: "update_step_status",
|
|
155
|
+
description: "Update one step status in the current guided session state.",
|
|
156
|
+
inputSchema: {
|
|
157
|
+
type: "object",
|
|
158
|
+
properties: {
|
|
159
|
+
workspaceRoot: {
|
|
160
|
+
type: "string",
|
|
161
|
+
description: "Optional absolute workspace root where the guided session state should be updated."
|
|
162
|
+
},
|
|
163
|
+
sessionId: {
|
|
164
|
+
type: "string"
|
|
165
|
+
},
|
|
166
|
+
stepId: {
|
|
167
|
+
type: "string"
|
|
168
|
+
},
|
|
169
|
+
status: {
|
|
170
|
+
type: "string",
|
|
171
|
+
enum: ["pending", "active", "complete", "skipped"]
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
required: ["sessionId", "stepId", "status"]
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
}));
|
|
179
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
180
|
+
const args = getArguments(request.params.arguments);
|
|
181
|
+
const targetRoot = resolveTargetRoot(args);
|
|
182
|
+
switch (request.params.name) {
|
|
183
|
+
case "get_duckwalk_contract":
|
|
184
|
+
return textResult(getDuckWalkContract());
|
|
185
|
+
case "validate_guided_session": {
|
|
186
|
+
const expectMode = resolveExpectedMode(args.expectMode);
|
|
187
|
+
const payload = {
|
|
188
|
+
session: args.session,
|
|
189
|
+
...expectMode ? { expectMode } : {}
|
|
190
|
+
};
|
|
191
|
+
return textResult(validateGuidedSessionInput(payload));
|
|
192
|
+
}
|
|
193
|
+
case "create_guided_session":
|
|
194
|
+
return textResult(
|
|
195
|
+
await createGuidedSession(
|
|
196
|
+
targetRoot,
|
|
197
|
+
args.session
|
|
198
|
+
)
|
|
199
|
+
);
|
|
200
|
+
case "create_pr_review_session":
|
|
201
|
+
return textResult(
|
|
202
|
+
await createPrReviewSession(
|
|
203
|
+
targetRoot,
|
|
204
|
+
args.session
|
|
205
|
+
)
|
|
206
|
+
);
|
|
207
|
+
case "pathfinder":
|
|
208
|
+
return textResult(
|
|
209
|
+
await pathfinder(targetRoot, args.session)
|
|
210
|
+
);
|
|
211
|
+
case "get_guided_session":
|
|
212
|
+
return textResult(
|
|
213
|
+
await getGuidedSession(
|
|
214
|
+
targetRoot,
|
|
215
|
+
typeof args.sessionId === "string" ? args.sessionId : void 0
|
|
216
|
+
)
|
|
217
|
+
);
|
|
218
|
+
case "update_step_status":
|
|
219
|
+
return textResult(
|
|
220
|
+
await updateStepStatus(targetRoot, {
|
|
221
|
+
sessionId: String(args.sessionId),
|
|
222
|
+
stepId: String(args.stepId),
|
|
223
|
+
status: args.status
|
|
224
|
+
})
|
|
225
|
+
);
|
|
226
|
+
default:
|
|
227
|
+
throw new Error(`Unknown tool: ${request.params.name}`);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
async function main() {
|
|
231
|
+
const transport = new StdioServerTransport();
|
|
232
|
+
await server.connect(transport);
|
|
233
|
+
}
|
|
234
|
+
main().catch((error) => {
|
|
235
|
+
console.error("[duckwalk-mcp] fatal error");
|
|
236
|
+
console.error(error);
|
|
237
|
+
process.exit(1);
|
|
238
|
+
});
|
|
239
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server.ts"],"sourcesContent":["import path from \"node:path\";\n\nimport { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { CallToolRequestSchema, ListToolsRequestSchema } from \"@modelcontextprotocol/sdk/types.js\";\n\nimport {\n createGuidedSession,\n createPrReviewSession,\n getDuckWalkContract,\n getGuidedSession,\n pathfinder,\n updateStepStatus,\n validateGuidedSessionInput\n} from \"./service\";\n\nconst rootDir = process.env.DUCKWALK_ROOT ?? process.cwd();\n\nconst server = new Server(\n {\n name: \"duckwalk-mcp\",\n version: \"0.1.2\"\n },\n {\n capabilities: {\n tools: {}\n }\n }\n);\n\nfunction textResult(payload: unknown) {\n return {\n content: [\n {\n type: \"text\" as const,\n text: JSON.stringify(payload, null, 2)\n }\n ]\n };\n}\n\nfunction getArguments(input: unknown): Record<string, unknown> {\n if (!input || typeof input !== \"object\") {\n return {};\n }\n return input as Record<string, unknown>;\n}\n\nfunction resolveTargetRoot(args: Record<string, unknown>): string {\n const workspaceRoot = args.workspaceRoot;\n if (typeof workspaceRoot === \"string\" && workspaceRoot.trim().length > 0) {\n return path.resolve(workspaceRoot);\n }\n\n return rootDir;\n}\n\nfunction resolveExpectedMode(\n value: unknown\n): Parameters<typeof validateGuidedSessionInput>[0][\"expectMode\"] {\n return value === \"implementation\" ||\n value === \"pr_review\" ||\n value === \"codebase_walkthrough\"\n ? value\n : undefined;\n}\n\nserver.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: [\n {\n name: \"get_duckwalk_contract\",\n description:\n \"Return the duckWalk session contract, rules, and example payloads for Codex.\",\n inputSchema: {\n type: \"object\",\n properties: {}\n }\n },\n {\n name: \"validate_guided_session\",\n description:\n \"Validate a GuidedSession payload without writing files, and return a normalized summary.\",\n inputSchema: {\n type: \"object\",\n properties: {\n session: {\n type: \"object\",\n description: \"A full GuidedSession payload.\"\n },\n expectMode: {\n type: \"string\",\n enum: [\"implementation\", \"pr_review\", \"codebase_walkthrough\"],\n description: \"Optional expected mode check for the session.\"\n }\n },\n required: [\"session\"]\n }\n },\n {\n name: \"create_guided_session\",\n description: \"Validate and persist an implementation guided session.\",\n inputSchema: {\n type: \"object\",\n properties: {\n workspaceRoot: {\n type: \"string\",\n description:\n \"Optional absolute workspace root where .guided-implementation files should be written.\"\n },\n session: {\n type: \"object\",\n description: \"A full GuidedSession payload.\"\n }\n },\n required: [\"session\"]\n }\n },\n {\n name: \"create_pr_review_session\",\n description: \"Validate and persist a PR review guided session.\",\n inputSchema: {\n type: \"object\",\n properties: {\n workspaceRoot: {\n type: \"string\",\n description:\n \"Optional absolute workspace root where .guided-implementation files should be written.\"\n },\n session: {\n type: \"object\",\n description: \"A full GuidedSession payload with mode pr_review.\"\n }\n },\n required: [\"session\"]\n }\n },\n {\n name: \"pathfinder\",\n description: \"Validate and persist a question-driven codebase walkthrough session.\",\n inputSchema: {\n type: \"object\",\n properties: {\n workspaceRoot: {\n type: \"string\",\n description:\n \"Optional absolute workspace root where .guided-implementation files should be written.\"\n },\n session: {\n type: \"object\",\n description: \"A full GuidedSession payload with mode codebase_walkthrough.\"\n }\n },\n required: [\"session\"]\n }\n },\n {\n name: \"get_guided_session\",\n description: \"Read the current session or a specific session by ID.\",\n inputSchema: {\n type: \"object\",\n properties: {\n workspaceRoot: {\n type: \"string\",\n description:\n \"Optional absolute workspace root where the guided session should be read.\"\n },\n sessionId: {\n type: \"string\"\n }\n }\n }\n },\n {\n name: \"update_step_status\",\n description: \"Update one step status in the current guided session state.\",\n inputSchema: {\n type: \"object\",\n properties: {\n workspaceRoot: {\n type: \"string\",\n description:\n \"Optional absolute workspace root where the guided session state should be updated.\"\n },\n sessionId: {\n type: \"string\"\n },\n stepId: {\n type: \"string\"\n },\n status: {\n type: \"string\",\n enum: [\"pending\", \"active\", \"complete\", \"skipped\"]\n }\n },\n required: [\"sessionId\", \"stepId\", \"status\"]\n }\n }\n ]\n}));\n\nserver.setRequestHandler(CallToolRequestSchema, async (request) => {\n const args = getArguments(request.params.arguments);\n const targetRoot = resolveTargetRoot(args);\n\n switch (request.params.name) {\n case \"get_duckwalk_contract\":\n return textResult(getDuckWalkContract());\n case \"validate_guided_session\":\n {\n const expectMode = resolveExpectedMode(args.expectMode);\n const payload = {\n session: args.session as Parameters<typeof validateGuidedSessionInput>[0][\"session\"],\n ...(expectMode ? { expectMode } : {})\n };\n\n return textResult(validateGuidedSessionInput(payload));\n }\n case \"create_guided_session\":\n return textResult(\n await createGuidedSession(\n targetRoot,\n args.session as Parameters<typeof createGuidedSession>[1]\n )\n );\n case \"create_pr_review_session\":\n return textResult(\n await createPrReviewSession(\n targetRoot,\n args.session as Parameters<typeof createPrReviewSession>[1]\n )\n );\n case \"pathfinder\":\n return textResult(\n await pathfinder(targetRoot, args.session as Parameters<typeof pathfinder>[1])\n );\n case \"get_guided_session\":\n return textResult(\n await getGuidedSession(\n targetRoot,\n typeof args.sessionId === \"string\" ? args.sessionId : undefined\n )\n );\n case \"update_step_status\":\n return textResult(\n await updateStepStatus(targetRoot, {\n sessionId: String(args.sessionId),\n stepId: String(args.stepId),\n status: args.status as Parameters<typeof updateStepStatus>[1][\"status\"]\n })\n );\n default:\n throw new Error(`Unknown tool: ${request.params.name}`);\n }\n});\n\nasync function main() {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n\nmain().catch((error) => {\n console.error(\"[duckwalk-mcp] fatal error\");\n console.error(error);\n process.exit(1);\n});\n"],"mappings":"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","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@duckwalk/mcp-server",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "duckWalk MCP server for guided implementation, PR review playback, and Pathfinder walkthroughs.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"README.md"
|
|
12
|
+
],
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "https://github.com/BashirTowdiee/DuckWalk.git",
|
|
16
|
+
"directory": "apps/mcp-server"
|
|
17
|
+
},
|
|
18
|
+
"homepage": "https://github.com/BashirTowdiee/DuckWalk/tree/main/apps/mcp-server#readme",
|
|
19
|
+
"bugs": {
|
|
20
|
+
"url": "https://github.com/BashirTowdiee/DuckWalk/issues"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"duckwalk",
|
|
24
|
+
"mcp",
|
|
25
|
+
"model-context-protocol",
|
|
26
|
+
"codex",
|
|
27
|
+
"pathfinder",
|
|
28
|
+
"code-review",
|
|
29
|
+
"architecture"
|
|
30
|
+
],
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=18"
|
|
33
|
+
},
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public"
|
|
36
|
+
},
|
|
37
|
+
"exports": {
|
|
38
|
+
".": {
|
|
39
|
+
"types": "./dist/index.d.ts",
|
|
40
|
+
"default": "./dist/index.js"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"bin": {
|
|
44
|
+
"duckwalk-mcp": "./dist/server.js"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
48
|
+
"zod": "^3.24.1"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@duckwalk/core": "0.1.0",
|
|
52
|
+
"@duckwalk/schema": "0.1.0"
|
|
53
|
+
},
|
|
54
|
+
"scripts": {
|
|
55
|
+
"build": "tsup",
|
|
56
|
+
"dev": "tsx watch src/server.ts",
|
|
57
|
+
"lint": "eslint . --max-warnings=0",
|
|
58
|
+
"test": "vitest run src/service.test.ts",
|
|
59
|
+
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
60
|
+
}
|
|
61
|
+
}
|