@knowledgine/cli 0.0.1 → 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/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +38 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +38 -6
- package/dist/commands/start.js.map +1 -1
- package/dist/lib/indexer.d.ts +7 -3
- package/dist/lib/indexer.d.ts.map +1 -1
- package/dist/lib/indexer.js +44 -7
- package/dist/lib/indexer.js.map +1 -1
- package/package.json +9 -5
package/dist/commands/init.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DrE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import { resolve } from "path";
|
|
2
2
|
import { mkdirSync } from "fs";
|
|
3
|
-
import { defineConfig, createDatabase, Migrator, KnowledgeRepository, ALL_MIGRATIONS, } from "@knowledgine/core";
|
|
3
|
+
import { defineConfig, createDatabase, Migrator, KnowledgeRepository, GraphRepository, ALL_MIGRATIONS, OnnxEmbeddingProvider, ModelManager, } from "@knowledgine/core";
|
|
4
4
|
import { indexAll } from "../lib/indexer.js";
|
|
5
5
|
export async function initCommand(options) {
|
|
6
6
|
const rootPath = resolve(options.path ?? process.cwd());
|
|
7
7
|
// Create .knowledgine directory
|
|
8
8
|
const knowledgineDir = resolve(rootPath, ".knowledgine");
|
|
9
9
|
mkdirSync(knowledgineDir, { recursive: true });
|
|
10
|
-
// Initialize database
|
|
10
|
+
// Initialize database (sqlite-vec loaded inside createDatabase)
|
|
11
11
|
const config = defineConfig({ rootPath });
|
|
12
|
-
const db = createDatabase(config.dbPath);
|
|
12
|
+
const db = createDatabase(config.dbPath, { enableVec: true });
|
|
13
13
|
new Migrator(db, ALL_MIGRATIONS).migrate();
|
|
14
14
|
const repository = new KnowledgeRepository(db);
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
const graphRepository = new GraphRepository(db);
|
|
16
|
+
// Index all markdown files (with entity extraction)
|
|
17
|
+
console.error("Indexing markdown files...");
|
|
18
|
+
const summary = await indexAll(rootPath, repository, graphRepository);
|
|
17
19
|
// Display summary (stderr to avoid MCP stdout conflicts)
|
|
18
20
|
console.error(`Indexing complete:`);
|
|
19
21
|
console.error(` Files: ${summary.processedFiles}/${summary.totalFiles}`);
|
|
@@ -25,6 +27,37 @@ export async function initCommand(options) {
|
|
|
25
27
|
console.error(` - ${err}`);
|
|
26
28
|
}
|
|
27
29
|
}
|
|
30
|
+
// Generate embeddings if not skipped
|
|
31
|
+
if (!options.skipEmbeddings) {
|
|
32
|
+
const modelManager = new ModelManager();
|
|
33
|
+
if (modelManager.isModelAvailable()) {
|
|
34
|
+
console.error("Generating embeddings...");
|
|
35
|
+
const embeddingProvider = new OnnxEmbeddingProvider(undefined, modelManager);
|
|
36
|
+
const notesWithout = repository.getNotesWithoutEmbeddings();
|
|
37
|
+
let generated = 0;
|
|
38
|
+
let failed = 0;
|
|
39
|
+
for (const note of notesWithout) {
|
|
40
|
+
try {
|
|
41
|
+
const embedding = await embeddingProvider.embed(note.content);
|
|
42
|
+
repository.saveEmbedding(note.id, embedding, config.embedding.modelName);
|
|
43
|
+
generated++;
|
|
44
|
+
if (generated % 10 === 0) {
|
|
45
|
+
console.error(` Embeddings: ${generated}/${notesWithout.length}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
failed++;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
console.error(` Embeddings: ${generated} generated, ${failed} failed`);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
console.error("Skipping embeddings: model not found. Run: node scripts/download-model.js");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
console.error("Skipping embeddings (--skip-embeddings flag set).");
|
|
60
|
+
}
|
|
28
61
|
db.close();
|
|
29
62
|
}
|
|
30
63
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,mBAAmB,EACnB,cAAc,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgIvE"}
|
package/dist/commands/start.js
CHANGED
|
@@ -1,25 +1,40 @@
|
|
|
1
1
|
import { resolve } from "path";
|
|
2
2
|
import { mkdirSync } from "fs";
|
|
3
3
|
import { watch } from "chokidar";
|
|
4
|
-
import { defineConfig, createDatabase, Migrator, KnowledgeRepository, FileProcessor, PatternExtractor, ALL_MIGRATIONS, } from "@knowledgine/core";
|
|
4
|
+
import { defineConfig, createDatabase, Migrator, KnowledgeRepository, GraphRepository, FileProcessor, PatternExtractor, ALL_MIGRATIONS, OnnxEmbeddingProvider, ModelManager, } from "@knowledgine/core";
|
|
5
5
|
import { createKnowledgineMcpServer, StdioServerTransport } from "@knowledgine/mcp-server";
|
|
6
6
|
import { indexFile } from "../lib/indexer.js";
|
|
7
7
|
export async function startCommand(options) {
|
|
8
8
|
const rootPath = resolve(options.path ?? process.cwd());
|
|
9
9
|
// Ensure .knowledgine directory exists
|
|
10
10
|
mkdirSync(resolve(rootPath, ".knowledgine"), { recursive: true });
|
|
11
|
-
// Initialize database + migrations
|
|
11
|
+
// Initialize database + migrations (sqlite-vec loaded inside createDatabase)
|
|
12
12
|
const config = defineConfig({ rootPath });
|
|
13
|
-
const db = createDatabase(config.dbPath);
|
|
13
|
+
const db = createDatabase(config.dbPath, { enableVec: true });
|
|
14
14
|
new Migrator(db, ALL_MIGRATIONS).migrate();
|
|
15
15
|
const repository = new KnowledgeRepository(db);
|
|
16
|
+
const graphRepository = new GraphRepository(db);
|
|
16
17
|
// Warn if no notes indexed (H-8)
|
|
17
18
|
const stats = repository.getStats();
|
|
18
19
|
if (stats.totalNotes === 0) {
|
|
19
20
|
console.error("Warning: No notes indexed. Run `knowledgine init` first.");
|
|
20
21
|
}
|
|
22
|
+
// Initialize embedding provider if model is available
|
|
23
|
+
let embeddingProvider;
|
|
24
|
+
const modelManager = new ModelManager();
|
|
25
|
+
if (modelManager.isModelAvailable()) {
|
|
26
|
+
embeddingProvider = new OnnxEmbeddingProvider(undefined, modelManager);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
// Warn if notes exist but no embeddings
|
|
30
|
+
const notesWithout = repository.getNotesWithoutEmbeddings();
|
|
31
|
+
if (notesWithout.length > 0) {
|
|
32
|
+
console.error(`Warning: ${notesWithout.length} notes have no embeddings. ` +
|
|
33
|
+
"Semantic search unavailable. Run: node scripts/download-model.js");
|
|
34
|
+
}
|
|
35
|
+
}
|
|
21
36
|
// Start MCP server via stdio
|
|
22
|
-
const server = createKnowledgineMcpServer(repository, rootPath);
|
|
37
|
+
const server = createKnowledgineMcpServer(repository, rootPath, embeddingProvider, graphRepository);
|
|
23
38
|
const transport = new StdioServerTransport();
|
|
24
39
|
await server.connect(transport);
|
|
25
40
|
console.error("MCP server started on stdio");
|
|
@@ -34,7 +49,14 @@ export async function startCommand(options) {
|
|
|
34
49
|
});
|
|
35
50
|
watcher.on("add", async (filePath) => {
|
|
36
51
|
try {
|
|
37
|
-
await indexFile(filePath, rootPath, fileProcessor, patternExtractor, repository);
|
|
52
|
+
const noteId = await indexFile(filePath, rootPath, fileProcessor, patternExtractor, repository, graphRepository);
|
|
53
|
+
if (embeddingProvider) {
|
|
54
|
+
const note = repository.getNoteById(noteId);
|
|
55
|
+
if (note) {
|
|
56
|
+
const embedding = await embeddingProvider.embed(note.content);
|
|
57
|
+
repository.saveEmbedding(noteId, embedding, config.embedding.modelName);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
38
60
|
console.error(`Indexed: ${filePath}`);
|
|
39
61
|
}
|
|
40
62
|
catch (error) {
|
|
@@ -43,7 +65,14 @@ export async function startCommand(options) {
|
|
|
43
65
|
});
|
|
44
66
|
watcher.on("change", async (filePath) => {
|
|
45
67
|
try {
|
|
46
|
-
await indexFile(filePath, rootPath, fileProcessor, patternExtractor, repository);
|
|
68
|
+
const noteId = await indexFile(filePath, rootPath, fileProcessor, patternExtractor, repository, graphRepository);
|
|
69
|
+
if (embeddingProvider) {
|
|
70
|
+
const note = repository.getNoteById(noteId);
|
|
71
|
+
if (note) {
|
|
72
|
+
const embedding = await embeddingProvider.embed(note.content);
|
|
73
|
+
repository.saveEmbedding(noteId, embedding, config.embedding.modelName);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
47
76
|
console.error(`Re-indexed: ${filePath}`);
|
|
48
77
|
}
|
|
49
78
|
catch (error) {
|
|
@@ -62,6 +91,9 @@ export async function startCommand(options) {
|
|
|
62
91
|
// Graceful shutdown
|
|
63
92
|
const shutdown = async () => {
|
|
64
93
|
console.error("Shutting down...");
|
|
94
|
+
if (embeddingProvider) {
|
|
95
|
+
await embeddingProvider.close();
|
|
96
|
+
}
|
|
65
97
|
await watcher.close();
|
|
66
98
|
db.close();
|
|
67
99
|
process.exit(0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,cAAc,
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/indexer.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FileProcessor, PatternExtractor, KnowledgeRepository } from "@knowledgine/core";
|
|
1
|
+
import { FileProcessor, PatternExtractor, KnowledgeRepository, GraphRepository } from "@knowledgine/core";
|
|
2
2
|
import type { ExtractedPattern } from "@knowledgine/core";
|
|
3
3
|
export interface IndexSummary {
|
|
4
4
|
totalFiles: number;
|
|
@@ -9,6 +9,10 @@ export interface IndexSummary {
|
|
|
9
9
|
}
|
|
10
10
|
export declare function discoverMarkdownFiles(rootPath: string): Promise<string[]>;
|
|
11
11
|
export declare function deduplicatePatterns(patterns: ExtractedPattern[]): ExtractedPattern[];
|
|
12
|
-
export
|
|
13
|
-
|
|
12
|
+
export interface IndexFileResult {
|
|
13
|
+
noteId: number;
|
|
14
|
+
patternCount: number;
|
|
15
|
+
}
|
|
16
|
+
export declare function indexFile(relativePath: string, rootPath: string, fileProcessor: FileProcessor, patternExtractor: PatternExtractor, repository: KnowledgeRepository, graphRepository?: GraphRepository): Promise<number>;
|
|
17
|
+
export declare function indexAll(rootPath: string, repository: KnowledgeRepository, graphRepository?: GraphRepository): Promise<IndexSummary>;
|
|
14
18
|
//# sourceMappingURL=indexer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/lib/indexer.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/lib/indexer.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EAGnB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAU/E;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAWpF;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,SAAS,CAC7B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE,mBAAmB,EAC/B,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,MAAM,CAAC,CA+DjB;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,mBAAmB,EAC/B,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,YAAY,CAAC,CA2BvB"}
|
package/dist/lib/indexer.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readdir } from "fs/promises";
|
|
2
2
|
import { join, extname } from "path";
|
|
3
|
-
import { FileProcessor, PatternExtractor, KnowledgeRepository } from "@knowledgine/core";
|
|
3
|
+
import { FileProcessor, PatternExtractor, KnowledgeRepository, EntityExtractor, RelationInferrer, GraphRepository, } from "@knowledgine/core";
|
|
4
4
|
export async function discoverMarkdownFiles(rootPath) {
|
|
5
5
|
const entries = await readdir(rootPath, { recursive: true });
|
|
6
6
|
return entries
|
|
@@ -25,7 +25,7 @@ export function deduplicatePatterns(patterns) {
|
|
|
25
25
|
}
|
|
26
26
|
return result;
|
|
27
27
|
}
|
|
28
|
-
export async function indexFile(relativePath, rootPath, fileProcessor, patternExtractor, repository) {
|
|
28
|
+
export async function indexFile(relativePath, rootPath, fileProcessor, patternExtractor, repository, graphRepository) {
|
|
29
29
|
const absolutePath = join(rootPath, relativePath);
|
|
30
30
|
const processed = await fileProcessor.processFile(absolutePath);
|
|
31
31
|
const title = fileProcessor.extractTitle(processed.content, relativePath);
|
|
@@ -40,26 +40,63 @@ export async function indexFile(relativePath, rootPath, fileProcessor, patternEx
|
|
|
40
40
|
const ticketPatterns = patternExtractor.extractTicketPatterns(processed.content);
|
|
41
41
|
const allPatterns = deduplicatePatterns([...dailyPatterns, ...ticketPatterns]);
|
|
42
42
|
repository.savePatterns(noteId, allPatterns);
|
|
43
|
-
|
|
43
|
+
// エンティティ抽出・関係推論(graphRepositoryが提供された場合)
|
|
44
|
+
if (graphRepository) {
|
|
45
|
+
try {
|
|
46
|
+
const extractor = new EntityExtractor();
|
|
47
|
+
const inferrer = new RelationInferrer();
|
|
48
|
+
const extractedEntities = extractor.extract(processed.content, processed.frontmatter);
|
|
49
|
+
const now = new Date().toISOString();
|
|
50
|
+
// エンティティを登録してnoteにリンク
|
|
51
|
+
const entityList = [];
|
|
52
|
+
for (const entity of extractedEntities) {
|
|
53
|
+
const entityId = graphRepository.upsertEntity({
|
|
54
|
+
name: entity.name,
|
|
55
|
+
entityType: entity.entityType,
|
|
56
|
+
createdAt: now,
|
|
57
|
+
});
|
|
58
|
+
graphRepository.linkEntityToNote(entityId, noteId);
|
|
59
|
+
entityList.push({ name: entity.name, entityType: entity.entityType });
|
|
60
|
+
}
|
|
61
|
+
// 関係推論と登録
|
|
62
|
+
const inferredRelations = inferrer.infer(entityList, processed.frontmatter);
|
|
63
|
+
for (const rel of inferredRelations) {
|
|
64
|
+
const fromEntity = graphRepository.getEntityByName(rel.fromName, rel.fromType);
|
|
65
|
+
const toEntity = graphRepository.getEntityByName(rel.toName, rel.toType);
|
|
66
|
+
if (fromEntity?.id && toEntity?.id) {
|
|
67
|
+
graphRepository.upsertRelation({
|
|
68
|
+
fromEntityId: fromEntity.id,
|
|
69
|
+
toEntityId: toEntity.id,
|
|
70
|
+
relationType: rel.relationType,
|
|
71
|
+
strength: rel.strength,
|
|
72
|
+
createdAt: now,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// エンティティ抽出の失敗はファイルインデックスをブロックしない
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return noteId;
|
|
44
82
|
}
|
|
45
|
-
export async function indexAll(rootPath, repository) {
|
|
83
|
+
export async function indexAll(rootPath, repository, graphRepository) {
|
|
46
84
|
const start = Date.now();
|
|
47
85
|
const fileProcessor = new FileProcessor();
|
|
48
86
|
const patternExtractor = new PatternExtractor();
|
|
49
87
|
const errors = [];
|
|
50
88
|
const files = await discoverMarkdownFiles(rootPath);
|
|
51
89
|
let processedFiles = 0;
|
|
52
|
-
let totalPatterns = 0;
|
|
53
90
|
for (const file of files) {
|
|
54
91
|
try {
|
|
55
|
-
|
|
92
|
+
await indexFile(file, rootPath, fileProcessor, patternExtractor, repository, graphRepository);
|
|
56
93
|
processedFiles++;
|
|
57
|
-
totalPatterns += patternCount;
|
|
58
94
|
}
|
|
59
95
|
catch (error) {
|
|
60
96
|
errors.push(`${file}: ${error instanceof Error ? error.message : String(error)}`);
|
|
61
97
|
}
|
|
62
98
|
}
|
|
99
|
+
const totalPatterns = repository.getStats().totalPatterns;
|
|
63
100
|
return {
|
|
64
101
|
totalFiles: files.length,
|
|
65
102
|
processedFiles,
|
package/dist/lib/indexer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../src/lib/indexer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../src/lib/indexer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knowledgine/cli",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -16,19 +16,23 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"chokidar": "^5.0.0",
|
|
18
18
|
"commander": "^14.0.3",
|
|
19
|
-
"@knowledgine/core": "0.0
|
|
20
|
-
"@knowledgine/mcp-server": "0.0
|
|
19
|
+
"@knowledgine/core": "0.1.0",
|
|
20
|
+
"@knowledgine/mcp-server": "0.1.0"
|
|
21
21
|
},
|
|
22
22
|
"files": [
|
|
23
23
|
"dist"
|
|
24
24
|
],
|
|
25
25
|
"description": "CLI for indexing markdown files and serving MCP knowledge tools",
|
|
26
|
+
"mcpName": "io.github.3062-in-zamud/knowledgine",
|
|
26
27
|
"keywords": [
|
|
27
28
|
"knowledgine",
|
|
28
|
-
"cli",
|
|
29
29
|
"mcp",
|
|
30
|
+
"model-context-protocol",
|
|
30
31
|
"knowledge",
|
|
31
|
-
"
|
|
32
|
+
"markdown",
|
|
33
|
+
"search",
|
|
34
|
+
"cli",
|
|
35
|
+
"developer-tools"
|
|
32
36
|
],
|
|
33
37
|
"license": "MIT",
|
|
34
38
|
"repository": {
|