@ourroadmaps/mcp 0.6.0 → 0.7.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.
Files changed (2) hide show
  1. package/dist/index.js +121 -2
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -23670,6 +23670,70 @@ var updateProductSchema = exports_external.object({
23670
23670
  order: exports_external.number().int().optional()
23671
23671
  });
23672
23672
  var productListSchema = exports_external.array(productSchema);
23673
+ // ../../packages/shared/src/schemas/story.ts
23674
+ var epicSchema = exports_external.object({
23675
+ id: exports_external.string().uuid(),
23676
+ roadmapItemId: exports_external.string().uuid(),
23677
+ organizationId: exports_external.string(),
23678
+ title: exports_external.string(),
23679
+ description: exports_external.string().nullable(),
23680
+ order: exports_external.number().int(),
23681
+ createdAt: exports_external.string(),
23682
+ updatedAt: exports_external.string(),
23683
+ deletedAt: exports_external.string().nullable()
23684
+ });
23685
+ var storySchema = exports_external.object({
23686
+ id: exports_external.string().uuid(),
23687
+ roadmapItemId: exports_external.string().uuid(),
23688
+ epicId: exports_external.string().uuid().nullable(),
23689
+ organizationId: exports_external.string(),
23690
+ title: exports_external.string(),
23691
+ description: exports_external.string().nullable(),
23692
+ order: exports_external.number().int(),
23693
+ createdAt: exports_external.string(),
23694
+ updatedAt: exports_external.string(),
23695
+ deletedAt: exports_external.string().nullable()
23696
+ });
23697
+ var epicWithStoriesSchema = epicSchema.extend({
23698
+ stories: exports_external.array(storySchema)
23699
+ });
23700
+ var createEpicSchema = exports_external.object({
23701
+ title: exports_external.string().min(1),
23702
+ description: exports_external.string().nullable().optional()
23703
+ });
23704
+ var createStorySchema = exports_external.object({
23705
+ title: exports_external.string().min(1),
23706
+ description: exports_external.string().nullable().optional()
23707
+ });
23708
+ var saveStoriesInputSchema = exports_external.object({
23709
+ epics: exports_external.array(exports_external.object({
23710
+ title: exports_external.string().min(1),
23711
+ description: exports_external.string().nullable().optional(),
23712
+ stories: exports_external.array(exports_external.object({
23713
+ title: exports_external.string().min(1),
23714
+ description: exports_external.string().nullable().optional()
23715
+ })).optional().default([])
23716
+ })).optional().default([]),
23717
+ stories: exports_external.array(exports_external.object({
23718
+ title: exports_external.string().min(1),
23719
+ description: exports_external.string().nullable().optional()
23720
+ })).optional().default([])
23721
+ });
23722
+ var updateEpicSchema = exports_external.object({
23723
+ title: exports_external.string().min(1).optional(),
23724
+ description: exports_external.string().nullable().optional()
23725
+ });
23726
+ var updateStorySchema = exports_external.object({
23727
+ title: exports_external.string().min(1).optional(),
23728
+ description: exports_external.string().nullable().optional(),
23729
+ epicId: exports_external.string().uuid().nullable().optional()
23730
+ });
23731
+ var reorderStoriesSchema = exports_external.object({
23732
+ epicOrder: exports_external.array(exports_external.string().uuid()).optional(),
23733
+ storyOrder: exports_external.record(exports_external.string(), exports_external.array(exports_external.string().uuid())).optional(),
23734
+ standaloneOrder: exports_external.array(exports_external.string().uuid()).optional()
23735
+ });
23736
+
23673
23737
  // ../../packages/shared/src/schemas/roadmap.ts
23674
23738
  var flexibleDateSchema = exports_external.object({
23675
23739
  value: exports_external.string(),
@@ -23782,7 +23846,9 @@ var roadmapDetailSchema = roadmapSchema.extend({
23782
23846
  wireframes: exports_external.array(wireframeSchema),
23783
23847
  brainstormMedia: exports_external.array(brainstormMediaSchema),
23784
23848
  brainstormNotes: exports_external.string().nullable(),
23785
- featureLinks: exports_external.array(featureLinkSchema)
23849
+ featureLinks: exports_external.array(featureLinkSchema),
23850
+ epics: exports_external.array(epicWithStoriesSchema),
23851
+ stories: exports_external.array(storySchema)
23786
23852
  });
23787
23853
  var roadmapListSchema = exports_external.array(roadmapSchema);
23788
23854
  // ../../packages/shared/src/schemas/scenario.ts
@@ -24070,6 +24136,13 @@ class ApiClient {
24070
24136
  const response = await this.request(`/v1/history?${searchParams.toString()}`);
24071
24137
  return response.data;
24072
24138
  }
24139
+ async saveStories(roadmapId, data) {
24140
+ const response = await this.request(`/v1/roadmaps/${roadmapId}/stories`, {
24141
+ method: "POST",
24142
+ body: JSON.stringify(data)
24143
+ });
24144
+ return response.data;
24145
+ }
24073
24146
  }
24074
24147
  var client = null;
24075
24148
  function getApiClient() {
@@ -24118,6 +24191,7 @@ function registerAllTools(server) {
24118
24191
  registerListStatusUpdates(server);
24119
24192
  registerGetHistory(server);
24120
24193
  registerCreateStatusUpdate(server);
24194
+ registerSaveStories(server);
24121
24195
  }
24122
24196
  function registerSearchRoadmaps(server) {
24123
24197
  server.registerTool("search_roadmaps", {
@@ -24161,7 +24235,7 @@ function registerSearchRoadmaps(server) {
24161
24235
  }
24162
24236
  function registerGetRoadmap(server) {
24163
24237
  server.registerTool("get_roadmap", {
24164
- description: "Get full details of a roadmap item including PRD, wireframes, brainstorm media, linked features, and scenarios.",
24238
+ description: "Get full details of a roadmap item including PRD, wireframes, brainstorm media, linked features, epics, and stories.",
24165
24239
  inputSchema: {
24166
24240
  id: exports_external.string().describe("The UUID of the roadmap item")
24167
24241
  }
@@ -24196,6 +24270,8 @@ function registerGetRoadmap(server) {
24196
24270
  featureName: l.feature.name,
24197
24271
  featureType: l.feature.type
24198
24272
  })),
24273
+ epics: roadmap2.epics,
24274
+ stories: roadmap2.stories,
24199
24275
  createdAt: roadmap2.createdAt
24200
24276
  }, null, 2)
24201
24277
  }
@@ -25416,6 +25492,49 @@ function registerCreateStatusUpdate(server) {
25416
25492
  };
25417
25493
  });
25418
25494
  }
25495
+ function registerSaveStories(server) {
25496
+ server.registerTool("save_stories", {
25497
+ description: "Save epics and stories for a roadmap item. Replaces all existing epics/stories. Use this to set the complete list of epics and stories for a roadmap.",
25498
+ inputSchema: {
25499
+ roadmapId: exports_external.string().uuid().describe("The UUID of the roadmap item"),
25500
+ epics: exports_external.array(exports_external.object({
25501
+ title: exports_external.string().min(1).describe("Title of the epic"),
25502
+ description: exports_external.string().nullable().optional().describe("Description of the epic"),
25503
+ stories: exports_external.array(exports_external.object({
25504
+ title: exports_external.string().min(1).describe("Title of the story"),
25505
+ description: exports_external.string().nullable().optional().describe("Description of the story")
25506
+ })).optional().describe("Stories within this epic")
25507
+ })).optional().describe("List of epics with their nested stories"),
25508
+ stories: exports_external.array(exports_external.object({
25509
+ title: exports_external.string().min(1).describe("Title of the story"),
25510
+ description: exports_external.string().nullable().optional().describe("Description of the story")
25511
+ })).optional().describe("List of standalone stories (not part of any epic)")
25512
+ }
25513
+ }, async ({
25514
+ roadmapId,
25515
+ epics,
25516
+ stories
25517
+ }) => {
25518
+ const client2 = getApiClient();
25519
+ const result = await client2.saveStories(roadmapId, {
25520
+ epics: epics ?? [],
25521
+ stories: stories ?? []
25522
+ });
25523
+ return {
25524
+ content: [
25525
+ {
25526
+ type: "text",
25527
+ text: JSON.stringify({
25528
+ success: true,
25529
+ epicCount: result.epics.length,
25530
+ storyCount: result.stories.length,
25531
+ totalStories: result.stories.length + result.epics.reduce((sum, epic) => sum + (epic.stories?.length ?? 0), 0)
25532
+ }, null, 2)
25533
+ }
25534
+ ]
25535
+ };
25536
+ });
25537
+ }
25419
25538
 
25420
25539
  // src/index.ts
25421
25540
  async function main() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ourroadmaps/mcp",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "MCP server for OurRoadmaps - manage roadmaps, features, and ideas from Claude Code",
5
5
  "type": "module",
6
6
  "bin": {