@ourroadmaps/mcp 0.3.0 → 0.5.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 +123 -0
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -24033,6 +24033,28 @@ class ApiClient {
24033
24033
  method: "DELETE"
24034
24034
  });
24035
24035
  }
24036
+ async listStatusUpdates() {
24037
+ const response = await this.request("/v1/status-updates");
24038
+ return response.data;
24039
+ }
24040
+ async createStatusUpdate(data) {
24041
+ const response = await this.request("/v1/status-updates", {
24042
+ method: "POST",
24043
+ body: JSON.stringify(data)
24044
+ });
24045
+ return response.data;
24046
+ }
24047
+ async getHistory(params) {
24048
+ const searchParams = new URLSearchParams({
24049
+ startDate: params.startDate,
24050
+ endDate: params.endDate
24051
+ });
24052
+ if (params.entityType) {
24053
+ searchParams.set("entityType", params.entityType);
24054
+ }
24055
+ const response = await this.request(`/v1/history?${searchParams.toString()}`);
24056
+ return response.data;
24057
+ }
24036
24058
  }
24037
24059
  var client = null;
24038
24060
  function getApiClient() {
@@ -24074,6 +24096,9 @@ function registerAllTools(server) {
24074
24096
  registerCreateAudience(server);
24075
24097
  registerUpdateAudience(server);
24076
24098
  registerDeleteAudience(server);
24099
+ registerListStatusUpdates(server);
24100
+ registerGetHistory(server);
24101
+ registerCreateStatusUpdate(server);
24077
24102
  }
24078
24103
  function registerSearchRoadmaps(server) {
24079
24104
  server.registerTool("search_roadmaps", {
@@ -25135,6 +25160,104 @@ function registerDeleteAudience(server) {
25135
25160
  };
25136
25161
  });
25137
25162
  }
25163
+ function registerListStatusUpdates(server) {
25164
+ server.registerTool("list_status_updates", {
25165
+ description: "List all status reports for the organization. Use this to find when the last report ended to auto-detect start date for a new report.",
25166
+ inputSchema: {}
25167
+ }, async () => {
25168
+ const client2 = getApiClient();
25169
+ const updates = await client2.listStatusUpdates();
25170
+ return {
25171
+ content: [
25172
+ {
25173
+ type: "text",
25174
+ text: JSON.stringify(updates.map((u) => ({
25175
+ id: u.id,
25176
+ title: u.title,
25177
+ startDate: u.startDate,
25178
+ endDate: u.endDate,
25179
+ createdAt: u.createdAt
25180
+ })), null, 2)
25181
+ }
25182
+ ]
25183
+ };
25184
+ });
25185
+ }
25186
+ function registerGetHistory(server) {
25187
+ server.registerTool("get_history", {
25188
+ description: "Get history events for a date range. Returns all changes (created, updated, deleted) to roadmaps, features, ideas, etc. Use this to gather data for generating status reports.",
25189
+ inputSchema: {
25190
+ startDate: exports_external.string().regex(/^\d{4}-\d{2}-\d{2}$/).describe("Start date in YYYY-MM-DD format"),
25191
+ endDate: exports_external.string().regex(/^\d{4}-\d{2}-\d{2}$/).describe("End date in YYYY-MM-DD format"),
25192
+ entityType: exports_external.enum([
25193
+ "roadmap",
25194
+ "feature",
25195
+ "idea",
25196
+ "prd",
25197
+ "wireframe",
25198
+ "product",
25199
+ "audience",
25200
+ "scenario"
25201
+ ]).optional().describe("Filter to specific entity type")
25202
+ }
25203
+ }, async ({
25204
+ startDate,
25205
+ endDate,
25206
+ entityType
25207
+ }) => {
25208
+ const client2 = getApiClient();
25209
+ const events = await client2.getHistory({ startDate, endDate, entityType });
25210
+ return {
25211
+ content: [
25212
+ {
25213
+ type: "text",
25214
+ text: JSON.stringify(events, null, 2)
25215
+ }
25216
+ ]
25217
+ };
25218
+ });
25219
+ }
25220
+ function registerCreateStatusUpdate(server) {
25221
+ server.registerTool("create_status_update", {
25222
+ description: "Create a new status report. Use this after generating the report content from history events.",
25223
+ inputSchema: {
25224
+ startDate: exports_external.string().regex(/^\d{4}-\d{2}-\d{2}$/).describe("Report period start date in YYYY-MM-DD format"),
25225
+ endDate: exports_external.string().regex(/^\d{4}-\d{2}-\d{2}$/).describe("Report period end date in YYYY-MM-DD format"),
25226
+ content: exports_external.string().describe("The markdown content of the status report"),
25227
+ title: exports_external.string().optional().describe("Optional title for the report")
25228
+ }
25229
+ }, async ({
25230
+ startDate,
25231
+ endDate,
25232
+ content,
25233
+ title
25234
+ }) => {
25235
+ const client2 = getApiClient();
25236
+ const update = await client2.createStatusUpdate({
25237
+ startDate,
25238
+ endDate,
25239
+ content,
25240
+ title
25241
+ });
25242
+ return {
25243
+ content: [
25244
+ {
25245
+ type: "text",
25246
+ text: JSON.stringify({
25247
+ success: true,
25248
+ statusUpdate: {
25249
+ id: update.id,
25250
+ title: update.title,
25251
+ startDate: update.startDate,
25252
+ endDate: update.endDate,
25253
+ createdAt: update.createdAt
25254
+ }
25255
+ }, null, 2)
25256
+ }
25257
+ ]
25258
+ };
25259
+ });
25260
+ }
25138
25261
 
25139
25262
  // src/index.ts
25140
25263
  async function main() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ourroadmaps/mcp",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "MCP server for OurRoadmaps - manage roadmaps, features, and ideas from Claude Code",
5
5
  "type": "module",
6
6
  "bin": {
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "license": "MIT",
34
34
  "dependencies": {
35
- "@modelcontextprotocol/sdk": "^1.0.0",
35
+ "@modelcontextprotocol/sdk": "^1.24.3",
36
36
  "@ourroadmaps/shared": "*",
37
37
  "zod": "^3.23.0"
38
38
  },