@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 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 directly to a text-type namespace (supports .pdf, .docx, .xlsx, .json, .txt, .csv, .md, max 10MB)
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moorchehai/mcp",
3
- "version": "1.3.3",
3
+ "version": "1.3.4",
4
4
  "description": "Moorcheh MCP Server with completable functionality for AI-powered search and answer operations",
5
5
  "main": "src/server/index.js",
6
6
  "type": "module",
@@ -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 { uploadTextTool, uploadVectorsTool, deleteDataTool, getDataTool, uploadFileTool } from './tools/data-tools.js';
9
- import { searchTool, answerTool } from './tools/search-tools.js';
10
-
11
- // Import resources
12
- import {
13
- namespacesResource,
14
- namespaceDetailsResource,
15
- apiDocsResource,
16
- configHelpResource,
17
- namespaceCreationGuideResource,
18
- searchOptimizationGuideResource,
19
- dataOrganizationGuideResource,
20
- aiAnswerSetupGuideResource
21
- } from './utils/resources.js';
22
-
23
- // Import prompts
24
- import {
25
- searchOptimizationPrompt,
26
- dataOrganizationPrompt,
27
- aiAnswerSetupPrompt
28
- } from './utils/prompts.js';
29
-
30
- // Suppress stdout to prevent any non-MCP output
31
- const originalStdoutWrite = process.stdout.write;
32
- process.stdout.write = (chunk, encoding, callback) => {
33
- // Only allow JSON-RPC messages to stdout
34
- if (typeof chunk === 'string' && (chunk.trim().startsWith('{') || chunk.trim().startsWith('['))) {
35
- return originalStdoutWrite.call(process.stdout, chunk, encoding, callback);
36
- }
37
- // Redirect everything else to stderr
38
- process.stderr.write(chunk, encoding, callback);
39
- };
40
-
41
- // Create server instance
42
- const server = new McpServer({
43
- name: "Moorcheh",
44
- version: "1.0.0",
45
- });
46
-
47
- // ========== REGISTER RESOURCES ==========
48
-
49
- // Register all resources
50
- server.resource(
51
- namespacesResource.uri,
52
- namespacesResource.description,
53
- namespacesResource.mimeType,
54
- namespacesResource.handler
55
- );
56
-
57
- server.resource(
58
- namespaceDetailsResource.uri,
59
- namespaceDetailsResource.description,
60
- namespaceDetailsResource.mimeType,
61
- namespaceDetailsResource.handler
62
- );
63
-
64
- server.resource(
65
- apiDocsResource.uri,
66
- apiDocsResource.description,
67
- apiDocsResource.mimeType,
68
- apiDocsResource.handler
69
- );
70
-
71
- server.resource(
72
- configHelpResource.uri,
73
- configHelpResource.description,
74
- configHelpResource.mimeType,
75
- configHelpResource.handler
76
- );
77
-
78
- server.resource(
79
- namespaceCreationGuideResource.uri,
80
- namespaceCreationGuideResource.description,
81
- namespaceCreationGuideResource.mimeType,
82
- namespaceCreationGuideResource.handler
83
- );
84
-
85
- server.resource(
86
- searchOptimizationGuideResource.uri,
87
- searchOptimizationGuideResource.description,
88
- searchOptimizationGuideResource.mimeType,
89
- searchOptimizationGuideResource.handler
90
- );
91
-
92
- server.resource(
93
- dataOrganizationGuideResource.uri,
94
- dataOrganizationGuideResource.description,
95
- dataOrganizationGuideResource.mimeType,
96
- dataOrganizationGuideResource.handler
97
- );
98
-
99
- server.resource(
100
- aiAnswerSetupGuideResource.uri,
101
- aiAnswerSetupGuideResource.description,
102
- aiAnswerSetupGuideResource.mimeType,
103
- aiAnswerSetupGuideResource.handler
104
- );
105
-
106
- // ========== REGISTER TOOLS ==========
107
-
108
- // Register namespace tools
109
- server.tool(
110
- listNamespacesTool.name,
111
- listNamespacesTool.description,
112
- listNamespacesTool.parameters,
113
- listNamespacesTool.handler,
114
- );
115
-
116
- server.tool(
117
- createNamespaceTool.name,
118
- createNamespaceTool.description,
119
- createNamespaceTool.parameters,
120
- createNamespaceTool.handler,
121
- );
122
-
123
- server.tool(
124
- deleteNamespaceTool.name,
125
- deleteNamespaceTool.description,
126
- deleteNamespaceTool.parameters,
127
- deleteNamespaceTool.handler,
128
- );
129
-
130
- // Register data tools
131
- server.tool(
132
- uploadTextTool.name,
133
- uploadTextTool.description,
134
- uploadTextTool.parameters,
135
- uploadTextTool.handler,
136
- );
137
-
138
- server.tool(
139
- uploadVectorsTool.name,
140
- uploadVectorsTool.description,
141
- uploadVectorsTool.parameters,
142
- uploadVectorsTool.handler,
143
- );
144
-
145
- server.tool(
146
- deleteDataTool.name,
147
- deleteDataTool.description,
148
- deleteDataTool.parameters,
149
- deleteDataTool.handler,
150
- );
151
-
152
- server.tool(
153
- getDataTool.name,
154
- getDataTool.description,
155
- getDataTool.parameters,
156
- getDataTool.handler,
157
- );
158
-
159
- server.tool(
160
- uploadFileTool.name,
161
- uploadFileTool.description,
162
- uploadFileTool.parameters,
163
- uploadFileTool.handler,
164
- );
165
-
166
- // Register search tools
167
- server.tool(
168
- searchTool.name,
169
- searchTool.description,
170
- searchTool.parameters,
171
- searchTool.handler,
172
- );
173
-
174
- server.tool(
175
- answerTool.name,
176
- answerTool.description,
177
- answerTool.parameters,
178
- answerTool.handler,
179
- );
180
-
181
- // ========== REGISTER PROMPTS ==========
182
-
183
- // Register search optimization prompt (new SDK signature)
184
- server.registerPrompt(
185
- searchOptimizationPrompt.name,
186
- {
187
- title: 'Search Optimization',
188
- description: searchOptimizationPrompt.description,
189
- argsSchema: searchOptimizationPrompt.argsSchema,
190
- },
191
- async (args) => searchOptimizationPrompt.handler(args)
192
- );
193
-
194
- // Register data organization prompt
195
- server.registerPrompt(
196
- dataOrganizationPrompt.name,
197
- {
198
- title: 'Data Organization',
199
- description: dataOrganizationPrompt.description,
200
- argsSchema: dataOrganizationPrompt.argsSchema,
201
- },
202
- async (args) => dataOrganizationPrompt.handler(args)
203
- );
204
-
205
- // Register AI answer setup prompt
206
- server.registerPrompt(
207
- aiAnswerSetupPrompt.name,
208
- {
209
- title: 'AI Answer Setup',
210
- description: aiAnswerSetupPrompt.description,
211
- argsSchema: aiAnswerSetupPrompt.argsSchema,
212
- },
213
- async (args) => aiAnswerSetupPrompt.handler(args)
214
- );
215
-
216
- // Start the server
217
- async function main() {
218
- const transport = new StdioServerTransport();
219
- await server.connect(transport);
220
- console.error("Server started");
221
- }
222
-
223
- main().catch((error) => {
224
- console.error("Fatal error in main():", error);
225
- process.exit(1);
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
  });