@moorchehai/mcp 1.3.3 → 1.3.4
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 +4 -1
- package/package.json +1 -1
- package/src/server/index.js +247 -225
- package/src/server/tools/data-tools.js +356 -209
- package/src/server/tools/namespace-tools.js +129 -129
- package/src/server/utils/prompts.js +358 -358
- package/src/server/utils/resources.js +7 -18
package/README.md
CHANGED
|
@@ -208,7 +208,10 @@ The Moorcheh MCP server provides tools for:
|
|
|
208
208
|
### Data Tools
|
|
209
209
|
- **`upload-text`**: Upload text documents to a namespace
|
|
210
210
|
- **`upload-vectors`**: Upload vector embeddings to a namespace
|
|
211
|
-
- **`upload-file`**: Upload files
|
|
211
|
+
- **`upload-file`**: Upload files to a text namespace via pre-signed URL (supported types: .pdf, .docx, .xlsx, .json, .txt, .csv, .md)
|
|
212
|
+
- **`list-files`**: List raw file objects in S3 storage for a namespace (`GET /list-files`; see [List Files](https://docs.moorcheh.ai/api-reference/files/list-files))
|
|
213
|
+
- **`delete-file`**: Delete one or more raw files from S3 storage (`DELETE /delete-file` with `file_name` and/or `file_names`; see [Delete File](https://docs.moorcheh.ai/api-reference/data/delete-file))
|
|
214
|
+
- **`fetch-text-data`**: List text and summary chunks from a text namespace (GET `/documents/fetch-text-data`, up to 100 items per response; see [Fetch Text Data](https://docs.moorcheh.ai/api-reference/data/fetch-text-data))
|
|
212
215
|
- **`get-data`**: Retrieve text documents by ID from text namespaces
|
|
213
216
|
- **`delete-data`**: Remove specific data items from a namespace
|
|
214
217
|
|
package/package.json
CHANGED
package/src/server/index.js
CHANGED
|
@@ -1,226 +1,248 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
4
|
-
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
5
|
-
|
|
6
|
-
// Import tools
|
|
7
|
-
import { listNamespacesTool, createNamespaceTool, deleteNamespaceTool } from './tools/namespace-tools.js';
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
//
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
//
|
|
50
|
-
server
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
apiDocsResource.
|
|
67
|
-
apiDocsResource.
|
|
68
|
-
apiDocsResource.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
configHelpResource.
|
|
74
|
-
configHelpResource.
|
|
75
|
-
configHelpResource.
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
namespaceCreationGuideResource.
|
|
81
|
-
namespaceCreationGuideResource.
|
|
82
|
-
namespaceCreationGuideResource.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
searchOptimizationGuideResource.
|
|
88
|
-
searchOptimizationGuideResource.
|
|
89
|
-
searchOptimizationGuideResource.
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
dataOrganizationGuideResource.
|
|
95
|
-
dataOrganizationGuideResource.
|
|
96
|
-
dataOrganizationGuideResource.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
aiAnswerSetupGuideResource.
|
|
102
|
-
aiAnswerSetupGuideResource.
|
|
103
|
-
aiAnswerSetupGuideResource.
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
listNamespacesTool.
|
|
112
|
-
listNamespacesTool.
|
|
113
|
-
listNamespacesTool.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
createNamespaceTool.
|
|
119
|
-
createNamespaceTool.
|
|
120
|
-
createNamespaceTool.
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
deleteNamespaceTool.
|
|
126
|
-
deleteNamespaceTool.
|
|
127
|
-
deleteNamespaceTool.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
uploadTextTool.
|
|
134
|
-
uploadTextTool.
|
|
135
|
-
uploadTextTool.
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
uploadVectorsTool.
|
|
141
|
-
uploadVectorsTool.
|
|
142
|
-
uploadVectorsTool.
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
deleteDataTool.
|
|
148
|
-
deleteDataTool.
|
|
149
|
-
deleteDataTool.
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
getDataTool.
|
|
155
|
-
getDataTool.
|
|
156
|
-
getDataTool.
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
server.tool(
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
);
|
|
173
|
-
|
|
174
|
-
server.tool(
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
);
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
// Register
|
|
206
|
-
server.registerPrompt(
|
|
207
|
-
|
|
208
|
-
{
|
|
209
|
-
title: '
|
|
210
|
-
description:
|
|
211
|
-
argsSchema:
|
|
212
|
-
},
|
|
213
|
-
async (args) =>
|
|
214
|
-
);
|
|
215
|
-
|
|
216
|
-
//
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
4
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
5
|
+
|
|
6
|
+
// Import tools
|
|
7
|
+
import { listNamespacesTool, createNamespaceTool, deleteNamespaceTool } from './tools/namespace-tools.js';
|
|
8
|
+
import {
|
|
9
|
+
uploadTextTool,
|
|
10
|
+
uploadVectorsTool,
|
|
11
|
+
deleteDataTool,
|
|
12
|
+
getDataTool,
|
|
13
|
+
fetchTextDataTool,
|
|
14
|
+
uploadFileTool,
|
|
15
|
+
listFilesTool,
|
|
16
|
+
deleteFileTool,
|
|
17
|
+
} from './tools/data-tools.js';
|
|
18
|
+
import { searchTool, answerTool } from './tools/search-tools.js';
|
|
19
|
+
|
|
20
|
+
// Import resources
|
|
21
|
+
import {
|
|
22
|
+
namespacesResource,
|
|
23
|
+
apiDocsResource,
|
|
24
|
+
configHelpResource,
|
|
25
|
+
namespaceCreationGuideResource,
|
|
26
|
+
searchOptimizationGuideResource,
|
|
27
|
+
dataOrganizationGuideResource,
|
|
28
|
+
aiAnswerSetupGuideResource
|
|
29
|
+
} from './utils/resources.js';
|
|
30
|
+
|
|
31
|
+
// Import prompts
|
|
32
|
+
import {
|
|
33
|
+
searchOptimizationPrompt,
|
|
34
|
+
dataOrganizationPrompt,
|
|
35
|
+
aiAnswerSetupPrompt
|
|
36
|
+
} from './utils/prompts.js';
|
|
37
|
+
|
|
38
|
+
// Suppress stdout to prevent any non-MCP output
|
|
39
|
+
const originalStdoutWrite = process.stdout.write;
|
|
40
|
+
process.stdout.write = (chunk, encoding, callback) => {
|
|
41
|
+
// Only allow JSON-RPC messages to stdout
|
|
42
|
+
if (typeof chunk === 'string' && (chunk.trim().startsWith('{') || chunk.trim().startsWith('['))) {
|
|
43
|
+
return originalStdoutWrite.call(process.stdout, chunk, encoding, callback);
|
|
44
|
+
}
|
|
45
|
+
// Redirect everything else to stderr
|
|
46
|
+
process.stderr.write(chunk, encoding, callback);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// Create server instance
|
|
50
|
+
const server = new McpServer({
|
|
51
|
+
name: "Moorcheh",
|
|
52
|
+
version: "1.0.0",
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// ========== REGISTER RESOURCES ==========
|
|
56
|
+
|
|
57
|
+
// Register all resources
|
|
58
|
+
server.resource(
|
|
59
|
+
namespacesResource.uri,
|
|
60
|
+
namespacesResource.description,
|
|
61
|
+
namespacesResource.mimeType,
|
|
62
|
+
namespacesResource.handler
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
server.resource(
|
|
66
|
+
apiDocsResource.uri,
|
|
67
|
+
apiDocsResource.description,
|
|
68
|
+
apiDocsResource.mimeType,
|
|
69
|
+
apiDocsResource.handler
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
server.resource(
|
|
73
|
+
configHelpResource.uri,
|
|
74
|
+
configHelpResource.description,
|
|
75
|
+
configHelpResource.mimeType,
|
|
76
|
+
configHelpResource.handler
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
server.resource(
|
|
80
|
+
namespaceCreationGuideResource.uri,
|
|
81
|
+
namespaceCreationGuideResource.description,
|
|
82
|
+
namespaceCreationGuideResource.mimeType,
|
|
83
|
+
namespaceCreationGuideResource.handler
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
server.resource(
|
|
87
|
+
searchOptimizationGuideResource.uri,
|
|
88
|
+
searchOptimizationGuideResource.description,
|
|
89
|
+
searchOptimizationGuideResource.mimeType,
|
|
90
|
+
searchOptimizationGuideResource.handler
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
server.resource(
|
|
94
|
+
dataOrganizationGuideResource.uri,
|
|
95
|
+
dataOrganizationGuideResource.description,
|
|
96
|
+
dataOrganizationGuideResource.mimeType,
|
|
97
|
+
dataOrganizationGuideResource.handler
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
server.resource(
|
|
101
|
+
aiAnswerSetupGuideResource.uri,
|
|
102
|
+
aiAnswerSetupGuideResource.description,
|
|
103
|
+
aiAnswerSetupGuideResource.mimeType,
|
|
104
|
+
aiAnswerSetupGuideResource.handler
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
// ========== REGISTER TOOLS ==========
|
|
108
|
+
|
|
109
|
+
// Register namespace tools
|
|
110
|
+
server.tool(
|
|
111
|
+
listNamespacesTool.name,
|
|
112
|
+
listNamespacesTool.description,
|
|
113
|
+
listNamespacesTool.parameters,
|
|
114
|
+
listNamespacesTool.handler,
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
server.tool(
|
|
118
|
+
createNamespaceTool.name,
|
|
119
|
+
createNamespaceTool.description,
|
|
120
|
+
createNamespaceTool.parameters,
|
|
121
|
+
createNamespaceTool.handler,
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
server.tool(
|
|
125
|
+
deleteNamespaceTool.name,
|
|
126
|
+
deleteNamespaceTool.description,
|
|
127
|
+
deleteNamespaceTool.parameters,
|
|
128
|
+
deleteNamespaceTool.handler,
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
// Register data tools
|
|
132
|
+
server.tool(
|
|
133
|
+
uploadTextTool.name,
|
|
134
|
+
uploadTextTool.description,
|
|
135
|
+
uploadTextTool.parameters,
|
|
136
|
+
uploadTextTool.handler,
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
server.tool(
|
|
140
|
+
uploadVectorsTool.name,
|
|
141
|
+
uploadVectorsTool.description,
|
|
142
|
+
uploadVectorsTool.parameters,
|
|
143
|
+
uploadVectorsTool.handler,
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
server.tool(
|
|
147
|
+
deleteDataTool.name,
|
|
148
|
+
deleteDataTool.description,
|
|
149
|
+
deleteDataTool.parameters,
|
|
150
|
+
deleteDataTool.handler,
|
|
151
|
+
);
|
|
152
|
+
|
|
153
|
+
server.tool(
|
|
154
|
+
getDataTool.name,
|
|
155
|
+
getDataTool.description,
|
|
156
|
+
getDataTool.parameters,
|
|
157
|
+
getDataTool.handler,
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
server.tool(
|
|
161
|
+
fetchTextDataTool.name,
|
|
162
|
+
fetchTextDataTool.description,
|
|
163
|
+
fetchTextDataTool.parameters,
|
|
164
|
+
fetchTextDataTool.handler,
|
|
165
|
+
);
|
|
166
|
+
|
|
167
|
+
server.tool(
|
|
168
|
+
uploadFileTool.name,
|
|
169
|
+
uploadFileTool.description,
|
|
170
|
+
uploadFileTool.parameters,
|
|
171
|
+
uploadFileTool.handler,
|
|
172
|
+
);
|
|
173
|
+
|
|
174
|
+
server.tool(
|
|
175
|
+
listFilesTool.name,
|
|
176
|
+
listFilesTool.description,
|
|
177
|
+
listFilesTool.parameters,
|
|
178
|
+
listFilesTool.handler,
|
|
179
|
+
);
|
|
180
|
+
|
|
181
|
+
server.tool(
|
|
182
|
+
deleteFileTool.name,
|
|
183
|
+
deleteFileTool.description,
|
|
184
|
+
deleteFileTool.parameters,
|
|
185
|
+
deleteFileTool.handler,
|
|
186
|
+
);
|
|
187
|
+
|
|
188
|
+
// Register search tools
|
|
189
|
+
server.tool(
|
|
190
|
+
searchTool.name,
|
|
191
|
+
searchTool.description,
|
|
192
|
+
searchTool.parameters,
|
|
193
|
+
searchTool.handler,
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
server.tool(
|
|
197
|
+
answerTool.name,
|
|
198
|
+
answerTool.description,
|
|
199
|
+
answerTool.parameters,
|
|
200
|
+
answerTool.handler,
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
// ========== REGISTER PROMPTS ==========
|
|
204
|
+
|
|
205
|
+
// Register search optimization prompt (new SDK signature)
|
|
206
|
+
server.registerPrompt(
|
|
207
|
+
searchOptimizationPrompt.name,
|
|
208
|
+
{
|
|
209
|
+
title: 'Search Optimization',
|
|
210
|
+
description: searchOptimizationPrompt.description,
|
|
211
|
+
argsSchema: searchOptimizationPrompt.argsSchema,
|
|
212
|
+
},
|
|
213
|
+
async (args) => searchOptimizationPrompt.handler(args)
|
|
214
|
+
);
|
|
215
|
+
|
|
216
|
+
// Register data organization prompt
|
|
217
|
+
server.registerPrompt(
|
|
218
|
+
dataOrganizationPrompt.name,
|
|
219
|
+
{
|
|
220
|
+
title: 'Data Organization',
|
|
221
|
+
description: dataOrganizationPrompt.description,
|
|
222
|
+
argsSchema: dataOrganizationPrompt.argsSchema,
|
|
223
|
+
},
|
|
224
|
+
async (args) => dataOrganizationPrompt.handler(args)
|
|
225
|
+
);
|
|
226
|
+
|
|
227
|
+
// Register AI answer setup prompt
|
|
228
|
+
server.registerPrompt(
|
|
229
|
+
aiAnswerSetupPrompt.name,
|
|
230
|
+
{
|
|
231
|
+
title: 'AI Answer Setup',
|
|
232
|
+
description: aiAnswerSetupPrompt.description,
|
|
233
|
+
argsSchema: aiAnswerSetupPrompt.argsSchema,
|
|
234
|
+
},
|
|
235
|
+
async (args) => aiAnswerSetupPrompt.handler(args)
|
|
236
|
+
);
|
|
237
|
+
|
|
238
|
+
// Start the server
|
|
239
|
+
async function main() {
|
|
240
|
+
const transport = new StdioServerTransport();
|
|
241
|
+
await server.connect(transport);
|
|
242
|
+
console.error("Server started");
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
main().catch((error) => {
|
|
246
|
+
console.error("Fatal error in main():", error);
|
|
247
|
+
process.exit(1);
|
|
226
248
|
});
|