mcp-docs-service 0.1.0 → 0.2.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 +43 -2
- package/dist/cli/index.js +15 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/jsonrpc.d.ts +29 -0
- package/dist/cli/jsonrpc.js +121 -0
- package/dist/cli/jsonrpc.js.map +1 -0
- package/package.json +4 -2
package/README.md
CHANGED
@@ -9,6 +9,7 @@ The MCP Documentation Service is a custom implementation of the Model Context Pr
|
|
9
9
|
- **Search**: Search through documentation using keywords and filters
|
10
10
|
- **Analytics**: Analyze documentation health and get suggestions for improvement
|
11
11
|
- **Custom Directory Support**: Specify a custom docs directory and create it if it doesn't exist
|
12
|
+
- **JSON-RPC 2.0 Support**: Native support for the JSON-RPC 2.0 protocol used by Cursor and other MCP clients
|
12
13
|
|
13
14
|
## Installation
|
14
15
|
|
@@ -177,9 +178,13 @@ async function example() {
|
|
177
178
|
example();
|
178
179
|
```
|
179
180
|
|
180
|
-
## Query
|
181
|
+
## Query Formats
|
181
182
|
|
182
|
-
The service
|
183
|
+
The service supports two query formats:
|
184
|
+
|
185
|
+
### SQL-like Format
|
186
|
+
|
187
|
+
The traditional SQL-like query format:
|
183
188
|
|
184
189
|
```
|
185
190
|
command_name(param1="value1", param2="value2")
|
@@ -191,6 +196,23 @@ For example:
|
|
191
196
|
get_document(path="architecture/overview.md")
|
192
197
|
```
|
193
198
|
|
199
|
+
### JSON-RPC 2.0 Format
|
200
|
+
|
201
|
+
As of version 0.2.0, the service also supports the JSON-RPC 2.0 format used by Cursor and other MCP clients:
|
202
|
+
|
203
|
+
```json
|
204
|
+
{
|
205
|
+
"jsonrpc": "2.0",
|
206
|
+
"method": "get_document",
|
207
|
+
"params": {
|
208
|
+
"path": "architecture/overview.md"
|
209
|
+
},
|
210
|
+
"id": 1
|
211
|
+
}
|
212
|
+
```
|
213
|
+
|
214
|
+
The service automatically detects the format of the input and processes it accordingly.
|
215
|
+
|
194
216
|
## Available Commands
|
195
217
|
|
196
218
|
### Document Operations
|
@@ -212,3 +234,22 @@ get_document(path="architecture/overview.md")
|
|
212
234
|
## License
|
213
235
|
|
214
236
|
MIT
|
237
|
+
|
238
|
+
Just published MCP Dcumentation Service 🔥
|
239
|
+
Open source, vibe coding only.A tool that lets AI assistants interact with your documentation through the Model Context Protocol.It enables AI tools like Claude and Cursor to read, create, update, and analyze your markdown docs with a simple query interface.Key features:
|
240
|
+
✅ Document CRUD operations with frontmatter support
|
241
|
+
✅ Documentation search and health analytics
|
242
|
+
✅ Custom directory handlingtest it: `npx mcp-docs-service`
|
243
|
+
|
244
|
+
Why document your project when working with AI assistants like Claude in Cursor?Good documentation gives AI context about your project's architecture, decisions, and conventions. This means:• More accurate code suggestions
|
245
|
+
• Better understanding of your codebase
|
246
|
+
• Fewer misunderstandings and errors
|
247
|
+
• Consistent implementation of patternsDocumentation is the map that helps AI navigate your code landscape.
|
248
|
+
|
249
|
+
Use with Cursor IDE:1. Set up mcp-docs-service in your .cursor/mcp.json 2. Ask Cursor: "Analyze our documentation health" 3. Cursor uses MCP to scan your docs and report issues 4. Ask: "Create a guide for our authentication system" 5. Cursor generates a well-structured doc based on your codeThe AI can now read and write to your docs directory, keeping documentation in sync with code changes 💥
|
250
|
+
|
251
|
+
With Claude Desktop:1. Configure mcp-docs-service in claude_desktop_config.json 2. Ask: "What's our approach to error handling?" 3. Claude searches your docs and explains your patterns 4. Say: "Our validation changed, update the API docs" 5. Claude updates the relevant markdown filesClaude becomes your documentation assistant, maintaining docs without switching contexts or tools.
|
252
|
+
|
253
|
+
Real example from my workflow:"Claude, analyze our docs and identify gaps in our API documentation"Claude found 7 endpoints missing docs, created templates for each, and suggested improvements to our existing docs.This took 2 minutes instead of hours of manual review!Documentation becomes a living part of your codebase, not an afterthought.
|
254
|
+
|
255
|
+
Getting started is simple:1. npm install -g mcp-docs-service 2. Add to your AI tool config 3. Start asking questions about your docsFull setup guide: npmjs.com/packa…This is just v0.1.1 - I'd love feedback on how you're using it and what features would help your documentation workflow.
|
package/dist/cli/index.js
CHANGED
@@ -35,6 +35,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
35
|
exports.main = void 0;
|
36
36
|
const index_js_1 = require("../index.js");
|
37
37
|
const readline = __importStar(require("readline"));
|
38
|
+
const jsonrpc_js_1 = require("./jsonrpc.js");
|
38
39
|
/**
|
39
40
|
* Main function to process stdin commands
|
40
41
|
*/
|
@@ -68,9 +69,20 @@ async function main(options = {
|
|
68
69
|
rl.on("line", async (line) => {
|
69
70
|
if (line.trim()) {
|
70
71
|
try {
|
71
|
-
//
|
72
|
-
|
73
|
-
|
72
|
+
// Check if the input is a JSON-RPC 2.0 request
|
73
|
+
if (line.trim().startsWith("{") && line.includes('"jsonrpc"')) {
|
74
|
+
// Process as JSON-RPC 2.0 request
|
75
|
+
const response = await (0, jsonrpc_js_1.processJsonRpcRequest)(line.trim(), {
|
76
|
+
docsDir: options.docsDir,
|
77
|
+
createIfNotExists: options.createIfNotExists,
|
78
|
+
});
|
79
|
+
console.log(JSON.stringify(response));
|
80
|
+
}
|
81
|
+
else {
|
82
|
+
// Process as SQL-like query (legacy mode)
|
83
|
+
const result = await query(line.trim());
|
84
|
+
console.log(JSON.stringify(result));
|
85
|
+
}
|
74
86
|
}
|
75
87
|
catch (error) {
|
76
88
|
// Log errors to stderr and write error result to stdout
|
package/dist/cli/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,0CAAqD;AACrD,mDAAqC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
/**
|
2
|
+
* JSON-RPC 2.0 handler for MCP Documentation Service
|
3
|
+
*
|
4
|
+
* This module adds JSON-RPC 2.0 support to the MCP Documentation Service,
|
5
|
+
* allowing it to be used with Cursor and other MCP clients.
|
6
|
+
*/
|
7
|
+
interface JsonRpcSuccessResponse {
|
8
|
+
jsonrpc: string;
|
9
|
+
result: any;
|
10
|
+
id: number | string | null;
|
11
|
+
}
|
12
|
+
interface JsonRpcErrorResponse {
|
13
|
+
jsonrpc: string;
|
14
|
+
error: {
|
15
|
+
code: number;
|
16
|
+
message: string;
|
17
|
+
data?: any;
|
18
|
+
};
|
19
|
+
id: number | string | null;
|
20
|
+
}
|
21
|
+
type JsonRpcResponse = JsonRpcSuccessResponse | JsonRpcErrorResponse;
|
22
|
+
/**
|
23
|
+
* Process a JSON-RPC 2.0 request and return a response
|
24
|
+
*/
|
25
|
+
export declare function processJsonRpcRequest(requestStr: string, options: {
|
26
|
+
docsDir: string;
|
27
|
+
createIfNotExists: boolean;
|
28
|
+
}): Promise<JsonRpcResponse>;
|
29
|
+
export {};
|
@@ -0,0 +1,121 @@
|
|
1
|
+
"use strict";
|
2
|
+
/**
|
3
|
+
* JSON-RPC 2.0 handler for MCP Documentation Service
|
4
|
+
*
|
5
|
+
* This module adds JSON-RPC 2.0 support to the MCP Documentation Service,
|
6
|
+
* allowing it to be used with Cursor and other MCP clients.
|
7
|
+
*/
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
9
|
+
exports.processJsonRpcRequest = void 0;
|
10
|
+
const index_js_1 = require("../index.js");
|
11
|
+
/**
|
12
|
+
* Process a JSON-RPC 2.0 request and return a response
|
13
|
+
*/
|
14
|
+
async function processJsonRpcRequest(requestStr, options) {
|
15
|
+
try {
|
16
|
+
// Parse the JSON-RPC request
|
17
|
+
const request = JSON.parse(requestStr);
|
18
|
+
// Validate the request
|
19
|
+
if (request.jsonrpc !== "2.0") {
|
20
|
+
return createErrorResponse(request.id, -32600, "Invalid Request: Not a valid JSON-RPC 2.0 request");
|
21
|
+
}
|
22
|
+
// Handle special MCP methods
|
23
|
+
if (request.method === "list_allowed_directories") {
|
24
|
+
return createSuccessResponse(request.id, [options.docsDir]);
|
25
|
+
}
|
26
|
+
// Translate JSON-RPC method and params to SQL-like query
|
27
|
+
const sqlQuery = translateToSqlQuery(request.method, request.params);
|
28
|
+
if (!sqlQuery) {
|
29
|
+
return createErrorResponse(request.id, -32601, `Method not found: ${request.method}`);
|
30
|
+
}
|
31
|
+
// Execute the query
|
32
|
+
const result = await (0, index_js_1.query)(sqlQuery, options);
|
33
|
+
// Translate the result to JSON-RPC response
|
34
|
+
if (result.success) {
|
35
|
+
return createSuccessResponse(request.id, result.data);
|
36
|
+
}
|
37
|
+
else {
|
38
|
+
return createErrorResponse(request.id, -32000, result.error || "Unknown error");
|
39
|
+
}
|
40
|
+
}
|
41
|
+
catch (error) {
|
42
|
+
console.error("Error processing JSON-RPC request:", error);
|
43
|
+
return createErrorResponse(null, -32700, error instanceof Error ? error.message : String(error));
|
44
|
+
}
|
45
|
+
}
|
46
|
+
exports.processJsonRpcRequest = processJsonRpcRequest;
|
47
|
+
/**
|
48
|
+
* Translate a JSON-RPC method and params to a SQL-like query
|
49
|
+
*/
|
50
|
+
function translateToSqlQuery(method, params) {
|
51
|
+
switch (method) {
|
52
|
+
case "list_files":
|
53
|
+
return "list_files()";
|
54
|
+
case "list_directories":
|
55
|
+
return "list_directories()";
|
56
|
+
case "get_document":
|
57
|
+
if (!params || !params.path) {
|
58
|
+
throw new Error("Invalid params: path is required");
|
59
|
+
}
|
60
|
+
return `get_document(path="${params.path}")`;
|
61
|
+
case "search_documents":
|
62
|
+
if (!params || !params.query) {
|
63
|
+
throw new Error("Invalid params: query is required");
|
64
|
+
}
|
65
|
+
return `search_documents(query="${params.query}")`;
|
66
|
+
case "create_document":
|
67
|
+
if (!params || !params.path || !params.content) {
|
68
|
+
throw new Error("Invalid params: path and content are required");
|
69
|
+
}
|
70
|
+
return `create_document(path="${params.path}", content="${escapeString(params.content)}")`;
|
71
|
+
case "update_document":
|
72
|
+
if (!params || !params.path || !params.content) {
|
73
|
+
throw new Error("Invalid params: path and content are required");
|
74
|
+
}
|
75
|
+
return `update_document(path="${params.path}", content="${escapeString(params.content)}")`;
|
76
|
+
case "delete_document":
|
77
|
+
if (!params || !params.path) {
|
78
|
+
throw new Error("Invalid params: path is required");
|
79
|
+
}
|
80
|
+
return `delete_document(path="${params.path}")`;
|
81
|
+
case "analyze_docs":
|
82
|
+
return "analyze_docs()";
|
83
|
+
case "get_health_score":
|
84
|
+
return "get_health_score()";
|
85
|
+
case "get_suggestions":
|
86
|
+
return "get_suggestions()";
|
87
|
+
default:
|
88
|
+
return null;
|
89
|
+
}
|
90
|
+
}
|
91
|
+
/**
|
92
|
+
* Create a JSON-RPC 2.0 success response
|
93
|
+
*/
|
94
|
+
function createSuccessResponse(id, result) {
|
95
|
+
return {
|
96
|
+
jsonrpc: "2.0",
|
97
|
+
result,
|
98
|
+
id,
|
99
|
+
};
|
100
|
+
}
|
101
|
+
/**
|
102
|
+
* Create a JSON-RPC 2.0 error response
|
103
|
+
*/
|
104
|
+
function createErrorResponse(id, code, message, data) {
|
105
|
+
return {
|
106
|
+
jsonrpc: "2.0",
|
107
|
+
error: {
|
108
|
+
code,
|
109
|
+
message,
|
110
|
+
data,
|
111
|
+
},
|
112
|
+
id,
|
113
|
+
};
|
114
|
+
}
|
115
|
+
/**
|
116
|
+
* Escape special characters in a string
|
117
|
+
*/
|
118
|
+
function escapeString(str) {
|
119
|
+
return str.replace(/"/g, '\\"').replace(/\n/g, "\\n");
|
120
|
+
}
|
121
|
+
//# sourceMappingURL=jsonrpc.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"jsonrpc.js","sourceRoot":"","sources":["../../src/cli/jsonrpc.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "mcp-docs-service",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.2.0",
|
4
4
|
"description": "MCP Documentation Management Service - A Model Context Protocol implementation for documentation management",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"types": "dist/index.d.ts",
|
@@ -21,9 +21,11 @@
|
|
21
21
|
"markdown",
|
22
22
|
"model-context-protocol"
|
23
23
|
],
|
24
|
-
"author": "
|
24
|
+
"author": "Aleks Petrov",
|
25
25
|
"license": "MIT",
|
26
26
|
"dependencies": {
|
27
|
+
"@modelcontextprotocol/sdk": "^1.6.1",
|
28
|
+
"googleapis": "^146.0.0",
|
27
29
|
"js-yaml": "^4.1.0"
|
28
30
|
},
|
29
31
|
"devDependencies": {
|