@llangtop/pwiki-mcp 0.1.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/dist/index.d.ts +2 -0
- package/dist/index.js +206 -0
- package/dist/index.js.map +1 -0
- package/package.json +38 -0
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// index.ts — Wiki MCP Server (stdio)
|
|
3
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
4
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { WikiEngine } from "@llangtop/pwiki-core";
|
|
7
|
+
function defaultDir() {
|
|
8
|
+
const home = process.env.HOME || process.env.USERPROFILE || process.cwd();
|
|
9
|
+
return `${home}/.Pwiki`;
|
|
10
|
+
}
|
|
11
|
+
const engine = new WikiEngine({
|
|
12
|
+
basePath: process.env.WIKI_BASE_PATH || defaultDir(),
|
|
13
|
+
modelId: process.env.WIKI_MODEL_ID || undefined,
|
|
14
|
+
});
|
|
15
|
+
const server = new McpServer({ name: "Pwiki", version: "0.1.0" });
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Tools — 搜索
|
|
18
|
+
// ============================================================================
|
|
19
|
+
server.tool("wiki_search", "Search wiki knowledge base. Modes: keyword (default, fast), semantic (meaning-based), hybrid (RRF fusion).", {
|
|
20
|
+
query: z.string().describe("Search query"),
|
|
21
|
+
mode: z.enum(["keyword", "semantic", "hybrid"]).optional()
|
|
22
|
+
.describe("Search mode. Default keyword. Use semantic for vague natural-language intent."),
|
|
23
|
+
page: z.number().int().min(1).optional().describe("Page number (1-based, 10 per page)"),
|
|
24
|
+
fullContent: z.boolean().optional().describe("Include full content (5 per page)"),
|
|
25
|
+
}, async ({ query, mode, page, fullContent }) => {
|
|
26
|
+
const hits = await engine.search_(query, mode ?? "keyword");
|
|
27
|
+
if (hits.length === 0)
|
|
28
|
+
return text(`No results for "${query}" (${mode ?? "keyword"})`);
|
|
29
|
+
const limit = fullContent ? 5 : 10;
|
|
30
|
+
const p = Math.max(1, page ?? 1);
|
|
31
|
+
const pageHits = hits.slice((p - 1) * limit, p * limit);
|
|
32
|
+
const lines = pageHits.map((h, i) => {
|
|
33
|
+
const tags = h.tags.length ? ` [${h.tags.join(", ")}]` : "";
|
|
34
|
+
const snippet = h.snippet ? `\n ${h.snippet.replace(/\n/g, "\n ")}` : "";
|
|
35
|
+
return `${i + 1}. ${h.title}${tags}\n ${h.path}${snippet}`;
|
|
36
|
+
});
|
|
37
|
+
return text(`"${query}" — ${hits.length} results (${mode ?? "keyword"})\n\n${lines.join("\n\n")}`);
|
|
38
|
+
});
|
|
39
|
+
// ============================================================================
|
|
40
|
+
// Tools — 数据源
|
|
41
|
+
// ============================================================================
|
|
42
|
+
server.tool("wiki_load", "Load a directory as wiki data source. Recursively scans .md files and builds search index.", { path: z.string().describe("Absolute directory path") }, async ({ path }) => {
|
|
43
|
+
if (!engine.addSource(path))
|
|
44
|
+
return text(`Already loaded: ${path}`);
|
|
45
|
+
const count = await engine.loadSource(path);
|
|
46
|
+
return text(`Loaded ${count} .md files from ${path}`);
|
|
47
|
+
});
|
|
48
|
+
server.tool("wiki_unload", "Remove a data source. Omit path to list loaded sources.", { path: z.string().optional() }, async ({ path }) => {
|
|
49
|
+
if (!path) {
|
|
50
|
+
const srcs = engine.sources;
|
|
51
|
+
return text(srcs.length ? `Loaded sources:\n${srcs.map(s => ` ${s}`).join("\n")}` : "No sources loaded.");
|
|
52
|
+
}
|
|
53
|
+
const removed = engine.removeSource(path);
|
|
54
|
+
return text(removed ? `Removed: ${removed}` : `Not found: ${path}`);
|
|
55
|
+
});
|
|
56
|
+
server.tool("wiki_refresh", "Re-scan and rebuild index for a source (or all sources).", { source: z.string().optional().describe("Source path. Omit to refresh all.") }, async ({ source }) => {
|
|
57
|
+
if (source) {
|
|
58
|
+
const count = await engine.loadSource(source);
|
|
59
|
+
return text(`Refreshed ${source}: ${count} files`);
|
|
60
|
+
}
|
|
61
|
+
const result = await engine.load();
|
|
62
|
+
return text(`Refreshed all: ${result.files} files from ${result.sources} sources`);
|
|
63
|
+
});
|
|
64
|
+
// ============================================================================
|
|
65
|
+
// Tools — 条目 CRUD
|
|
66
|
+
// ============================================================================
|
|
67
|
+
server.tool("wiki_read_entry", "Read a wiki entry's full content by its relative path.", { path: z.string().describe("Relative path (from search results)") }, async ({ path }) => {
|
|
68
|
+
const result = engine.readEntry(path);
|
|
69
|
+
if (!result)
|
|
70
|
+
return text(`Not found: ${path}`);
|
|
71
|
+
return text(`# ${result.entry.title}\n\n${result.content}`);
|
|
72
|
+
});
|
|
73
|
+
server.tool("wiki_create_entry", "Create a new .md entry in a data source. Auto-generates frontmatter.", {
|
|
74
|
+
source: z.string().describe("Source directory path"),
|
|
75
|
+
path: z.string().describe("Relative path for the new file"),
|
|
76
|
+
title: z.string().optional().describe("Document title"),
|
|
77
|
+
tags: z.array(z.string()).optional().describe("Tags"),
|
|
78
|
+
content: z.string().optional().describe("Body content (after frontmatter)"),
|
|
79
|
+
}, async ({ source, path, title, tags, content }) => {
|
|
80
|
+
const result = engine.createEntry(source, path, title ?? path, tags ?? [], content ?? "");
|
|
81
|
+
return text(result.includes("已存在") ? result : `Created: ${result}`);
|
|
82
|
+
});
|
|
83
|
+
server.tool("wiki_rename_entry", "Rename a wiki entry's title (updates frontmatter).", {
|
|
84
|
+
path: z.string().describe("Current relative path"),
|
|
85
|
+
title: z.string().describe("New title"),
|
|
86
|
+
}, async ({ path, title }) => {
|
|
87
|
+
const ok = engine.renameEntry(path, title);
|
|
88
|
+
return text(ok ? `Renamed ${path} → "${title}"` : `Not found: ${path}`);
|
|
89
|
+
});
|
|
90
|
+
server.tool("wiki_move_entry", "Move a wiki entry to a new relative path.", {
|
|
91
|
+
path: z.string().describe("Current relative path"),
|
|
92
|
+
newPath: z.string().describe("New relative path"),
|
|
93
|
+
}, async ({ path, newPath }) => {
|
|
94
|
+
const ok = engine.moveEntry(path, newPath);
|
|
95
|
+
return text(ok ? `Moved ${path} → ${newPath}` : `Failed: source not found or target exists`);
|
|
96
|
+
});
|
|
97
|
+
// ============================================================================
|
|
98
|
+
// Tools — 语义搜索
|
|
99
|
+
// ============================================================================
|
|
100
|
+
server.tool("wiki_enable_semantic", "Enable/disable semantic search. Optionally switch embedding model.", {
|
|
101
|
+
enabled: z.boolean(),
|
|
102
|
+
modelId: z.string().optional().describe("Model id (e.g. bge-base-zh-v1.5)"),
|
|
103
|
+
}, async ({ enabled, modelId }) => {
|
|
104
|
+
if (!enabled) {
|
|
105
|
+
engine.disableSemantic();
|
|
106
|
+
return text("Semantic search OFF.");
|
|
107
|
+
}
|
|
108
|
+
const result = await engine.enableSemantic(modelId);
|
|
109
|
+
return text(result.msg);
|
|
110
|
+
});
|
|
111
|
+
server.tool("wiki_generate_embeddings", "Generate embeddings for indexed files. Requires semantic search enabled.", { source: z.string().optional().describe("Source to embed. Omit for all.") }, async ({ source }) => {
|
|
112
|
+
try {
|
|
113
|
+
const result = await engine.generateEmbeddings(source);
|
|
114
|
+
return text(`Embedded: ${result.embedded} files, skipped: ${result.skipped}`);
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
return text(`Error: ${e.message}`);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
// ============================================================================
|
|
121
|
+
// Tools — 编译(LLM 语义标注)
|
|
122
|
+
// ============================================================================
|
|
123
|
+
server.tool("wiki_compile_status", "Show compilation status per file. Compiled files have LLM-enriched metadata.", {
|
|
124
|
+
source: z.string().optional(),
|
|
125
|
+
uncompiledOnly: z.boolean().optional(),
|
|
126
|
+
}, async ({ source, uncompiledOnly }) => {
|
|
127
|
+
const stats = engine.compileStatus(source);
|
|
128
|
+
return text(`Total: ${stats.total} files\nCompiled: ${stats.compiled}\nUncompiled: ${stats.uncompiled.length}\n${stats.uncompiled.length > 0 ? `\nUncompiled files:\n${stats.uncompiled.slice(0, 20).map(p => ` ${p}`).join("\n")}` : ""}`);
|
|
129
|
+
});
|
|
130
|
+
server.tool("wiki_get_compile_prompt", "Get the LLM prompt for compiling a file. Call LLM with this prompt, then use wiki_store_compiled.", { path: z.string().describe("Relative path of the file to compile") }, async ({ path }) => {
|
|
131
|
+
const prompt = engine.getCompilePrompt(path);
|
|
132
|
+
if (!prompt)
|
|
133
|
+
return text(`Not found or empty: ${path}`);
|
|
134
|
+
return text(`System:\n${prompt.system}\n\nUser:\n${prompt.user}`);
|
|
135
|
+
});
|
|
136
|
+
server.tool("wiki_store_compiled", "Store LLM compilation result for a file. Use after calling LLM with wiki_get_compile_prompt.", {
|
|
137
|
+
path: z.string().describe("Relative path"),
|
|
138
|
+
topic: z.string().describe("Core topic (one sentence)"),
|
|
139
|
+
normalizedText: z.string().describe("Normalized text"),
|
|
140
|
+
concepts: z.array(z.string()).describe("Core concepts"),
|
|
141
|
+
aliases: z.array(z.string()).describe("Synonyms / aliases"),
|
|
142
|
+
}, async ({ path, topic, normalizedText, concepts, aliases }) => {
|
|
143
|
+
engine.storeCompiled(path, { topic, normalizedText, concepts, aliases });
|
|
144
|
+
return text(`Stored compilation for ${path}`);
|
|
145
|
+
});
|
|
146
|
+
// ============================================================================
|
|
147
|
+
// Tools — LLM 自动编译
|
|
148
|
+
// ============================================================================
|
|
149
|
+
server.tool("wiki_compile", "Compile a file using LLM (DeepSeek/OpenAI JSON mode). Calls LLM and stores result automatically.", { path: z.string().describe("Relative path of the file to compile") }, async ({ path }) => {
|
|
150
|
+
const r = await engine.compileFile(path);
|
|
151
|
+
return text(r.msg);
|
|
152
|
+
});
|
|
153
|
+
server.tool("wiki_compile_all", "Batch compile all uncompiled files using LLM. Processes up to N files.", {
|
|
154
|
+
source: z.string().optional().describe("Source to compile. Omit for all."),
|
|
155
|
+
limit: z.number().int().min(1).optional().describe("Max files to process (default 10)"),
|
|
156
|
+
}, async ({ source, limit }) => {
|
|
157
|
+
const r = await engine.compileAll(source, limit ?? 10);
|
|
158
|
+
return text(`Compiled: ${r.compiled}, Failed: ${r.failed}\n${r.msgs.join("\n")}`);
|
|
159
|
+
});
|
|
160
|
+
server.tool("wiki_llm_status", "Show LLM configuration status (API base, model, key set).", {}, async () => {
|
|
161
|
+
const info = engine.llmInfo;
|
|
162
|
+
const lines = [
|
|
163
|
+
`API Base: ${info.apiBase}`,
|
|
164
|
+
`Model: ${info.model}`,
|
|
165
|
+
`API Key: ${info.hasKey ? "set" : "NOT SET (set DEEPSEEK_API_KEY or OPENAI_API_KEY)"}`,
|
|
166
|
+
];
|
|
167
|
+
return text(lines.join("\n"));
|
|
168
|
+
});
|
|
169
|
+
// ============================================================================
|
|
170
|
+
// Tools — 状态
|
|
171
|
+
// ============================================================================
|
|
172
|
+
server.tool("wiki_status", "Show wiki status: sources, index size, semantic state, model info.", {}, async () => {
|
|
173
|
+
const s = engine.status();
|
|
174
|
+
const lines = [
|
|
175
|
+
`Config: ${s.configPath}`,
|
|
176
|
+
`Sources: ${s.sources.length}`,
|
|
177
|
+
`Files: ${s.files}`,
|
|
178
|
+
`Semantic: ${s.semantic ? "ON" : "OFF"}`,
|
|
179
|
+
`Embeddings: ${s.embeddings}`,
|
|
180
|
+
`Compiled: ${s.compiled}`,
|
|
181
|
+
`Model: ${s.model} (${s.modelDim}d)`,
|
|
182
|
+
`Last scan: ${s.lastScan || "never"}`,
|
|
183
|
+
];
|
|
184
|
+
if (s.sources.length > 0) {
|
|
185
|
+
lines.push("", "Source directories:", ...s.sources.map(s => ` ${s}`));
|
|
186
|
+
}
|
|
187
|
+
return text(lines.join("\n"));
|
|
188
|
+
});
|
|
189
|
+
server.tool("wiki_list_models", "List available embedding models.", {}, async () => {
|
|
190
|
+
const { MODELS } = await import("@llangtop/pwiki-core");
|
|
191
|
+
const lines = MODELS.map(m => `${m.id} — ${m.name} (${m.dim}d, ${m.languages.join("/")}, max ${m.maxTokens} tok)`);
|
|
192
|
+
return text(`Available models:\n${lines.join("\n")}`);
|
|
193
|
+
});
|
|
194
|
+
// ============================================================================
|
|
195
|
+
// Helpers & Start
|
|
196
|
+
// ============================================================================
|
|
197
|
+
function text(msg) {
|
|
198
|
+
return { content: [{ type: "text", text: msg }] };
|
|
199
|
+
}
|
|
200
|
+
async function main() {
|
|
201
|
+
const transport = new StdioServerTransport();
|
|
202
|
+
await server.connect(transport);
|
|
203
|
+
console.error("Wiki MCP server running on stdio");
|
|
204
|
+
}
|
|
205
|
+
main().catch(err => { console.error("Fatal:", err); process.exit(1); });
|
|
206
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@llangtop/pwiki-mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Wiki knowledge base MCP server �?keyword/semantic/hybrid search for any AI agent",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"pwiki-mcp": "./dist/index.js"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"README.md"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc",
|
|
23
|
+
"prepublishOnly": "npm run build"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@llangtop/pwiki-core": "file:../core",
|
|
27
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
28
|
+
"zod": "^3.22.0"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"typescript": "^5.5.0",
|
|
32
|
+
"tsx": "^4.0.0"
|
|
33
|
+
},
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">=18"
|
|
36
|
+
},
|
|
37
|
+
"license": "MIT"
|
|
38
|
+
}
|