@ourroadmaps/mcp 0.7.1 → 0.7.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.
Files changed (2) hide show
  1. package/dist/index.js +70 -7
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env node
2
- #!/usr/bin/env node
3
2
 
4
3
  // src/index.ts
5
4
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
@@ -488,6 +487,13 @@ class ApiClient {
488
487
  method: "DELETE"
489
488
  });
490
489
  }
490
+ async reorderRoadmaps(items) {
491
+ const response = await this.request("/v1/roadmaps/reorder", {
492
+ method: "POST",
493
+ body: JSON.stringify({ items })
494
+ });
495
+ return response;
496
+ }
491
497
  async savePrd(roadmapId, data) {
492
498
  const response = await this.request(`/v1/roadmaps/${roadmapId}/prd`, {
493
499
  method: "POST",
@@ -709,6 +715,7 @@ function registerAllTools(server) {
709
715
  registerCreateRoadmapItem(server);
710
716
  registerUpdateRoadmapItem(server);
711
717
  registerDeleteRoadmapItem(server);
718
+ registerReorderRoadmaps(server);
712
719
  registerAddFeature(server);
713
720
  registerUpdateFeature(server);
714
721
  registerDeleteFeature(server);
@@ -769,7 +776,10 @@ function registerSearchRoadmaps(server) {
769
776
  id: r.id,
770
777
  title: r.title,
771
778
  status: r.status,
772
- horizon: r.horizon
779
+ horizon: r.horizon,
780
+ value: r.value,
781
+ effort: r.effort,
782
+ order: r.order
773
783
  })), null, 2)
774
784
  }
775
785
  ]
@@ -794,6 +804,9 @@ function registerGetRoadmap(server) {
794
804
  title: roadmap2.title,
795
805
  status: roadmap2.status,
796
806
  horizon: roadmap2.horizon,
807
+ value: roadmap2.value,
808
+ effort: roadmap2.effort,
809
+ order: roadmap2.order,
797
810
  prd: roadmap2.prd,
798
811
  brainstormNotes: roadmap2.brainstormNotes,
799
812
  wireframes: roadmap2.wireframes?.map((w) => ({
@@ -933,17 +946,19 @@ function registerGetContext(server) {
933
946
  - Products: What the organization builds (brands, products, apps, services) with hierarchy
934
947
  - Audiences: Who the product serves (stakeholders and user personas) with their preferences
935
948
  - Scenarios: User workflows and how they accomplish goals
949
+ - Features: Capabilities and functionality areas organized hierarchically
936
950
  - Roadmap Summary: Count of items by status and horizon for planning overview
937
951
 
938
952
  Use this as your FIRST call when starting work on a roadmap to understand the full context.`,
939
953
  inputSchema: {}
940
954
  }, async () => {
941
955
  const client2 = getApiClient();
942
- const [strategy, products, audiences, scenarios, roadmaps] = await Promise.all([
956
+ const [strategy, products, audiences, scenarios, features, roadmaps] = await Promise.all([
943
957
  client2.getStrategy(),
944
958
  client2.listProducts(),
945
959
  client2.listAudiences(),
946
960
  client2.listScenarios(),
961
+ client2.listFeatures(),
947
962
  client2.listRoadmaps()
948
963
  ]);
949
964
  const statusCounts = {};
@@ -984,6 +999,12 @@ Use this as your FIRST call when starting work on a roadmap to understand the fu
984
999
  when: s.when,
985
1000
  then: s.then
986
1001
  })),
1002
+ features: features.map((f) => ({
1003
+ id: f.id,
1004
+ name: f.name,
1005
+ type: f.type,
1006
+ parentId: f.parentId
1007
+ })),
987
1008
  roadmapSummary: {
988
1009
  total: roadmaps.length,
989
1010
  byStatus: statusCounts,
@@ -1071,20 +1092,27 @@ function registerCreateRoadmapItem(server) {
1071
1092
  };
1072
1093
  });
1073
1094
  }
1095
+ var effortSizeSchema = z10.enum(["xs", "s", "m", "l", "xl"]);
1074
1096
  function registerUpdateRoadmapItem(server) {
1075
1097
  server.registerTool("update_roadmap_item", {
1076
- description: "Update an existing roadmap item. Can update title, status, horizon, prompt, or brainstorm notes.",
1098
+ description: "Update an existing roadmap item. Can update title, status, horizon, value, effort, order, prompt, or brainstorm notes.",
1077
1099
  inputSchema: {
1078
1100
  id: z10.string().describe("The UUID of the roadmap item to update"),
1079
1101
  title: z10.string().optional().describe("New title"),
1080
1102
  status: roadmapStatusSchema.optional().describe("New status"),
1081
- horizon: horizonSchema.optional().describe("New planning horizon")
1103
+ horizon: horizonSchema.optional().describe("New planning horizon"),
1104
+ value: z10.number().int().min(1).max(3).nullable().optional().describe("Value rating (1-3 stars, where 3 is highest value)"),
1105
+ effort: effortSizeSchema.nullable().optional().describe("Effort estimate (xs=extra small, s=small, m=medium, l=large, xl=extra large)"),
1106
+ order: z10.number().int().min(0).optional().describe("Sort order for prioritization (lower numbers appear first)")
1082
1107
  }
1083
1108
  }, async ({
1084
1109
  id,
1085
1110
  title,
1086
1111
  status,
1087
- horizon
1112
+ horizon,
1113
+ value,
1114
+ effort,
1115
+ order
1088
1116
  }) => {
1089
1117
  const client2 = getApiClient();
1090
1118
  const updates = {};
@@ -1094,6 +1122,12 @@ function registerUpdateRoadmapItem(server) {
1094
1122
  updates.status = status;
1095
1123
  if (horizon !== undefined)
1096
1124
  updates.horizon = horizon;
1125
+ if (value !== undefined)
1126
+ updates.value = value;
1127
+ if (effort !== undefined)
1128
+ updates.effort = effort;
1129
+ if (order !== undefined)
1130
+ updates.order = order;
1097
1131
  const roadmap2 = await client2.updateRoadmap(id, updates);
1098
1132
  return {
1099
1133
  content: [
@@ -1105,7 +1139,10 @@ function registerUpdateRoadmapItem(server) {
1105
1139
  id: roadmap2.id,
1106
1140
  title: roadmap2.title,
1107
1141
  status: roadmap2.status,
1108
- horizon: roadmap2.horizon
1142
+ horizon: roadmap2.horizon,
1143
+ value: roadmap2.value,
1144
+ effort: roadmap2.effort,
1145
+ order: roadmap2.order
1109
1146
  }
1110
1147
  }, null, 2)
1111
1148
  }
@@ -1260,6 +1297,32 @@ function registerDeleteRoadmapItem(server) {
1260
1297
  };
1261
1298
  });
1262
1299
  }
1300
+ function registerReorderRoadmaps(server) {
1301
+ server.registerTool("reorder_roadmaps", {
1302
+ description: "Bulk reorder roadmap items by setting their order values. Use this to prioritize and organize the roadmap. Lower order values appear first.",
1303
+ inputSchema: {
1304
+ items: z10.array(z10.object({
1305
+ id: z10.string().describe("The UUID of the roadmap item"),
1306
+ order: z10.number().int().min(0).describe("The new order value (0-based, lower = higher priority)")
1307
+ })).describe("Array of roadmap items with their new order values")
1308
+ }
1309
+ }, async ({ items }) => {
1310
+ const client2 = getApiClient();
1311
+ const result = await client2.reorderRoadmaps(items);
1312
+ return {
1313
+ content: [
1314
+ {
1315
+ type: "text",
1316
+ text: JSON.stringify({
1317
+ success: result.success,
1318
+ message: `Successfully reordered ${items.length} roadmap items`,
1319
+ itemsReordered: items.length
1320
+ }, null, 2)
1321
+ }
1322
+ ]
1323
+ };
1324
+ });
1325
+ }
1263
1326
  function registerUpdateFeature(server) {
1264
1327
  server.registerTool("update_feature", {
1265
1328
  description: "Update an existing feature. Can update name, type, or parent.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ourroadmaps/mcp",
3
- "version": "0.7.1",
3
+ "version": "0.7.4",
4
4
  "description": "MCP server for OurRoadmaps - manage roadmaps, features, and ideas from Claude Code",
5
5
  "type": "module",
6
6
  "bin": {