mcp-docs-service 0.5.1 → 7.1.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/dist/index.js CHANGED
@@ -16,12 +16,15 @@ import { safeLog, normalizePath } from "./utils/index.js";
16
16
  // Import schemas
17
17
  import { ReadDocumentSchema, WriteDocumentSchema, EditDocumentSchema, ListDocumentsSchema, SearchDocumentsSchema, CheckDocumentationHealthSchema, CreateFolderSchema, MoveDocumentSchema, RenameDocumentSchema, UpdateNavigationOrderSchema, CreateSectionSchema, ValidateLinksSchema, ValidateMetadataSchema, } from "./schemas/index.js";
18
18
  // Import handlers
19
- import { DocumentHandler, NavigationHandler, HealthCheckHandler, } from "./handlers/index.js";
19
+ import { NavigationHandler, HealthCheckHandler } from "./handlers/index.js";
20
+ // Import our document handler
21
+ import { DocumentHandler } from "./handlers/documents.js";
20
22
  // Command line argument parsing
21
23
  const args = process.argv.slice(2);
22
24
  let docsDir = path.join(process.cwd(), "docs");
23
25
  let createDir = false;
24
26
  let runHealthCheck = false;
27
+ let useSingleDoc = false;
25
28
  // Parse arguments
26
29
  for (let i = 0; i < args.length; i++) {
27
30
  if (args[i] === "--docs-dir" && i + 1 < args.length) {
@@ -34,12 +37,25 @@ for (let i = 0; i < args.length; i++) {
34
37
  else if (args[i] === "--health-check") {
35
38
  runHealthCheck = true;
36
39
  }
40
+ else if (args[i] === "--single-doc") {
41
+ useSingleDoc = true;
42
+ }
37
43
  else if (!args[i].startsWith("--")) {
38
44
  docsDir = path.resolve(args[i]);
39
45
  }
40
46
  }
41
47
  // Normalize path
42
48
  docsDir = normalizePath(docsDir);
49
+ // Helper function to check if a file exists
50
+ async function fileExists(filePath) {
51
+ try {
52
+ await fs.access(filePath);
53
+ return true;
54
+ }
55
+ catch {
56
+ return false;
57
+ }
58
+ }
43
59
  // Ensure docs directory exists
44
60
  async function ensureDocsDirectory() {
45
61
  try {
@@ -86,8 +102,8 @@ This is the documentation directory for your project.
86
102
  }
87
103
  }
88
104
  }
89
- // Initialize handlers
90
- const documentHandler = new DocumentHandler(docsDir);
105
+ // Create handlers
106
+ const documentHandler = new DocumentHandler(docsDir, useSingleDoc);
91
107
  const navigationHandler = new NavigationHandler(docsDir);
92
108
  const healthCheckHandler = new HealthCheckHandler(docsDir);
93
109
  // Server setup
@@ -101,98 +117,225 @@ const server = new Server({
101
117
  });
102
118
  // Tool handlers
103
119
  server.setRequestHandler(ListToolsRequestSchema, async () => {
104
- return {
105
- tools: [
106
- {
107
- name: "read_document",
108
- description: "Read a markdown document from the docs directory. Returns the document content " +
109
- "including frontmatter. Use this tool when you need to examine the contents of a " +
110
- "single document.",
111
- inputSchema: zodToJsonSchema(ReadDocumentSchema),
112
- },
113
- {
114
- name: "write_document",
115
- description: "Create a new markdown document or completely overwrite an existing document with new content. " +
116
- "Use with caution as it will overwrite existing documents without warning. " +
117
- "Can create parent directories if they don't exist.",
118
- inputSchema: zodToJsonSchema(WriteDocumentSchema),
119
- },
120
- {
121
- name: "edit_document",
122
- description: "Make line-based edits to a markdown document. Each edit replaces exact line sequences " +
123
- "with new content. Returns a git-style diff showing the changes made.",
124
- inputSchema: zodToJsonSchema(EditDocumentSchema),
125
- },
126
- {
127
- name: "list_documents",
128
- description: "List all markdown documents in the docs directory or a subdirectory. " +
129
- "Returns the relative paths to all documents.",
130
- inputSchema: zodToJsonSchema(ListDocumentsSchema),
131
- },
132
- {
133
- name: "search_documents",
134
- description: "Search for markdown documents containing specific text in their content or frontmatter. " +
135
- "Returns the relative paths to matching documents.",
136
- inputSchema: zodToJsonSchema(SearchDocumentsSchema),
137
- },
138
- {
139
- name: "generate_documentation_navigation",
140
- description: "Generate a navigation structure from the markdown documents in the docs directory. " +
141
- "Returns a JSON structure that can be used for navigation menus.",
142
- inputSchema: zodToJsonSchema(ListDocumentsSchema),
143
- },
144
- {
145
- name: "check_documentation_health",
146
- description: "Check the health of the documentation by analyzing frontmatter, links, and navigation. " +
147
- "Returns a report with issues and a health score.",
148
- inputSchema: zodToJsonSchema(CheckDocumentationHealthSchema),
149
- },
150
- // New tools for Phase 2
151
- {
152
- name: "create_documentation_folder",
153
- description: "Create a new folder in the docs directory. Optionally creates a README.md file " +
154
- "in the new folder with basic frontmatter.",
155
- inputSchema: zodToJsonSchema(CreateFolderSchema),
156
- },
157
- {
158
- name: "move_document",
159
- description: "Move a document from one location to another. Optionally updates references to the " +
160
- "document in other files.",
161
- inputSchema: zodToJsonSchema(MoveDocumentSchema),
162
- },
163
- {
164
- name: "rename_document",
165
- description: "Rename a document while preserving its location and content. Optionally updates " +
166
- "references to the document in other files.",
167
- inputSchema: zodToJsonSchema(RenameDocumentSchema),
168
- },
169
- {
170
- name: "update_documentation_navigation_order",
171
- description: "Update the navigation order of a document by modifying its frontmatter.",
172
- inputSchema: zodToJsonSchema(UpdateNavigationOrderSchema),
173
- },
174
- {
175
- name: "create_documentation_section",
176
- description: "Create a new navigation section with an index.md file.",
177
- inputSchema: zodToJsonSchema(CreateSectionSchema),
178
- },
179
- // New tools for Phase 3
180
- {
181
- name: "validate_documentation_links",
182
- description: "Check for broken internal links in documentation files.",
183
- inputSchema: zodToJsonSchema(ValidateLinksSchema),
184
- },
185
- {
186
- name: "validate_documentation_metadata",
187
- description: "Ensure all documents have required metadata fields.",
188
- inputSchema: zodToJsonSchema(ValidateMetadataSchema),
189
- },
190
- ],
191
- };
120
+ if (useSingleDoc) {
121
+ return {
122
+ tools: [
123
+ {
124
+ name: "read_document",
125
+ description: "Read a markdown document from the docs directory. Returns the document content " +
126
+ "including frontmatter. In single-doc mode, this will always return the consolidated document.",
127
+ inputSchema: zodToJsonSchema(ReadDocumentSchema),
128
+ },
129
+ {
130
+ name: "write_document",
131
+ description: "Create a new markdown document or completely overwrite an existing document with new content. " +
132
+ "In single-doc mode, this will automatically update the consolidated document.",
133
+ inputSchema: zodToJsonSchema(WriteDocumentSchema),
134
+ },
135
+ {
136
+ name: "generate_llms_doc",
137
+ description: "Generate a single comprehensive document optimized for LLMs by compiling content from all " +
138
+ "markdown documents in the docs directory. This creates or refreshes the single_doc.md file.",
139
+ inputSchema: { type: "object", properties: {} },
140
+ },
141
+ {
142
+ name: "interactive_template",
143
+ description: "Interactively prompts the human user for information to fill in a document template. " +
144
+ "Useful for creating standardized documentation with user input.",
145
+ inputSchema: {
146
+ type: "object",
147
+ properties: {
148
+ template_type: {
149
+ type: "string",
150
+ description: "The type of template to use (feature, api, guide, etc.)",
151
+ },
152
+ output_path: {
153
+ type: "string",
154
+ description: "The path where the generated document should be saved",
155
+ },
156
+ },
157
+ required: ["template_type", "output_path"],
158
+ },
159
+ },
160
+ ],
161
+ };
162
+ }
163
+ else {
164
+ return {
165
+ tools: [
166
+ {
167
+ name: "read_document",
168
+ description: "Read a markdown document from the docs directory. Returns the document content " +
169
+ "including frontmatter. Use this tool when you need to examine the contents of a " +
170
+ "single document.",
171
+ inputSchema: zodToJsonSchema(ReadDocumentSchema),
172
+ },
173
+ {
174
+ name: "write_document",
175
+ description: "Create a new markdown document or completely overwrite an existing document with new content. " +
176
+ "Use with caution as it will overwrite existing documents without warning. " +
177
+ "Can create parent directories if they don't exist.",
178
+ inputSchema: zodToJsonSchema(WriteDocumentSchema),
179
+ },
180
+ {
181
+ name: "edit_document",
182
+ description: "Make line-based edits to a markdown document. Each edit replaces exact line sequences " +
183
+ "with new content. Returns a git-style diff showing the changes made.",
184
+ inputSchema: zodToJsonSchema(EditDocumentSchema),
185
+ },
186
+ {
187
+ name: "list_documents",
188
+ description: "List all markdown documents in the docs directory or a subdirectory. " +
189
+ "Returns the relative paths to all documents.",
190
+ inputSchema: zodToJsonSchema(ListDocumentsSchema),
191
+ },
192
+ {
193
+ name: "search_documents",
194
+ description: "Search for markdown documents containing specific text in their content or frontmatter. " +
195
+ "Returns the relative paths to matching documents.",
196
+ inputSchema: zodToJsonSchema(SearchDocumentsSchema),
197
+ },
198
+ {
199
+ name: "generate_documentation_navigation",
200
+ description: "Generate a navigation structure from the markdown documents in the docs directory. " +
201
+ "Returns a JSON structure that can be used for navigation menus.",
202
+ inputSchema: zodToJsonSchema(ListDocumentsSchema),
203
+ },
204
+ {
205
+ name: "check_documentation_health",
206
+ description: "Check the health of the documentation by analyzing frontmatter, links, and navigation. " +
207
+ "Returns a report with issues and a health score.",
208
+ inputSchema: zodToJsonSchema(CheckDocumentationHealthSchema),
209
+ },
210
+ // New tools for Phase 2
211
+ {
212
+ name: "create_folder",
213
+ description: "Create a new folder in the docs directory. Optionally creates a README.md file " +
214
+ "in the new folder with basic frontmatter.",
215
+ inputSchema: zodToJsonSchema(CreateFolderSchema),
216
+ },
217
+ {
218
+ name: "move_document",
219
+ description: "Move a document from one location to another. Optionally updates references to the " +
220
+ "document in other files.",
221
+ inputSchema: zodToJsonSchema(MoveDocumentSchema),
222
+ },
223
+ {
224
+ name: "rename_document",
225
+ description: "Rename a document while preserving its location and content. Optionally updates " +
226
+ "references to the document in other files.",
227
+ inputSchema: zodToJsonSchema(RenameDocumentSchema),
228
+ },
229
+ {
230
+ name: "update_navigation_order",
231
+ description: "Update the navigation order of a document by modifying its frontmatter.",
232
+ inputSchema: zodToJsonSchema(UpdateNavigationOrderSchema),
233
+ },
234
+ {
235
+ name: "create_documentation_section",
236
+ description: "Create a new navigation section with an index.md file.",
237
+ inputSchema: zodToJsonSchema(CreateSectionSchema),
238
+ },
239
+ // New tools for Phase 3
240
+ {
241
+ name: "validate_documentation_links",
242
+ description: "Check for broken internal links in documentation files.",
243
+ inputSchema: zodToJsonSchema(ValidateLinksSchema),
244
+ },
245
+ {
246
+ name: "validate_documentation_metadata",
247
+ description: "Ensure all documents have required metadata fields.",
248
+ inputSchema: zodToJsonSchema(ValidateMetadataSchema),
249
+ },
250
+ ],
251
+ };
252
+ }
192
253
  });
193
254
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
194
255
  try {
195
256
  const { name, arguments: args } = request.params;
257
+ // Handle form responses
258
+ if (request.params._meta?.formResponse && request.params._meta?.metadata) {
259
+ const formResponse = request.params._meta.formResponse;
260
+ const metadata = request.params._meta.metadata;
261
+ if (metadata.template_type) {
262
+ const templateType = metadata.template_type;
263
+ const outputPath = metadata.output_path;
264
+ // Format tags from comma-separated string
265
+ const tags = formResponse.tags?.split(",").map((tag) => tag.trim()) || [];
266
+ // Create frontmatter
267
+ const frontmatter = {
268
+ title: formResponse.title || "Untitled",
269
+ description: formResponse.description || "",
270
+ author: formResponse.author || "Unknown",
271
+ tags,
272
+ status: formResponse.status || "draft",
273
+ date: new Date().toISOString(),
274
+ version: "1.0.0",
275
+ };
276
+ // Create document content based on template type
277
+ let content = `# ${formResponse.title || "Untitled"}\n\n${formResponse.description || ""}\n\n`;
278
+ if (templateType === "feature") {
279
+ content += `## Usage\n\nDescribe how to use this feature.\n\n`;
280
+ content += `## Examples\n\nProvide examples of how to use this feature.\n\n`;
281
+ content += `## Configuration\n\nDescribe any configuration options.\n\n`;
282
+ }
283
+ else if (templateType === "api") {
284
+ content += `## Endpoint\n\n\`\`\`\n/api/path\n\`\`\`\n\n`;
285
+ }
286
+ // Format frontmatter
287
+ const frontmatterYaml = `---\n${Object.entries(frontmatter)
288
+ .map(([key, value]) => {
289
+ if (Array.isArray(value)) {
290
+ return `${key}:\n${value
291
+ .map((item) => ` - ${item}`)
292
+ .join("\n")}`;
293
+ }
294
+ return `${key}: ${typeof value === "string" ? `"${value}"` : value}`;
295
+ })
296
+ .join("\n")}\n---\n\n`;
297
+ // Create full document
298
+ const fullContent = frontmatterYaml + content;
299
+ // Write the document
300
+ const docPath = path.join(docsDir, outputPath);
301
+ const dirPath = path.dirname(docPath);
302
+ try {
303
+ await fs.mkdir(dirPath, { recursive: true });
304
+ await fs.writeFile(docPath, fullContent, "utf-8");
305
+ // If in single-doc mode, regenerate the single doc
306
+ if (useSingleDoc) {
307
+ const singleDocPath = path.join(docsDir, "single_doc.md");
308
+ if (await fileExists(singleDocPath)) {
309
+ // Regenerate the single doc by calling refresh
310
+ await documentHandler.refreshSingleDoc();
311
+ }
312
+ }
313
+ return {
314
+ content: [
315
+ {
316
+ type: "text",
317
+ text: `Successfully created document at ${outputPath}`,
318
+ },
319
+ ],
320
+ metadata: {
321
+ path: outputPath,
322
+ },
323
+ };
324
+ }
325
+ catch (error) {
326
+ return {
327
+ content: [
328
+ {
329
+ type: "text",
330
+ text: `Error creating document: ${error.message || String(error)}`,
331
+ },
332
+ ],
333
+ isError: true,
334
+ };
335
+ }
336
+ }
337
+ }
338
+ // Handle regular tool calls
196
339
  switch (name) {
197
340
  case "read_document": {
198
341
  const parsed = ReadDocumentSchema.safeParse(args);
@@ -244,94 +387,91 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
244
387
  return await healthCheckHandler.checkDocumentationHealth(parsed.data.basePath);
245
388
  }
246
389
  // New tools for Phase 2
247
- case "create_documentation_folder": {
390
+ case "create_folder": {
248
391
  const parsed = CreateFolderSchema.safeParse(args);
249
392
  if (!parsed.success) {
250
393
  throw new Error(`Invalid arguments for create_folder: ${parsed.error}`);
251
394
  }
252
- return await documentHandler.createFolder(parsed.data.path, parsed.data.createReadme);
395
+ throw new Error("Method not implemented");
253
396
  }
254
- case "move_documentation_document": {
397
+ case "move_document": {
255
398
  const parsed = MoveDocumentSchema.safeParse(args);
256
399
  if (!parsed.success) {
257
400
  throw new Error(`Invalid arguments for move_document: ${parsed.error}`);
258
401
  }
259
- return await documentHandler.moveDocument(parsed.data.sourcePath, parsed.data.destinationPath, parsed.data.updateReferences);
402
+ throw new Error("Method not implemented");
260
403
  }
261
- case "rename_documentation_document": {
404
+ case "rename_document": {
262
405
  const parsed = RenameDocumentSchema.safeParse(args);
263
406
  if (!parsed.success) {
264
407
  throw new Error(`Invalid arguments for rename_document: ${parsed.error}`);
265
408
  }
266
- return await documentHandler.renameDocument(parsed.data.path, parsed.data.newName, parsed.data.updateReferences);
409
+ throw new Error("Method not implemented");
267
410
  }
268
- case "update_documentation_navigation_order": {
411
+ case "update_navigation_order": {
269
412
  const parsed = UpdateNavigationOrderSchema.safeParse(args);
270
413
  if (!parsed.success) {
271
414
  throw new Error(`Invalid arguments for update_navigation_order: ${parsed.error}`);
272
415
  }
273
- return await documentHandler.updateNavigationOrder(parsed.data.path, parsed.data.order);
416
+ throw new Error("Method not implemented");
274
417
  }
275
- case "create_section": {
276
- const parsed = CreateSectionSchema.safeParse(args);
277
- if (!parsed.success) {
278
- throw new Error(`Invalid arguments for create_section: ${parsed.error}`);
418
+ case "generate_llms_doc":
419
+ if (!useSingleDoc) {
420
+ throw new Error("Single-doc mode is not enabled");
279
421
  }
280
- return await documentHandler.createSection(parsed.data.title, parsed.data.path, parsed.data.order);
281
- }
282
- // New tools for Phase 3
283
- case "validate_documentation_links": {
284
- const parsed = ValidateLinksSchema.safeParse(args);
285
- if (!parsed.success) {
286
- throw new Error(`Invalid arguments for validate_links: ${parsed.error}`);
422
+ return await documentHandler.refreshSingleDoc();
423
+ case "interactive_template": {
424
+ if (!args) {
425
+ throw new Error(`Invalid arguments for interactive_template: args is undefined`);
287
426
  }
288
- return await documentHandler.validateLinks(parsed.data.basePath, parsed.data.recursive);
289
- }
290
- case "validate_documentation_metadata": {
291
- const parsed = ValidateMetadataSchema.safeParse(args);
292
- if (!parsed.success) {
293
- throw new Error(`Invalid arguments for validate_metadata: ${parsed.error}`);
294
- }
295
- return await documentHandler.validateMetadata(parsed.data.basePath, parsed.data.requiredFields);
427
+ const template_type = args.template_type;
428
+ const output_path = args.output_path;
429
+ // Build a form as text content
430
+ const formText = `# Create ${template_type.charAt(0).toUpperCase() + template_type.slice(1)} Documentation\n\n` +
431
+ `Please provide the following information to create your ${template_type} documentation at '${output_path}':\n\n` +
432
+ `- Title: [${template_type.charAt(0).toUpperCase() + template_type.slice(1)} Name]\n` +
433
+ `- Description: [Description of this ${template_type}]\n` +
434
+ `- Author: [Documentation Team]\n` +
435
+ `- Tags (comma separated): [${template_type}]\n` +
436
+ `- Status: [draft]\n\n` +
437
+ `Once you provide this information, I'll create the document for you.`;
438
+ return {
439
+ content: [{ type: "text", text: formText }],
440
+ metadata: {
441
+ template_type,
442
+ output_path,
443
+ },
444
+ };
296
445
  }
297
446
  default:
298
447
  throw new Error(`Unknown tool: ${name}`);
299
448
  }
300
449
  }
301
450
  catch (error) {
302
- const errorMessage = error instanceof Error ? error.message : String(error);
303
451
  return {
304
- content: [{ type: "text", text: `Error: ${errorMessage}` }],
452
+ content: [
453
+ { type: "text", text: `Error: ${error.message || String(error)}` },
454
+ ],
305
455
  isError: true,
306
456
  };
307
457
  }
308
458
  });
309
- // Run health check if requested
310
- if (runHealthCheck) {
459
+ // Start server
460
+ (async () => {
311
461
  try {
312
- const result = await healthCheckHandler.checkDocumentationHealth("");
313
- safeLog(result.content[0].text);
314
- process.exit(result.isError ? 1 : 0);
462
+ await ensureDocsDirectory();
463
+ const transport = new StdioServerTransport();
464
+ await server.connect(transport);
465
+ // The server will be started by the SDK
466
+ safeLog("MCP Documentation Management Service started.");
467
+ safeLog("Using docs directory:", docsDir);
468
+ if (useSingleDoc) {
469
+ safeLog("Single-doc mode enabled.");
470
+ }
471
+ safeLog("Reading from stdin, writing results to stdout...");
315
472
  }
316
473
  catch (error) {
317
- safeLog(`Error running health check: ${error}`);
474
+ safeLog("Fatal error running server:", error);
318
475
  process.exit(1);
319
476
  }
320
- }
321
- else {
322
- // Start server
323
- (async () => {
324
- try {
325
- await ensureDocsDirectory();
326
- const transport = new StdioServerTransport();
327
- await server.connect(transport);
328
- safeLog("MCP Documentation Management Service started.");
329
- safeLog("Using docs directory:", docsDir);
330
- safeLog("Reading from stdin, writing results to stdout...");
331
- }
332
- catch (error) {
333
- safeLog("Fatal error running server:", error);
334
- process.exit(1);
335
- }
336
- })();
337
- }
477
+ })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-docs-service",
3
- "version": "0.5.1",
3
+ "version": "7.1.0",
4
4
  "description": "MCP Documentation Service - A Model Context Protocol implementation for documentation management",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -20,8 +20,11 @@
20
20
  "test": "vitest run",
21
21
  "test:watch": "vitest",
22
22
  "test:coverage": "vitest run --coverage",
23
+ "test:integration": "node tests/integration/test-single-doc.js",
24
+ "test:clients": "node tests/clients/test-all-tools.js",
23
25
  "prepublishOnly": "npm run build",
24
- "prepare-publish": "node scripts/prepare-publish.js"
26
+ "prepare-publish": "node scripts/prepare-publish.js",
27
+ "clean": "rm -rf dist coverage temp-publish"
25
28
  },
26
29
  "keywords": [
27
30
  "mcp",
package/dist/index.d.ts DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * MCP Docs Service
4
- *
5
- * A Model Context Protocol implementation for documentation management.
6
- * This service provides tools for reading, writing, and managing markdown documentation.
7
- */
8
- export {};
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}