nusus-mcp 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 +5 -5
- package/dist/index.js +25 -18
- package/dist/index.js.map +1 -1
- package/package.json +7 -4
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ Node.js 20+ is required. Add this to `claude_desktop_config.json`, then restart
|
|
|
19
19
|
|
|
20
20
|
`npx` downloads the npm package automatically; users do not need to clone this repository. Claude Desktop may start with a limited `PATH`. If it cannot find `npx`, replace `"npx"` with the absolute path printed by `which npx` (macOS/Linux) or `where.exe npx` (Windows).
|
|
21
21
|
|
|
22
|
-
The server uses stdio only and writes protocol messages to stdout. It calls Turath's public API for live tools; `find_books` and `find_authors` use Nusus's bundled offline catalog.
|
|
22
|
+
The server uses stdio only and writes protocol messages to stdout. It supports both legacy MCP clients and clients pinned to protocol revision `2026-07-28`. It calls Turath's public API for live tools; `find_books` and `find_authors` use Nusus's bundled offline catalog.
|
|
23
23
|
|
|
24
24
|
## Tools
|
|
25
25
|
|
|
@@ -35,14 +35,14 @@ Each live search filter accepts at most one ID. `pageId` is Turath's internal pa
|
|
|
35
35
|
|
|
36
36
|
## Development
|
|
37
37
|
|
|
38
|
-
`nusus-mcp`
|
|
38
|
+
`nusus-mcp` is installed independently from the root package and declares the published `nusus` SDK as a runtime dependency. For a release that bumps both packages, publish the root `nusus` package before installing or publishing `nusus-mcp` so npm can resolve the SDK dependency. Then run:
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
|
+
cd mcp
|
|
41
42
|
bun install
|
|
42
43
|
bun run build
|
|
43
|
-
|
|
44
|
+
bun run typecheck
|
|
45
|
+
bun run test
|
|
44
46
|
```
|
|
45
47
|
|
|
46
|
-
Publish `nusus@0.6.0` before publishing `nusus-mcp@0.1.0` so fresh installs can resolve the SDK dependency.
|
|
47
|
-
|
|
48
48
|
`NUSUS_TURATH_BASE_URL` overrides the Turath API base URL, primarily for fixture-backed tests.
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { Server } from "@modelcontextprotocol/
|
|
3
|
-
import {
|
|
4
|
-
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { Server } from "@modelcontextprotocol/server";
|
|
3
|
+
import { serveStdio } from "@modelcontextprotocol/server/stdio";
|
|
5
4
|
import { NususError } from "nusus";
|
|
6
5
|
import { createTurathClient } from "nusus/turath";
|
|
7
6
|
const positiveInteger = (args, key, required = false) => {
|
|
@@ -104,7 +103,7 @@ const tools = [
|
|
|
104
103
|
},
|
|
105
104
|
];
|
|
106
105
|
const jsonContent = (value, isError = false) => ({
|
|
107
|
-
content: [{ type: "text", text: JSON.stringify(value) }],
|
|
106
|
+
content: [{ type: "text", text: JSON.stringify(value, (key, item) => key === "raw" ? undefined : item) }],
|
|
108
107
|
...(isError && { isError: true }),
|
|
109
108
|
});
|
|
110
109
|
const runTool = async (name, args) => {
|
|
@@ -148,21 +147,29 @@ const runTool = async (name, args) => {
|
|
|
148
147
|
throw new NususError("INVALID_ARGUMENT", `Unknown tool: ${name}`);
|
|
149
148
|
}
|
|
150
149
|
};
|
|
151
|
-
const
|
|
152
|
-
server
|
|
153
|
-
server.setRequestHandler(
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}
|
|
150
|
+
const createServer = () => {
|
|
151
|
+
const server = new Server({ name: "nusus-mcp", version: "0.2.0" }, { capabilities: { tools: {} } });
|
|
152
|
+
server.setRequestHandler("tools/list", async () => ({ tools: [...tools] }));
|
|
153
|
+
server.setRequestHandler("tools/call", async (request) => {
|
|
154
|
+
try {
|
|
155
|
+
return jsonContent(await runTool(request.params.name, request.params.arguments ?? {}));
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
if (error instanceof NususError)
|
|
159
|
+
return jsonContent({ code: error.code, message: error.message }, true);
|
|
160
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
161
|
+
return jsonContent({ code: "INTERNAL", message }, true);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
return server;
|
|
165
|
+
};
|
|
164
166
|
try {
|
|
165
|
-
|
|
167
|
+
serveStdio(createServer, {
|
|
168
|
+
onerror: (error) => {
|
|
169
|
+
process.stderr.write(`nusus-mcp failed: ${error.message}\n`);
|
|
170
|
+
process.exitCode = 1;
|
|
171
|
+
},
|
|
172
|
+
});
|
|
166
173
|
}
|
|
167
174
|
catch (error) {
|
|
168
175
|
process.stderr.write(`nusus-mcp failed: ${error instanceof Error ? error.message : String(error)}\n`);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nusus-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Local MCP stdio server for Nusus and Turath",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"turath",
|
|
@@ -41,11 +41,14 @@
|
|
|
41
41
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@modelcontextprotocol/
|
|
45
|
-
"nusus": "^0.
|
|
44
|
+
"@modelcontextprotocol/server": "^2.0.0",
|
|
45
|
+
"nusus": "^0.7.0"
|
|
46
46
|
},
|
|
47
47
|
"engines": {
|
|
48
48
|
"node": ">=20"
|
|
49
49
|
},
|
|
50
|
-
"license": "MIT"
|
|
50
|
+
"license": "MIT",
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@modelcontextprotocol/client": "^2.0.0"
|
|
53
|
+
}
|
|
51
54
|
}
|