@reqlan/mcp 0.2.9 → 0.3.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.
package/README.md CHANGED
@@ -50,6 +50,16 @@ Set `REQLAN_WORKSPACE` to the workspace root (or run from that directory). Overr
50
50
 
51
51
  ## Changelog
52
52
 
53
+ ### 0.3.0
54
+
55
+ #### Minor Changes
56
+
57
+ - 6036b1a: up
58
+
59
+ #### Patch Changes
60
+
61
+ - @reqlan/analytical@1.11.0
62
+
53
63
  ### 0.2.9
54
64
 
55
65
  #### Patch Changes
package/out/server.js CHANGED
@@ -1,7 +1,8 @@
1
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
- import { z } from 'zod';
4
- import { openAnalysisApi } from '@reqlan/analytical/core';
1
+ import process from "node:process";
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { z } from "zod";
5
+ import { openAnalysisApi, } from "@reqlan/analytical/core";
5
6
  function resolveWorkspaceRoot() {
6
7
  const fromEnv = process.env.REQLAN_WORKSPACE?.trim();
7
8
  if (fromEnv) {
@@ -10,147 +11,232 @@ function resolveWorkspaceRoot() {
10
11
  return process.cwd();
11
12
  }
12
13
  function textContent(text) {
13
- return { content: [{ type: 'text', text }] };
14
+ return { content: [{ type: "text", text }] };
14
15
  }
15
16
  export async function startMcpServer() {
16
17
  const workspaceRoot = resolveWorkspaceRoot();
17
18
  const opened = await openAnalysisApi({
18
19
  workspaceRoot,
19
- storagePath: process.env.REQLAN_INDEX_PATH
20
+ storagePath: process.env.REQLAN_INDEX_PATH,
20
21
  });
21
22
  const api = opened.api;
22
23
  const server = new McpServer({
23
- name: 'reqlan',
24
- version: '0.0.1'
24
+ name: "reqlan",
25
+ version: "0.0.1",
25
26
  });
26
- server.tool('search_requirements', 'Search requirements by keyword across names, summaries, tags, and references. Optional context paths/ideas bias ranking by graph hop distance.', {
27
- query: z.string().describe('Search text'),
28
- limit: z.number().int().positive().max(50).optional().describe('Maximum number of matches'),
29
- context: z
30
- .array(z.string())
31
- .optional()
32
- .describe('Relative .rq paths, path#idea refs, or idea names that bias ranking by hop distance')
27
+ server.registerTool("search_requirements", {
28
+ description: "Search requirements by keyword across names, summaries, tags, and references. Optional context paths/ideas bias ranking by graph hop distance.",
29
+ inputSchema: {
30
+ query: z.string().describe("Search text"),
31
+ limit: z
32
+ .number()
33
+ .int()
34
+ .positive()
35
+ .max(50)
36
+ .optional()
37
+ .describe("Maximum number of matches"),
38
+ context: z
39
+ .array(z.string())
40
+ .optional()
41
+ .describe("Relative .rq paths, path#idea refs, or idea names that bias ranking by hop distance"),
42
+ },
33
43
  }, async ({ query, limit, context }) => {
34
44
  const matches = await api.searchRequirements(query, limit ?? 8, context?.length ? { context } : undefined);
35
45
  if (matches.length === 0) {
36
46
  return textContent(`No requirements matched "${query}".`);
37
47
  }
38
- const body = matches.map(match => {
39
- const reasons = match.reasons?.length ? `\nReasons: ${match.reasons.join(', ')}` : '';
40
- const score = match.score !== undefined ? `\nScore: ${match.score}` : '';
48
+ const body = matches
49
+ .map((match) => {
50
+ const reasons = match.reasons?.length
51
+ ? `\nReasons: ${match.reasons.join(", ")}`
52
+ : "";
53
+ const score = match.score !== undefined ? `\nScore: ${match.score}` : "";
41
54
  return `${api.formatIdea(match.idea)}${score}${reasons}`;
42
- }).join('\n\n');
55
+ })
56
+ .join("\n\n");
43
57
  return textContent(body);
44
58
  });
45
- server.tool('list_requirements', 'List indexed requirements in the workspace.', {
46
- limit: z.number().int().positive().max(100).optional().describe('Maximum number of requirements')
59
+ server.registerTool("list_requirements", {
60
+ description: "List indexed requirements in the workspace.",
61
+ inputSchema: {
62
+ limit: z
63
+ .number()
64
+ .int()
65
+ .positive()
66
+ .max(100)
67
+ .optional()
68
+ .describe("Maximum number of requirements"),
69
+ },
47
70
  }, async ({ limit }) => {
48
71
  const ideas = await api.listRequirements(limit ?? 50);
49
72
  if (ideas.length === 0) {
50
- return textContent('No requirements indexed in the workspace.');
73
+ return textContent("No requirements indexed in the workspace.");
51
74
  }
52
- return textContent(ideas.map(idea => api.formatIdea(idea)).join('\n\n'));
75
+ return textContent(ideas.map((idea) => api.formatIdea(idea)).join("\n\n"));
53
76
  });
54
- server.tool('file_context', 'Get requirements in, referencing, or comment-linked to a file.', {
55
- filePath: z.string().describe('Relative or absolute path to a .rq file')
77
+ server.registerTool("file_context", {
78
+ description: "Get requirements in, referencing, or comment-linked to a file.",
79
+ inputSchema: {
80
+ filePath: z
81
+ .string()
82
+ .describe("Relative or absolute path to a .rq file"),
83
+ },
56
84
  }, async ({ filePath }) => {
57
85
  const related = await api.getFileContext(filePath);
58
86
  const sections = [
59
87
  `File: ${filePath}`,
60
- formatGroup('In file', related.ideasInFile, api),
61
- formatGroup('Referencing', related.referencingIdeas, api),
62
- formatGroup('Comment-linked', related.commentLinkedIdeas, api)
88
+ formatGroup("In file", related.ideasInFile, api),
89
+ formatGroup("Referencing", related.referencingIdeas, api),
90
+ formatGroup("Comment-linked", related.commentLinkedIdeas, api),
63
91
  ];
64
- return textContent(sections.join('\n\n'));
92
+ return textContent(sections.join("\n\n"));
65
93
  });
66
- server.tool('local_graph', 'Get the local requirement graph around the first requirement in a file.', {
67
- filePath: z.string().describe('Relative or absolute path to a .rq file'),
68
- depth: z.number().int().positive().max(5).optional().describe('Graph hop depth')
94
+ server.registerTool("local_graph", {
95
+ description: "Get the local requirement graph around the first requirement in a file.",
96
+ inputSchema: {
97
+ filePath: z
98
+ .string()
99
+ .describe("Relative or absolute path to a .rq file"),
100
+ depth: z
101
+ .number()
102
+ .int()
103
+ .positive()
104
+ .max(5)
105
+ .optional()
106
+ .describe("Graph hop depth"),
107
+ },
69
108
  }, async ({ filePath, depth }) => {
70
109
  const graph = await api.getLocalGraph(filePath, depth ?? 1);
71
110
  if (!graph) {
72
111
  return textContent(`No requirements found in ${filePath}.`);
73
112
  }
74
- const nodes = graph.nodes.map(node => api.formatIdea(node)).join('\n\n');
113
+ const nodes = graph.nodes
114
+ .map((node) => api.formatIdea(node))
115
+ .join("\n\n");
75
116
  const edges = graph.edges
76
117
  .slice(0, 30)
77
- .map(edge => `- ${edge.kind}: ${edge.sourceId} -> ${edge.targetId ?? edge.label ?? '?'}`)
78
- .join('\n');
79
- return textContent(`Graph around ${graph.centerId} (${graph.nodes.length} nodes, ${graph.edges.length} edges)\n\n${nodes}\n\nEdges:\n${edges || '(none)'}`);
118
+ .map((edge) => `- ${edge.kind}: ${edge.sourceId} -> ${edge.targetId ?? edge.label ?? "?"}`)
119
+ .join("\n");
120
+ return textContent(`Graph around ${graph.centerId} (${graph.nodes.length} nodes, ${graph.edges.length} edges)\n\n${nodes}\n\nEdges:\n${edges || "(none)"}`);
80
121
  });
81
- server.tool('summarize_subtree', 'Summarise a requirement subtree rooted at a named requirement.', {
82
- requirementName: z.string().describe('Requirement name or search text'),
83
- depth: z.number().int().positive().max(5).optional().describe('Graph hop depth')
122
+ server.registerTool("summarize_subtree", {
123
+ description: "Summarise a requirement subtree rooted at a named requirement.",
124
+ inputSchema: {
125
+ requirementName: z
126
+ .string()
127
+ .describe("Requirement name or search text"),
128
+ depth: z
129
+ .number()
130
+ .int()
131
+ .positive()
132
+ .max(5)
133
+ .optional()
134
+ .describe("Graph hop depth"),
135
+ },
84
136
  }, async ({ requirementName, depth }) => {
85
137
  const graph = await api.summarizeSubtree(requirementName, depth ?? 2);
86
138
  if (!graph) {
87
139
  return textContent(`No requirement matched "${requirementName}".`);
88
140
  }
89
- const nodes = graph.nodes.map(node => api.formatIdea(node)).join('\n\n');
141
+ const nodes = graph.nodes
142
+ .map((node) => api.formatIdea(node))
143
+ .join("\n\n");
90
144
  return textContent(`Subtree summary for ${requirementName} (${graph.nodes.length} nodes, depth ${graph.depth})\n\n${nodes}`);
91
145
  });
92
- server.tool('requirement_reference', 'Resolve a requirement by name for compact AI context.', {
93
- name: z.string().optional().describe('Requirement name or search text')
146
+ server.registerTool("requirement_reference", {
147
+ description: "Resolve a requirement by name for compact AI context.",
148
+ inputSchema: {
149
+ name: z
150
+ .string()
151
+ .optional()
152
+ .describe("Requirement name or search text"),
153
+ },
94
154
  }, async ({ name }) => {
95
155
  const ideas = await api.resolveRequirementReference(name);
96
156
  if (ideas.length === 0) {
97
- return textContent('No matching requirements found.');
157
+ return textContent("No matching requirements found.");
98
158
  }
99
- return textContent(ideas.map(idea => api.formatIdea(idea)).join('\n\n'));
159
+ return textContent(ideas.map((idea) => api.formatIdea(idea)).join("\n\n"));
100
160
  });
101
- server.tool('file_reference', 'Resolve requirements indexed in matching .rq files.', {
102
- path: z.string().optional().describe('Optional path fragment filter')
161
+ server.registerTool("file_reference", {
162
+ description: "Resolve requirements indexed in matching .rq files.",
163
+ inputSchema: {
164
+ path: z.string().optional().describe("Optional path fragment filter"),
165
+ },
103
166
  }, async ({ path }) => {
104
167
  const files = await api.resolveFileReference(path);
105
168
  if (files.length === 0) {
106
- return textContent('No matching .rq files found.');
169
+ return textContent("No matching .rq files found.");
107
170
  }
108
- const body = files.map(file => {
109
- const ideas = file.ideas.map(idea => `- ${idea.name}: ${idea.summary || '(no summary)'}`).join('\n');
110
- return `## ${file.path}\n${ideas || '- (no requirements indexed)'}`;
111
- }).join('\n\n');
171
+ const body = files
172
+ .map((file) => {
173
+ const ideas = file.ideas
174
+ .map((idea) => `- ${idea.name}: ${idea.summary || "(no summary)"}`)
175
+ .join("\n");
176
+ return `## ${file.path}\n${ideas || "- (no requirements indexed)"}`;
177
+ })
178
+ .join("\n\n");
112
179
  return textContent(body);
113
180
  });
114
- server.tool('completion_status', 'Summarise completion and deprecation status across the workspace graph.', {}, async () => {
181
+ server.registerTool("completion_status", {
182
+ description: "Summarise completion and deprecation status across the workspace graph.",
183
+ }, async () => {
115
184
  const summary = await api.getCompletionStatus();
116
185
  return textContent([
117
186
  `Total ideas: ${summary.total}`,
118
187
  `Outstanding: ${summary.outstanding.length}`,
119
188
  `Deprecated: ${summary.deprecated.length}`,
120
- `Statuses: ${Object.entries(summary.byStatus).map(([key, value]) => `${key}=${value}`).join(', ')}`
121
- ].join('\n'));
189
+ `Statuses: ${Object.entries(summary.byStatus)
190
+ .map(([key, value]) => `${key}=${value}`)
191
+ .join(", ")}`,
192
+ ].join("\n"));
122
193
  });
123
- server.tool('list_interactions', 'Discover available requirement graph interactions and parameters.', {}, async () => {
194
+ server.registerTool("list_interactions", {
195
+ description: "Discover available requirement graph interactions and parameters.",
196
+ }, async () => {
124
197
  const interactions = api.listInteractions();
125
- const body = interactions.map(item => {
198
+ const body = interactions
199
+ .map((item) => {
126
200
  const params = Object.entries(item.parameters)
127
201
  .map(([key, value]) => ` - ${key}: ${value}`)
128
- .join('\n');
129
- return `## ${item.name}\n${item.description}\nParameters:\n${params || ' (none)'}`;
130
- }).join('\n\n');
202
+ .join("\n");
203
+ return `## ${item.name}\n${item.description}\nParameters:\n${params || " (none)"}`;
204
+ })
205
+ .join("\n\n");
131
206
  return textContent(body);
132
207
  });
133
- server.tool('prompt', 'Prompt-oriented entry point for working with the requirement graph.', {
134
- intent: z.string().describe('What you want to know or do with the requirement graph'),
135
- filePath: z.string().optional().describe('Optional .rq file to scope the prompt'),
136
- requirementName: z.string().optional().describe('Optional requirement name to scope the prompt')
208
+ server.registerTool("prompt", {
209
+ description: "Prompt-oriented entry point for working with the requirement graph.",
210
+ inputSchema: {
211
+ intent: z
212
+ .string()
213
+ .describe("What you want to know or do with the requirement graph"),
214
+ filePath: z
215
+ .string()
216
+ .optional()
217
+ .describe("Optional .rq file to scope the prompt"),
218
+ requirementName: z
219
+ .string()
220
+ .optional()
221
+ .describe("Optional requirement name to scope the prompt"),
222
+ },
137
223
  }, async ({ intent, filePath, requirementName }) => {
138
224
  const sections = [`Intent: ${intent}`];
139
225
  if (requirementName) {
140
226
  const ideas = await api.resolveRequirementReference(requirementName);
141
- sections.push('Requirement scope:', ideas.length > 0
142
- ? ideas.map(idea => api.formatIdea(idea)).join('\n\n')
227
+ sections.push("Requirement scope:", ideas.length > 0
228
+ ? ideas.map((idea) => api.formatIdea(idea)).join("\n\n")
143
229
  : `No requirement matched "${requirementName}".`);
144
230
  }
145
231
  if (filePath) {
146
232
  const related = await api.getFileContext(filePath);
147
- sections.push(`File scope: ${filePath}`, formatGroup('In file', related.ideasInFile, api), formatGroup('Referencing', related.referencingIdeas, api));
233
+ sections.push(`File scope: ${filePath}`, formatGroup("In file", related.ideasInFile, api), formatGroup("Referencing", related.referencingIdeas, api));
148
234
  }
149
235
  const matches = await api.searchRequirements(intent, 5);
150
- sections.push('Relevant requirements:', matches.length > 0
151
- ? matches.map(match => api.formatIdea(match.idea)).join('\n\n')
152
- : 'No direct matches found.');
153
- return textContent(sections.join('\n\n'));
236
+ sections.push("Relevant requirements:", matches.length > 0
237
+ ? matches.map((match) => api.formatIdea(match.idea)).join("\n\n")
238
+ : "No direct matches found.");
239
+ return textContent(sections.join("\n\n"));
154
240
  });
155
241
  const transport = new StdioServerTransport();
156
242
  await server.connect(transport);
@@ -158,10 +244,10 @@ export async function startMcpServer() {
158
244
  await opened.dispose();
159
245
  await server.close();
160
246
  };
161
- process.on('SIGINT', () => {
247
+ process.on("SIGINT", () => {
162
248
  void shutdown().finally(() => process.exit(0));
163
249
  });
164
- process.on('SIGTERM', () => {
250
+ process.on("SIGTERM", () => {
165
251
  void shutdown().finally(() => process.exit(0));
166
252
  });
167
253
  }
@@ -169,6 +255,6 @@ function formatGroup(title, ideas, api) {
169
255
  if (ideas.length === 0) {
170
256
  return `${title} (0)\nNone`;
171
257
  }
172
- return `${title} (${ideas.length})\n${ideas.map(idea => api.formatIdea(idea)).join('\n\n')}`;
258
+ return `${title} (${ideas.length})\n${ideas.map((idea) => api.formatIdea(idea)).join("\n\n")}`;
173
259
  }
174
260
  //# sourceMappingURL=server.js.map
package/out/server.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@reqlan/mcp",
3
3
  "description": "MCP server exposing reqlan requirement graph tools",
4
- "version": "0.2.9",
4
+ "version": "0.3.0",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-only",
7
7
  "repository": {
@@ -26,7 +26,7 @@
26
26
  "dependencies": {
27
27
  "@modelcontextprotocol/sdk": "^1.12.1",
28
28
  "zod": "^3.24.2",
29
- "@reqlan/analytical": "1.10.9"
29
+ "@reqlan/analytical": "1.11.0"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/node": "^26.2.0",