@granoflow/mcp-server 0.1.2 → 0.1.4

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 CHANGED
@@ -42,6 +42,20 @@ file; keep `GRANOFLOW_API_TOKEN` in the MCP client environment.
42
42
  npm install -g @granoflow/mcp-server
43
43
  ```
44
44
 
45
+ For a user-facing setup walkthrough, see
46
+ [Granoflow MCP User Install And Demo Guide](docs/user-install-demo.md).
47
+
48
+ For maintainers, see
49
+ [Granoflow MCP Release Checklist](docs/release-checklist.md).
50
+
51
+ ## Release Branch Policy
52
+
53
+ - `develop` is the active integration branch. It may contain unverified or
54
+ unreleased changes.
55
+ - `main` is the npm release branch. Publish `@granoflow/mcp-server` latest only
56
+ from `main`.
57
+ - Merge or fast-forward `develop` into `main` only after release preflight passes.
58
+
45
59
  For local development:
46
60
 
47
61
  ```bash
@@ -60,8 +74,7 @@ npx -y @granoflow/mcp-server --help
60
74
  Before publishing a release, verify the package contents:
61
75
 
62
76
  ```bash
63
- npm run check
64
- npm pack --dry-run
77
+ npm run release:preflight
65
78
  ```
66
79
 
67
80
  ## Tools
@@ -86,12 +99,18 @@ Initial tools:
86
99
  - `granoflow_task_update`
87
100
  - `granoflow_task_update_structured`
88
101
  - `granoflow_task_complete`
102
+ - `granoflow_task_finish`
103
+ - `granoflow_task_resolve`
89
104
  - `granoflow_project_list`
105
+ - `granoflow_project_resolve`
90
106
  - `granoflow_project_create`
91
107
  - `granoflow_project_update`
108
+ - `granoflow_project_delete`
92
109
  - `granoflow_milestone_list`
110
+ - `granoflow_milestone_resolve`
93
111
  - `granoflow_milestone_create`
94
112
  - `granoflow_milestone_update`
113
+ - `granoflow_milestone_delete`
95
114
  - `granoflow_review_day_show`
96
115
  - `granoflow_api_request`
97
116
 
@@ -101,6 +120,8 @@ running app exposes newer fields before this package has first-class schemas.
101
120
 
102
121
  Write tools default to dry-run behavior. Ask the tool to write only after you
103
122
  have reviewed the preview or the user has explicitly requested a write.
123
+ Delete tools also require the current resource title before writing, and refuse
124
+ linked tasks unless the caller explicitly accepts that impact.
104
125
 
105
126
  ## Setup Diagnostics
106
127
 
@@ -108,8 +129,9 @@ Use the setup tools when an agent or MCP client needs to connect to a local
108
129
  Granoflow app without hand-editing every setting first:
109
130
 
110
131
  - `granoflow_setup_status` reports config path, env/config precedence, token
111
- presence, Local HTTP API health, version metadata, and local Granoflow process
112
- evidence without printing secrets.
132
+ presence, MCP server version, Local HTTP API health, version metadata,
133
+ capability summary, and local Granoflow process evidence without printing
134
+ secrets.
113
135
  - `granoflow_setup_detect_local_api` probes a small bounded localhost port list
114
136
  only.
115
137
  - `granoflow_setup_write_config` previews or writes non-secret config. It
@@ -1,2 +1,2 @@
1
1
  export declare const SERVER_NAME = "granoflow-mcp-server";
2
- export declare const SERVER_VERSION = "0.1.2";
2
+ export declare const SERVER_VERSION = "0.1.4";
package/dist/metadata.js CHANGED
@@ -1,3 +1,3 @@
1
1
  export const SERVER_NAME = "granoflow-mcp-server";
2
- export const SERVER_VERSION = "0.1.2";
2
+ export const SERVER_VERSION = "0.1.4";
3
3
  //# sourceMappingURL=metadata.js.map
package/dist/setup.d.ts CHANGED
@@ -29,6 +29,10 @@ export declare function getSetupStatus(options?: SetupOptions): Promise<{
29
29
  present: boolean;
30
30
  source: "env" | "none";
31
31
  };
32
+ mcp: {
33
+ serverName: string;
34
+ serverVersion: string;
35
+ };
32
36
  health: {
33
37
  appProcess: Record<string, unknown>;
34
38
  ok: boolean;
@@ -48,6 +52,7 @@ export declare function getSetupStatus(options?: SetupOptions): Promise<{
48
52
  };
49
53
  };
50
54
  version: import("./api.js").ApiResult;
55
+ capabilities: Record<string, unknown>;
51
56
  warnings: Record<string, unknown>[];
52
57
  nextActions: string[];
53
58
  appProcess?: undefined;
@@ -61,8 +66,13 @@ export declare function getSetupStatus(options?: SetupOptions): Promise<{
61
66
  present: boolean;
62
67
  source: "env" | "none";
63
68
  };
69
+ mcp: {
70
+ serverName: string;
71
+ serverVersion: string;
72
+ };
64
73
  health: import("./api.js").ApiResult;
65
74
  version: import("./api.js").ApiResult;
75
+ capabilities: Record<string, unknown>;
66
76
  appProcess: Record<string, unknown>;
67
77
  warnings: Record<string, unknown>[];
68
78
  nextActions: string[];
package/dist/setup.js CHANGED
@@ -3,6 +3,7 @@ import { mkdir, writeFile } from "node:fs/promises";
3
3
  import { dirname } from "node:path";
4
4
  import { requestGranoflowApi } from "./api.js";
5
5
  import { configFileExists, getMcpConfigPath, readMcpConfig, resolveMcpRuntime, writeMcpConfig, } from "./config.js";
6
+ import { SERVER_NAME, SERVER_VERSION } from "./metadata.js";
6
7
  const DEFAULT_PORTS = [56789, 47631, 38080];
7
8
  const MAX_PORT_CANDIDATES = 20;
8
9
  const PROBE_PATHS = ["/health", "/api/capabilities", "/v1/health"];
@@ -115,12 +116,44 @@ async function checkGranoflowProcess(runCommandImpl) {
115
116
  };
116
117
  }
117
118
  }
119
+ function summarizeCapabilities(value) {
120
+ const data = isObject(value) ? value.data : null;
121
+ const payload = isObject(data) && isObject(data.data) ? data.data : data;
122
+ if (!isObject(payload)) {
123
+ return {
124
+ available: false,
125
+ };
126
+ }
127
+ const tools = Array.isArray(payload.tools) ? payload.tools : [];
128
+ const aiAgent = isObject(payload.aiAgent) ? payload.aiAgent : {};
129
+ const aiAgentTools = Array.isArray(aiAgent.tools) ? aiAgent.tools : [];
130
+ const capabilities = Array.isArray(payload.capabilities) ? payload.capabilities : [];
131
+ const resources = isObject(payload.resources) ? Object.keys(payload.resources) : [];
132
+ return {
133
+ available: true,
134
+ apiVersion: payload.apiVersion,
135
+ appVersion: payload.appVersion,
136
+ resourceCount: resources.length,
137
+ resources,
138
+ toolCount: tools.length + aiAgentTools.length,
139
+ capabilityCount: capabilities.length,
140
+ tools: [...tools, ...aiAgentTools].slice(0, 20),
141
+ truncated: tools.length + aiAgentTools.length > 20,
142
+ };
143
+ }
144
+ function mcpRuntimeSummary() {
145
+ return {
146
+ serverName: SERVER_NAME,
147
+ serverVersion: SERVER_VERSION,
148
+ };
149
+ }
118
150
  export async function getSetupStatus(options = {}) {
119
151
  const env = options.env ?? process.env;
120
152
  const runCommandImpl = options.runCommand ?? runCommand;
121
153
  const runtime = await resolveMcpRuntime(env);
122
154
  const health = await requestGranoflowApi({ path: "/v1/health" }, env);
123
155
  const version = await requestGranoflowApi({ path: "/v1/version" }, env);
156
+ const capabilities = await requestGranoflowApi({ path: "/v1/capabilities" }, env);
124
157
  const warnings = [];
125
158
  const appProcess = isLocalApiBaseUrl(runtime.apiBaseUrl)
126
159
  ? await checkGranoflowProcess(runCommandImpl)
@@ -162,11 +195,13 @@ export async function getSetupStatus(options = {}) {
162
195
  present: runtime.hasApiToken,
163
196
  source: runtime.apiTokenSource,
164
197
  },
198
+ mcp: mcpRuntimeSummary(),
165
199
  health: {
166
200
  ...health,
167
201
  appProcess,
168
202
  },
169
203
  version,
204
+ capabilities: summarizeCapabilities(capabilities),
170
205
  warnings,
171
206
  nextActions: warnings.some((warning) => warning.code === "granoflow_app_not_running")
172
207
  ? [
@@ -189,8 +224,10 @@ export async function getSetupStatus(options = {}) {
189
224
  present: runtime.hasApiToken,
190
225
  source: runtime.apiTokenSource,
191
226
  },
227
+ mcp: mcpRuntimeSummary(),
192
228
  health,
193
229
  version,
230
+ capabilities: summarizeCapabilities(capabilities),
194
231
  appProcess,
195
232
  warnings,
196
233
  nextActions: health.ok
package/dist/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
package/dist/tools.js CHANGED
@@ -5,6 +5,7 @@ const jsonInputSchema = z
5
5
  .record(z.string(), z.unknown())
6
6
  .describe("JSON object sent to the Granoflow Local HTTP API.");
7
7
  const resourceStatusSchema = z.string().min(1).optional();
8
+ const resolveMatchModeSchema = z.enum(["exact", "contains"]).default("exact");
8
9
  function compactRecord(record) {
9
10
  return Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined));
10
11
  }
@@ -19,6 +20,259 @@ function jsonTextResult(value) {
19
20
  async function apiTool(options) {
20
21
  return jsonTextResult(await requestGranoflowApi(options));
21
22
  }
23
+ function isObject(value) {
24
+ return typeof value === "object" && value !== null && !Array.isArray(value);
25
+ }
26
+ function unwrapApiData(value) {
27
+ if (!isObject(value)) {
28
+ return value;
29
+ }
30
+ const outerData = value.data;
31
+ if (isObject(outerData) && "items" in outerData) {
32
+ return outerData;
33
+ }
34
+ if (isObject(outerData) && isObject(outerData.data) && "items" in outerData.data) {
35
+ return outerData.data;
36
+ }
37
+ return outerData ?? value;
38
+ }
39
+ function extractItems(value) {
40
+ const data = unwrapApiData(value);
41
+ if (isObject(data) && Array.isArray(data.items)) {
42
+ return data.items.filter(isObject);
43
+ }
44
+ return [];
45
+ }
46
+ function compactResource(record) {
47
+ return compactRecord({
48
+ id: record.id,
49
+ title: record.title,
50
+ status: record.status,
51
+ projectId: record.projectId,
52
+ milestoneId: record.milestoneId,
53
+ dueAt: record.dueAt,
54
+ startedAt: record.startedAt,
55
+ endedAt: record.endedAt,
56
+ description: record.description,
57
+ taskReview: record.taskReview,
58
+ });
59
+ }
60
+ function titleMatches(title, query, matchMode) {
61
+ if (typeof title !== "string") {
62
+ return false;
63
+ }
64
+ const normalizedTitle = title.trim().toLowerCase();
65
+ const normalizedQuery = query.trim().toLowerCase();
66
+ return matchMode === "exact"
67
+ ? normalizedTitle === normalizedQuery
68
+ : normalizedTitle.includes(normalizedQuery);
69
+ }
70
+ function listPathFor(kind) {
71
+ return `/v1/${kind}s`;
72
+ }
73
+ async function resolveResource(kind, input) {
74
+ const matchMode = input.matchMode ?? "exact";
75
+ const result = await requestGranoflowApi({ path: listPathFor(kind) });
76
+ if (!result.ok) {
77
+ return result;
78
+ }
79
+ const matches = extractItems(result).filter((item) => {
80
+ if (!titleMatches(item.title, input.query, matchMode)) {
81
+ return false;
82
+ }
83
+ if (input.projectId && item.projectId !== input.projectId) {
84
+ return false;
85
+ }
86
+ if (input.milestoneId && item.milestoneId !== input.milestoneId) {
87
+ return false;
88
+ }
89
+ if (!input.includeDone && item.status === "done") {
90
+ return false;
91
+ }
92
+ return true;
93
+ });
94
+ return {
95
+ ok: true,
96
+ code: "resolved",
97
+ data: {
98
+ entityType: kind,
99
+ query: input.query,
100
+ matchMode,
101
+ count: matches.length,
102
+ ambiguous: matches.length > 1,
103
+ matches: matches.map(compactResource),
104
+ },
105
+ runtime: result.runtime,
106
+ };
107
+ }
108
+ async function safeDeleteResource(kind, input) {
109
+ const listResult = await requestGranoflowApi({ path: listPathFor(kind) });
110
+ if (!listResult.ok) {
111
+ return listResult;
112
+ }
113
+ const resource = extractItems(listResult).find((item) => item.id === input.id);
114
+ if (!resource) {
115
+ return {
116
+ ok: false,
117
+ code: `${kind}_not_found`,
118
+ error: { message: `Granoflow ${kind} was not found.` },
119
+ runtime: listResult.runtime,
120
+ };
121
+ }
122
+ const tasksResult = await requestGranoflowApi({ path: "/v1/tasks" });
123
+ const linkedTasks = tasksResult.ok && kind === "project"
124
+ ? extractItems(tasksResult).filter((task) => task.projectId === input.id)
125
+ : tasksResult.ok
126
+ ? extractItems(tasksResult).filter((task) => task.milestoneId === input.id)
127
+ : [];
128
+ const impact = {
129
+ resource: compactResource(resource),
130
+ linkedTaskCount: linkedTasks.length,
131
+ linkedTasks: linkedTasks.map(compactResource),
132
+ };
133
+ if (input.dryRun !== false) {
134
+ return {
135
+ ok: true,
136
+ code: "dry_run",
137
+ data: {
138
+ method: "DELETE",
139
+ path: `/v1/${kind}s/${input.id}`,
140
+ impact,
141
+ previewMode: "local_request_only",
142
+ nextActions: [
143
+ "Review the impact preview.",
144
+ "Call again with dryRun=false, confirmTitle matching the current title, and allowLinkedTasks=true only if linked tasks may be affected.",
145
+ ],
146
+ },
147
+ runtime: listResult.runtime,
148
+ };
149
+ }
150
+ if (typeof resource.title === "string" && input.confirmTitle !== resource.title) {
151
+ return {
152
+ ok: false,
153
+ code: "confirmation_required",
154
+ data: {
155
+ expectedConfirmTitle: resource.title,
156
+ impact,
157
+ },
158
+ error: { message: "confirmTitle must match the current resource title before deletion." },
159
+ runtime: listResult.runtime,
160
+ };
161
+ }
162
+ if (linkedTasks.length > 0 && input.allowLinkedTasks !== true) {
163
+ return {
164
+ ok: false,
165
+ code: "linked_tasks_present",
166
+ data: impact,
167
+ error: {
168
+ message: "This resource has linked tasks. Re-run with allowLinkedTasks=true only after reviewing the impact.",
169
+ },
170
+ runtime: listResult.runtime,
171
+ };
172
+ }
173
+ const deleteResult = await requestGranoflowApi({
174
+ method: "DELETE",
175
+ path: `/v1/${kind}s/${input.id}`,
176
+ });
177
+ if (!deleteResult.ok) {
178
+ return deleteResult;
179
+ }
180
+ const readback = await requestGranoflowApi({ path: listPathFor(kind) });
181
+ const stillPresent = readback.ok
182
+ ? extractItems(readback).some((item) => item.id === input.id)
183
+ : null;
184
+ return {
185
+ ok: stillPresent === false,
186
+ code: stillPresent === false ? "deleted" : "delete_unverified",
187
+ data: {
188
+ deleted: stillPresent === false,
189
+ impact,
190
+ deleteResult,
191
+ readback: readback.ok ? { stillPresent } : readback,
192
+ },
193
+ runtime: deleteResult.runtime,
194
+ };
195
+ }
196
+ async function finishTask(input) {
197
+ const updateBody = compactRecord({
198
+ taskReview: input.taskReview,
199
+ endedAt: input.endedAt,
200
+ });
201
+ const steps = [
202
+ ...(Object.keys(updateBody).length > 0
203
+ ? [{ method: "PATCH", path: `/v1/tasks/${input.taskId}`, body: updateBody }]
204
+ : []),
205
+ {
206
+ method: "POST",
207
+ path: `/v1/tasks/${input.taskId}/complete`,
208
+ body: compactRecord({ endedAt: input.endedAt }),
209
+ },
210
+ { method: "GET", path: "/v1/tasks", verify: "status=done and endedAt present when available" },
211
+ ];
212
+ if (input.dryRun !== false) {
213
+ const preview = await requestGranoflowApi({
214
+ method: "POST",
215
+ path: `/v1/tasks/${input.taskId}/complete`,
216
+ body: compactRecord({ taskReview: input.taskReview, endedAt: input.endedAt }),
217
+ dryRun: true,
218
+ });
219
+ return {
220
+ ...preview,
221
+ data: {
222
+ steps,
223
+ previewMode: "local_request_sequence_only",
224
+ },
225
+ };
226
+ }
227
+ if (input.confirmComplete !== true) {
228
+ const runtime = await requestGranoflowApi({ path: "/v1/health", dryRun: true });
229
+ return {
230
+ ok: false,
231
+ code: "confirmation_required",
232
+ data: {
233
+ steps,
234
+ requiredInput: { confirmComplete: true },
235
+ },
236
+ error: { message: "Set confirmComplete=true to finish a Granoflow task." },
237
+ runtime: runtime.runtime,
238
+ };
239
+ }
240
+ const applied = [];
241
+ if (Object.keys(updateBody).length > 0) {
242
+ const updateResult = await requestGranoflowApi({
243
+ method: "PATCH",
244
+ path: `/v1/tasks/${input.taskId}`,
245
+ body: updateBody,
246
+ });
247
+ applied.push({ step: "update_task", result: updateResult });
248
+ if (!updateResult.ok) {
249
+ return updateResult;
250
+ }
251
+ }
252
+ const completeResult = await requestGranoflowApi({
253
+ method: "POST",
254
+ path: `/v1/tasks/${input.taskId}/complete`,
255
+ body: compactRecord({ endedAt: input.endedAt }),
256
+ });
257
+ applied.push({ step: "complete_task", result: completeResult });
258
+ if (!completeResult.ok) {
259
+ return completeResult;
260
+ }
261
+ const readback = await requestGranoflowApi({ path: "/v1/tasks" });
262
+ const task = extractItems(readback).find((item) => item.id === input.taskId);
263
+ const verified = task?.status === "done";
264
+ return {
265
+ ok: verified,
266
+ code: verified ? "task_finished" : "finish_unverified",
267
+ data: {
268
+ task: task ? compactResource(task) : null,
269
+ verified,
270
+ applied,
271
+ readback: readback.ok ? { found: Boolean(task) } : readback,
272
+ },
273
+ runtime: completeResult.runtime,
274
+ };
275
+ }
22
276
  export function registerGranoflowTools(server) {
23
277
  server.tool("granoflow_setup_status", "Inspect Granoflow MCP config and Local HTTP API health without printing secrets.", {}, async () => jsonTextResult(await getSetupStatus()));
24
278
  server.tool("granoflow_setup_detect_local_api", "Probe a bounded localhost port list for a running Granoflow Local HTTP API.", {
@@ -161,7 +415,45 @@ export function registerGranoflowTools(server) {
161
415
  body: input,
162
416
  dryRun: dryRun !== false,
163
417
  }));
418
+ server.tool("granoflow_task_finish", "Write a task review, complete a Granoflow task, and read back status=done verification.", {
419
+ taskId: z.string().min(1).describe("Granoflow task id."),
420
+ taskReview: z.string().optional(),
421
+ endedAt: z.string().optional(),
422
+ confirmComplete: z.boolean().default(false).describe("Must be true when dryRun=false."),
423
+ dryRun: z
424
+ .boolean()
425
+ .default(true)
426
+ .describe("When true, previews the update/complete/readback sequence."),
427
+ }, async ({ taskId, taskReview, endedAt, confirmComplete, dryRun }) => jsonTextResult(await finishTask({
428
+ taskId: String(taskId),
429
+ taskReview: typeof taskReview === "string" ? taskReview : undefined,
430
+ endedAt: typeof endedAt === "string" ? endedAt : undefined,
431
+ confirmComplete: confirmComplete === true,
432
+ dryRun: dryRun !== false,
433
+ })));
434
+ server.tool("granoflow_task_resolve", "Resolve Granoflow task candidates by title without creating or updating data.", {
435
+ query: z.string().min(1),
436
+ matchMode: resolveMatchModeSchema,
437
+ projectId: z.string().min(1).optional(),
438
+ milestoneId: z.string().min(1).optional(),
439
+ includeDone: z.boolean().default(false),
440
+ }, async ({ query, matchMode, projectId, milestoneId, includeDone }) => jsonTextResult(await resolveResource("task", {
441
+ query: String(query),
442
+ matchMode: matchMode,
443
+ projectId: typeof projectId === "string" ? projectId : undefined,
444
+ milestoneId: typeof milestoneId === "string" ? milestoneId : undefined,
445
+ includeDone: includeDone === true,
446
+ })));
164
447
  server.tool("granoflow_project_list", "List Granoflow projects.", {}, async () => apiTool({ path: "/v1/projects" }));
448
+ server.tool("granoflow_project_resolve", "Resolve Granoflow project candidates by title without creating or updating data.", {
449
+ query: z.string().min(1),
450
+ matchMode: resolveMatchModeSchema,
451
+ includeDone: z.boolean().default(false),
452
+ }, async ({ query, matchMode, includeDone }) => jsonTextResult(await resolveResource("project", {
453
+ query: String(query),
454
+ matchMode: matchMode,
455
+ includeDone: includeDone === true,
456
+ })));
165
457
  server.tool("granoflow_project_create", "Create a Granoflow project with common structured fields. Defaults to dry-run.", {
166
458
  title: z.string().min(1),
167
459
  description: z.string().optional(),
@@ -203,7 +495,29 @@ export function registerGranoflowTools(server) {
203
495
  }),
204
496
  dryRun: dryRun !== false,
205
497
  }));
498
+ server.tool("granoflow_project_delete", "Safely delete a Granoflow project. Defaults to dry-run and requires confirmTitle for writes.", {
499
+ projectId: z.string().min(1).describe("Granoflow project id."),
500
+ confirmTitle: z.string().min(1).optional(),
501
+ allowLinkedTasks: z.boolean().default(false),
502
+ dryRun: z.boolean().default(true),
503
+ }, async ({ projectId, confirmTitle, allowLinkedTasks, dryRun }) => jsonTextResult(await safeDeleteResource("project", {
504
+ id: String(projectId),
505
+ confirmTitle: typeof confirmTitle === "string" ? confirmTitle : undefined,
506
+ allowLinkedTasks: allowLinkedTasks === true,
507
+ dryRun: dryRun !== false,
508
+ })));
206
509
  server.tool("granoflow_milestone_list", "List Granoflow milestones.", {}, async () => apiTool({ path: "/v1/milestones" }));
510
+ server.tool("granoflow_milestone_resolve", "Resolve Granoflow milestone candidates by title without creating or updating data.", {
511
+ query: z.string().min(1),
512
+ matchMode: resolveMatchModeSchema,
513
+ projectId: z.string().min(1).optional(),
514
+ includeDone: z.boolean().default(false),
515
+ }, async ({ query, matchMode, projectId, includeDone }) => jsonTextResult(await resolveResource("milestone", {
516
+ query: String(query),
517
+ matchMode: matchMode,
518
+ projectId: typeof projectId === "string" ? projectId : undefined,
519
+ includeDone: includeDone === true,
520
+ })));
207
521
  server.tool("granoflow_milestone_create", "Create a Granoflow milestone with common structured fields. Defaults to dry-run.", {
208
522
  projectId: z.string().min(1).describe("Granoflow project id."),
209
523
  title: z.string().min(1),
@@ -226,6 +540,17 @@ export function registerGranoflowTools(server) {
226
540
  }),
227
541
  dryRun: dryRun !== false,
228
542
  }));
543
+ server.tool("granoflow_milestone_delete", "Safely delete a Granoflow milestone. Defaults to dry-run and requires confirmTitle for writes.", {
544
+ milestoneId: z.string().min(1).describe("Granoflow milestone id."),
545
+ confirmTitle: z.string().min(1).optional(),
546
+ allowLinkedTasks: z.boolean().default(false),
547
+ dryRun: z.boolean().default(true),
548
+ }, async ({ milestoneId, confirmTitle, allowLinkedTasks, dryRun }) => jsonTextResult(await safeDeleteResource("milestone", {
549
+ id: String(milestoneId),
550
+ confirmTitle: typeof confirmTitle === "string" ? confirmTitle : undefined,
551
+ allowLinkedTasks: allowLinkedTasks === true,
552
+ dryRun: dryRun !== false,
553
+ })));
229
554
  server.tool("granoflow_milestone_update", "Update a Granoflow milestone with common structured fields. Defaults to dry-run.", {
230
555
  milestoneId: z.string().min(1).describe("Granoflow milestone id."),
231
556
  projectId: z.string().min(1).optional(),
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ # Granoflow MCP Release Checklist
2
+
3
+ Use this checklist before publishing a new `@granoflow/mcp-server` version.
4
+
5
+ ## 0. Release Branch Policy
6
+
7
+ Publish npm `latest` only from `main`.
8
+
9
+ - `develop` is for active integration and may be unstable.
10
+ - `main` is the release branch users should associate with npm `latest`.
11
+ - Before publishing, merge or fast-forward the intended `develop` commit into
12
+ `main`, then run this checklist on `main`.
13
+ - Do not run `npm publish --access public` from `develop` unless the user
14
+ explicitly overrides this policy for an emergency release.
15
+
16
+ ## 1. Source State
17
+
18
+ - Confirm the worktree is clean or only contains intended release changes:
19
+
20
+ ```bash
21
+ git status --short --branch
22
+ ```
23
+
24
+ - Confirm the current branch is `main` before publish:
25
+
26
+ ```bash
27
+ git branch --show-current
28
+ ```
29
+
30
+ - Confirm the package version, runtime metadata, and tests agree:
31
+
32
+ ```bash
33
+ node -p "require('./package.json').version"
34
+ npm run release:preflight
35
+ node dist/index.js --version
36
+ ```
37
+
38
+ ## 2. Static Gates
39
+
40
+ Run the project gate:
41
+
42
+ ```bash
43
+ npm run release:preflight
44
+ ```
45
+
46
+ The preflight includes `npm run check`, so these gates must pass:
47
+
48
+ - Prettier
49
+ - ESLint
50
+ - TypeScript build
51
+ - Vitest
52
+
53
+ ## 3. Package Contents
54
+
55
+ Inspect the packed files:
56
+
57
+ ```bash
58
+ npm run release:preflight
59
+ ```
60
+
61
+ Verify:
62
+
63
+ - `dist/index.js` is present.
64
+ - `dist/index.js` mode is executable, for example `493`.
65
+ - `README.md` is present.
66
+ - `docs/` files are present when documentation changed.
67
+ - no obsolete `dist/cli.*` files are present.
68
+ - no local config, token, recovery code, or temporary file is present.
69
+
70
+ Remove the generated `.tgz` after inspection unless you intentionally need it:
71
+
72
+ ```bash
73
+ rm -f granoflow-mcp-server-*.tgz
74
+ ```
75
+
76
+ ## 4. Local MCP Smoke
77
+
78
+ Start the package through stdio and list tools. The smoke should prove:
79
+
80
+ - expected tool count is returned.
81
+ - `granoflow_health` returns `code: "ok"` when Granoflow is running.
82
+ - resource tools such as project, milestone, and structured task tools exist.
83
+ - write tools can return `code: "dry_run"` without creating real data.
84
+
85
+ ## 5. App Runtime Evidence
86
+
87
+ Verify the running Granoflow app:
88
+
89
+ ```bash
90
+ curl -s http://127.0.0.1:56789/v1/health
91
+ ```
92
+
93
+ For macOS production app verification, `granoflow_setup_status` should show a
94
+ process path like:
95
+
96
+ ```text
97
+ /Applications/granoflow.app/Contents/MacOS/granoflow
98
+ ```
99
+
100
+ ## 6. Client Config Examples
101
+
102
+ Confirm README and docs show the same command shape:
103
+
104
+ ```text
105
+ command = "npx"
106
+ args = ["-y", "@granoflow/mcp-server"]
107
+ ```
108
+
109
+ Cursor and Codex examples should set:
110
+
111
+ ```text
112
+ GRANOFLOW_API_BASE_URL=http://127.0.0.1:56789
113
+ ```
114
+
115
+ Do not add API tokens to checked-in examples.
116
+
117
+ ## 7. Secret And Drift Checks
118
+
119
+ Search for obsolete command-wrapper references and secret-like values:
120
+
121
+ ```bash
122
+ rg -n "granoflow-cli|GRANOFLOW_CLI|cliPath|granoflow_cli" README.md docs src tests package.json AGENTS.md
123
+ rg -n "recovery code|_authToken|secret-token|npm password" README.md docs src tests package.json AGENTS.md
124
+ ```
125
+
126
+ Expected result:
127
+
128
+ - no obsolete command-wrapper dependency.
129
+ - no real token, OTP, password, or recovery code.
130
+ - test fixtures may use fake values only when they assert redaction.
131
+
132
+ ## 8. Publish
133
+
134
+ Publish only after all previous checks pass:
135
+
136
+ ```bash
137
+ npm publish --access public
138
+ ```
139
+
140
+ If npm requires two-factor authentication, provide an OTP through the command
141
+ line without printing it in logs. Do not paste OTPs or recovery codes into issue
142
+ reports, docs, screenshots, or chat transcripts.
143
+
144
+ ## 9. Post-Publish Verification
145
+
146
+ Verify the published package:
147
+
148
+ ```bash
149
+ npm access get status @granoflow/mcp-server
150
+ npm dist-tag ls @granoflow/mcp-server
151
+ npx -y @granoflow/mcp-server@<version> --version
152
+ npx -y @granoflow/mcp-server --version
153
+ ```
154
+
155
+ Run one MCP stdio smoke against the published version:
156
+
157
+ - list tools
158
+ - call `granoflow_health`
159
+ - call one dry-run write tool
160
+
161
+ Only then write release notes or mark the release task done.
@@ -0,0 +1,140 @@
1
+ # Granoflow MCP User Install And Demo Guide
2
+
3
+ This guide helps you connect Codex or Cursor to the Granoflow desktop app
4
+ through the Granoflow Local HTTP API.
5
+
6
+ ## 1. Start Granoflow
7
+
8
+ Open the installed Granoflow desktop app. On macOS the production app is usually:
9
+
10
+ ```text
11
+ /Applications/granoflow.app
12
+ ```
13
+
14
+ In Granoflow, open the local interface service page and turn on the Local HTTP
15
+ API. The default local address is:
16
+
17
+ ```text
18
+ http://127.0.0.1:56789
19
+ ```
20
+
21
+ Verify the app is reachable:
22
+
23
+ ```bash
24
+ curl -s http://127.0.0.1:56789/v1/health
25
+ ```
26
+
27
+ A healthy response includes `status`, `apiEnabled`, `running`, and `version`.
28
+
29
+ ## 2. Check The MCP Package
30
+
31
+ Verify the npm package can run:
32
+
33
+ ```bash
34
+ npx -y @granoflow/mcp-server --version
35
+ ```
36
+
37
+ The command should print the package version.
38
+
39
+ ## 3. Configure Codex
40
+
41
+ Add this to `~/.codex/config.toml`:
42
+
43
+ ```toml
44
+ [mcp_servers.granoflow]
45
+ type = "stdio"
46
+ command = "npx"
47
+ args = ["-y", "@granoflow/mcp-server"]
48
+
49
+ [mcp_servers.granoflow.env]
50
+ GRANOFLOW_API_BASE_URL = "http://127.0.0.1:56789"
51
+ ```
52
+
53
+ Restart Codex or reload MCP servers after changing the file.
54
+
55
+ ## 4. Configure Cursor
56
+
57
+ Add this to `~/.cursor/mcp.json`:
58
+
59
+ ```json
60
+ {
61
+ "mcpServers": {
62
+ "granoflow": {
63
+ "command": "npx",
64
+ "args": ["-y", "@granoflow/mcp-server"],
65
+ "env": {
66
+ "GRANOFLOW_API_BASE_URL": "http://127.0.0.1:56789"
67
+ }
68
+ }
69
+ }
70
+ }
71
+ ```
72
+
73
+ Restart Cursor or reload MCP servers after changing the file.
74
+
75
+ ## 5. First Demo
76
+
77
+ Ask your MCP client to call:
78
+
79
+ - `granoflow_health`
80
+ - `granoflow_version`
81
+ - `granoflow_task_list`
82
+
83
+ Expected result:
84
+
85
+ - health returns `code: "ok"`
86
+ - version returns Granoflow app version metadata
87
+ - task list returns your current Granoflow tasks
88
+
89
+ ## 6. Dry-Run Write Demo
90
+
91
+ Use a dry-run before any write. For example, ask the MCP client to call
92
+ `granoflow_task_create_structured` with:
93
+
94
+ ```json
95
+ {
96
+ "title": "MCP dry-run test",
97
+ "description": "This request should preview only.",
98
+ "dryRun": true
99
+ }
100
+ ```
101
+
102
+ Expected result:
103
+
104
+ ```json
105
+ {
106
+ "code": "dry_run"
107
+ }
108
+ ```
109
+
110
+ The dry-run preview should not create a real task.
111
+
112
+ ## Troubleshooting
113
+
114
+ ### The health check cannot connect
115
+
116
+ Check that Granoflow is open and that the Local HTTP API is enabled in the app.
117
+ If you changed the port in Granoflow, update `GRANOFLOW_API_BASE_URL` in your MCP
118
+ client config.
119
+
120
+ ### The MCP client does not show Granoflow tools
121
+
122
+ Restart Codex or Cursor after editing the MCP config. Also verify:
123
+
124
+ ```bash
125
+ npx -y @granoflow/mcp-server --version
126
+ ```
127
+
128
+ ### The MCP client connects to the wrong app
129
+
130
+ Call `granoflow_setup_status`. On macOS, the process evidence should point to
131
+ the production app when that is what you intended:
132
+
133
+ ```text
134
+ /Applications/granoflow.app/Contents/MacOS/granoflow
135
+ ```
136
+
137
+ ### You enabled an API token
138
+
139
+ Keep the token in the MCP client environment. Do not paste real tokens into
140
+ docs, screenshots, issue reports, or chat transcripts.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@granoflow/mcp-server",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "MCP server for Granoflow: exposes the Local HTTP API as tools for AI agents, IDEs, and automation.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -20,6 +20,7 @@
20
20
  },
21
21
  "files": [
22
22
  "dist",
23
+ "docs",
23
24
  "README.md",
24
25
  "LICENSE"
25
26
  ],
@@ -32,6 +33,7 @@
32
33
  "format:write": "prettier --write .",
33
34
  "test": "vitest run",
34
35
  "check": "npm run format && npm run lint && npm run build && npm run test",
36
+ "release:preflight": "node scripts/release-preflight.mjs",
35
37
  "prepublishOnly": "npm run check"
36
38
  },
37
39
  "engines": {