@syndicai/stack-mcp 0.1.0 → 0.1.1
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/package.json +2 -2
- package/tools.js +7 -4
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@syndicai/stack-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Local stdio MCP server for SyndicAI Stack (Memory and future tools)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
|
-
"syndicai-stack-mcp": "
|
|
7
|
+
"syndicai-stack-mcp": "main.js"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"*.js"
|
package/tools.js
CHANGED
|
@@ -66,7 +66,8 @@ export async function runMemoryIngestStatus(client, args) {
|
|
|
66
66
|
export function registerStackMcpTools(server, client) {
|
|
67
67
|
server.registerTool('memory_search', {
|
|
68
68
|
title: 'Search Memory',
|
|
69
|
-
description: 'Hybrid search over the squad Memory corpus (vector + lexical). Returns ranked chunk hits with content and scores.'
|
|
69
|
+
description: 'Hybrid search over the squad Memory corpus (vector + lexical). Returns ranked chunk hits with content and scores. ' +
|
|
70
|
+
'Query embedding shares the satellite GPU with coding chat: under load embeddings are throttled (lower concurrency) so search may be slower while users are chatting — wait and retry rather than assuming Memory is down.',
|
|
70
71
|
inputSchema: {
|
|
71
72
|
query: z.string().describe('Natural-language search query'),
|
|
72
73
|
limit: z
|
|
@@ -83,9 +84,10 @@ export function registerStackMcpTools(server, client) {
|
|
|
83
84
|
}, async (args) => runMemorySearch(client, args));
|
|
84
85
|
server.registerTool('memory_ingest', {
|
|
85
86
|
title: 'Ingest into Memory',
|
|
86
|
-
description: 'Start (or resume) a Memory ingest job. Prefer local `path` for PDFs/images so bytes stay out of the model context; ' +
|
|
87
|
+
description: 'Start (or resume) a Memory ingest job (OCR → chunk → embed → store). Prefer local `path` for PDFs/images so bytes stay out of the model context; ' +
|
|
87
88
|
'the MCP process reads the file and POSTs JSON (text or binaryBase64) to Memory REST. ' +
|
|
88
|
-
'
|
|
89
|
+
'Scheduling: coding chat is foreground; OCR stays concurrency 1 and is spaced under load; embeddings use a lower concurrency cap while chat is busy and a higher cap when idle — jobs usually keep progressing rather than pausing. ' +
|
|
90
|
+
'Poll memory_ingest_status until completed/failed. If status is "paused", keep polling the same jobId — do not open a second ingest for the same sourceKey. Large PDFs can take many minutes when the squad is actively chatting.',
|
|
89
91
|
inputSchema: {
|
|
90
92
|
sourceKey: z
|
|
91
93
|
.string()
|
|
@@ -108,7 +110,8 @@ export function registerStackMcpTools(server, client) {
|
|
|
108
110
|
}, async (args) => runMemoryIngest(client, args));
|
|
109
111
|
server.registerTool('memory_ingest_status', {
|
|
110
112
|
title: 'Ingest job status',
|
|
111
|
-
description: 'Fetch status and checkpoint for a Memory ingest job.
|
|
113
|
+
description: 'Fetch status and checkpoint for a Memory ingest job. Typical statuses: pending/running (in progress, may be slow under chat load), paused (rare — keep polling), completed, failed. ' +
|
|
114
|
+
'Do not create a new ingest for the same sourceKey while a non-terminal job exists.',
|
|
112
115
|
inputSchema: {
|
|
113
116
|
jobId: z.string().describe('Ingest job id from memory_ingest'),
|
|
114
117
|
},
|