mcmodding-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/LICENSE +21 -0
- package/README.md +324 -0
- package/dist/db-versioning.d.ts +31 -0
- package/dist/db-versioning.d.ts.map +1 -0
- package/dist/db-versioning.js +206 -0
- package/dist/db-versioning.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +202 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer/chunker.d.ts +32 -0
- package/dist/indexer/chunker.d.ts.map +1 -0
- package/dist/indexer/chunker.js +157 -0
- package/dist/indexer/chunker.js.map +1 -0
- package/dist/indexer/crawler.d.ts +28 -0
- package/dist/indexer/crawler.d.ts.map +1 -0
- package/dist/indexer/crawler.js +550 -0
- package/dist/indexer/crawler.js.map +1 -0
- package/dist/indexer/embeddings.d.ts +56 -0
- package/dist/indexer/embeddings.d.ts.map +1 -0
- package/dist/indexer/embeddings.js +200 -0
- package/dist/indexer/embeddings.js.map +1 -0
- package/dist/indexer/sitemap.d.ts +35 -0
- package/dist/indexer/sitemap.d.ts.map +1 -0
- package/dist/indexer/sitemap.js +263 -0
- package/dist/indexer/sitemap.js.map +1 -0
- package/dist/indexer/store.d.ts +237 -0
- package/dist/indexer/store.d.ts.map +1 -0
- package/dist/indexer/store.js +857 -0
- package/dist/indexer/store.js.map +1 -0
- package/dist/indexer/types.d.ts +77 -0
- package/dist/indexer/types.d.ts.map +1 -0
- package/dist/indexer/types.js +2 -0
- package/dist/indexer/types.js.map +1 -0
- package/dist/indexer/updater.d.ts +52 -0
- package/dist/indexer/updater.d.ts.map +1 -0
- package/dist/indexer/updater.js +263 -0
- package/dist/indexer/updater.js.map +1 -0
- package/dist/services/concept-service.d.ts +49 -0
- package/dist/services/concept-service.d.ts.map +1 -0
- package/dist/services/concept-service.js +554 -0
- package/dist/services/concept-service.js.map +1 -0
- package/dist/services/example-service.d.ts +52 -0
- package/dist/services/example-service.d.ts.map +1 -0
- package/dist/services/example-service.js +302 -0
- package/dist/services/example-service.js.map +1 -0
- package/dist/services/search-service.d.ts +54 -0
- package/dist/services/search-service.d.ts.map +1 -0
- package/dist/services/search-service.js +519 -0
- package/dist/services/search-service.js.map +1 -0
- package/dist/services/search-utils.d.ts +34 -0
- package/dist/services/search-utils.d.ts.map +1 -0
- package/dist/services/search-utils.js +239 -0
- package/dist/services/search-utils.js.map +1 -0
- package/dist/tools/explainConcept.d.ts +9 -0
- package/dist/tools/explainConcept.d.ts.map +1 -0
- package/dist/tools/explainConcept.js +93 -0
- package/dist/tools/explainConcept.js.map +1 -0
- package/dist/tools/getExample.d.ts +20 -0
- package/dist/tools/getExample.d.ts.map +1 -0
- package/dist/tools/getExample.js +88 -0
- package/dist/tools/getExample.js.map +1 -0
- package/dist/tools/getMinecraftVersion.d.ts +6 -0
- package/dist/tools/getMinecraftVersion.d.ts.map +1 -0
- package/dist/tools/getMinecraftVersion.js +57 -0
- package/dist/tools/getMinecraftVersion.js.map +1 -0
- package/dist/tools/searchDocs.d.ts +15 -0
- package/dist/tools/searchDocs.d.ts.map +1 -0
- package/dist/tools/searchDocs.js +144 -0
- package/dist/tools/searchDocs.js.map +1 -0
- package/package.json +111 -0
- package/scripts/postinstall.js +859 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { SearchService } from '../services/search-service.js';
|
|
2
|
+
let searchServiceInstance = null;
|
|
3
|
+
function getSearchService() {
|
|
4
|
+
if (!searchServiceInstance) {
|
|
5
|
+
searchServiceInstance = new SearchService();
|
|
6
|
+
}
|
|
7
|
+
return searchServiceInstance;
|
|
8
|
+
}
|
|
9
|
+
export async function handleSearchDocs(params) {
|
|
10
|
+
const { query, category, loader, minecraftVersion, includeCode = true, limit = 10 } = params;
|
|
11
|
+
if (!query || typeof query !== 'string' || query.trim().length === 0) {
|
|
12
|
+
return {
|
|
13
|
+
content: [
|
|
14
|
+
{
|
|
15
|
+
type: 'text',
|
|
16
|
+
text: 'Error: Query parameter is required and cannot be empty.',
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
isError: true,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const trimmedQuery = query.trim();
|
|
23
|
+
const effectiveLimit = Math.min(Math.max(1, limit), 20);
|
|
24
|
+
try {
|
|
25
|
+
const searchService = getSearchService();
|
|
26
|
+
const searchOptions = {
|
|
27
|
+
query: trimmedQuery,
|
|
28
|
+
limit: effectiveLimit,
|
|
29
|
+
includeCode,
|
|
30
|
+
};
|
|
31
|
+
if (category && category !== 'all') {
|
|
32
|
+
searchOptions.category = category;
|
|
33
|
+
}
|
|
34
|
+
if (loader) {
|
|
35
|
+
searchOptions.loader = loader;
|
|
36
|
+
}
|
|
37
|
+
if (minecraftVersion) {
|
|
38
|
+
if (minecraftVersion.toLowerCase() === 'latest') {
|
|
39
|
+
const stats = searchService.getStats();
|
|
40
|
+
const versions = stats.versions.sort((a, b) => {
|
|
41
|
+
const partsA = a.split('.').map(Number);
|
|
42
|
+
const partsB = b.split('.').map(Number);
|
|
43
|
+
for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) {
|
|
44
|
+
const numA = partsA[i] || 0;
|
|
45
|
+
const numB = partsB[i] || 0;
|
|
46
|
+
if (numA !== numB)
|
|
47
|
+
return numB - numA;
|
|
48
|
+
}
|
|
49
|
+
return 0;
|
|
50
|
+
});
|
|
51
|
+
if (versions[0]) {
|
|
52
|
+
searchOptions.minecraftVersion = versions[0];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
searchOptions.minecraftVersion = minecraftVersion;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const results = await searchService.search(searchOptions);
|
|
60
|
+
const formattedOutput = searchService.formatForAI(results, trimmedQuery);
|
|
61
|
+
const metadata = buildMetadata(results, searchOptions, searchService);
|
|
62
|
+
return {
|
|
63
|
+
content: [
|
|
64
|
+
{
|
|
65
|
+
type: 'text',
|
|
66
|
+
text: formattedOutput + '\n\n' + metadata,
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
73
|
+
console.error(`[searchDocs] Error: ${errorMessage}`);
|
|
74
|
+
return {
|
|
75
|
+
content: [
|
|
76
|
+
{
|
|
77
|
+
type: 'text',
|
|
78
|
+
text: `Error searching documentation: ${errorMessage}\n\nPlease ensure the documentation database has been indexed. Run 'npm run index' to build the database.`,
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
isError: true,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function buildMetadata(results, options, service) {
|
|
86
|
+
const stats = service.getStats();
|
|
87
|
+
let metadata = '---\n**Search Metadata:**\n';
|
|
88
|
+
metadata += `- Query: "${options.query}"\n`;
|
|
89
|
+
metadata += `- Results found: ${results.length}\n`;
|
|
90
|
+
if (options.category) {
|
|
91
|
+
metadata += `- Category filter: ${options.category}\n`;
|
|
92
|
+
}
|
|
93
|
+
if (options.loader) {
|
|
94
|
+
metadata += `- Loader filter: ${options.loader}\n`;
|
|
95
|
+
}
|
|
96
|
+
if (options.minecraftVersion) {
|
|
97
|
+
metadata += `- Minecraft version filter: ${options.minecraftVersion}\n`;
|
|
98
|
+
}
|
|
99
|
+
metadata += `\n**Database Stats:**\n`;
|
|
100
|
+
metadata += `- Total documents indexed: ${stats.totalDocuments}\n`;
|
|
101
|
+
metadata += `- Total sections: ${stats.totalSections}\n`;
|
|
102
|
+
metadata += `- Available loaders: ${stats.loaders.join(', ')}\n`;
|
|
103
|
+
metadata += `- Available versions: ${stats.versions.slice(0, 5).join(', ')}${stats.versions.length > 5 ? '...' : ''}\n`;
|
|
104
|
+
if (results.length === 0) {
|
|
105
|
+
metadata += '\n**Suggestions:**\n';
|
|
106
|
+
metadata += '- Try broader search terms\n';
|
|
107
|
+
metadata += '- Remove category/loader filters\n';
|
|
108
|
+
metadata += '- Use synonyms (e.g., "register" instead of "create")\n';
|
|
109
|
+
}
|
|
110
|
+
else if (results.length < 3) {
|
|
111
|
+
metadata += '\n**Note:** Few results found. Consider:\n';
|
|
112
|
+
metadata += '- Using `get_example` for specific code examples\n';
|
|
113
|
+
metadata += '- Trying related terms or concepts\n';
|
|
114
|
+
}
|
|
115
|
+
return metadata;
|
|
116
|
+
}
|
|
117
|
+
export async function searchDocs(params) {
|
|
118
|
+
const searchService = getSearchService();
|
|
119
|
+
return await searchService.search({
|
|
120
|
+
query: params.query,
|
|
121
|
+
category: params.category,
|
|
122
|
+
minecraftVersion: params.minecraftVersion,
|
|
123
|
+
limit: 10,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
export function getAvailableCategories() {
|
|
127
|
+
return [
|
|
128
|
+
'getting-started',
|
|
129
|
+
'items',
|
|
130
|
+
'blocks',
|
|
131
|
+
'entities',
|
|
132
|
+
'rendering',
|
|
133
|
+
'networking',
|
|
134
|
+
'data-generation',
|
|
135
|
+
'commands',
|
|
136
|
+
'sounds',
|
|
137
|
+
'events',
|
|
138
|
+
'mixins',
|
|
139
|
+
];
|
|
140
|
+
}
|
|
141
|
+
export function getAvailableLoaders() {
|
|
142
|
+
return ['fabric', 'neoforge', 'shared'];
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=searchDocs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchDocs.js","sourceRoot":"","sources":["../../src/tools/searchDocs.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mcmodding-mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP server providing AI assistants with up-to-date Minecraft modding documentation for Fabric and NeoForge",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"mcmodding-mcp": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"scripts/postinstall.js"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"build:prod": "npm run index-docs:prod && npm run build",
|
|
17
|
+
"dev": "tsx watch src/index.ts",
|
|
18
|
+
"start": "node dist/index.js",
|
|
19
|
+
"test": "vitest",
|
|
20
|
+
"test:coverage": "vitest --coverage",
|
|
21
|
+
"test:ui": "vitest --ui",
|
|
22
|
+
"lint": "eslint src --ext .ts",
|
|
23
|
+
"lint:fix": "eslint src --ext .ts --fix",
|
|
24
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
25
|
+
"format:check": "prettier --check \"src/**/*.ts\"",
|
|
26
|
+
"typecheck": "tsc --noEmit",
|
|
27
|
+
"prepare": "husky",
|
|
28
|
+
"index-docs": "npx tsx --expose-gc --max-old-space-size=6144 scripts/index-docs.ts -- --sitemap --embeddings",
|
|
29
|
+
"index-docs:prod": "npx tsx --expose-gc --max-old-space-size=6144 scripts/index-docs.ts -- --sitemap --embeddings --force",
|
|
30
|
+
"index-docs:no-embeddings": "npx tsx --expose-gc --max-old-space-size=4096 scripts/index-docs.ts -- --sitemap",
|
|
31
|
+
"clean": "rimraf dist",
|
|
32
|
+
"clean:all": "rimraf dist data",
|
|
33
|
+
"prebuild": "npm run clean",
|
|
34
|
+
"prebuild:prod": "npm run clean:all",
|
|
35
|
+
"postinstall": "node scripts/postinstall.js",
|
|
36
|
+
"prepublishOnly": "",
|
|
37
|
+
"release:auto": "semantic-release",
|
|
38
|
+
"release": "npm run build:prod && npm version",
|
|
39
|
+
"validate": "npm run typecheck && npm run lint && npm run test",
|
|
40
|
+
"db:manifest": "npx tsx scripts/generate-db-manifest.ts",
|
|
41
|
+
"db:install-optional": "npx tsx src/index.ts install"
|
|
42
|
+
},
|
|
43
|
+
"keywords": [
|
|
44
|
+
"minecraft",
|
|
45
|
+
"modding",
|
|
46
|
+
"fabric",
|
|
47
|
+
"neoforge",
|
|
48
|
+
"mcp",
|
|
49
|
+
"model-context-protocol",
|
|
50
|
+
"ai",
|
|
51
|
+
"documentation"
|
|
52
|
+
],
|
|
53
|
+
"author": "OGMatrix",
|
|
54
|
+
"license": "MIT",
|
|
55
|
+
"engines": {
|
|
56
|
+
"node": ">=20.0.0"
|
|
57
|
+
},
|
|
58
|
+
"dependencies": {
|
|
59
|
+
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
60
|
+
"@xenova/transformers": "^2.17.2",
|
|
61
|
+
"better-sqlite3": "^11.7.0",
|
|
62
|
+
"cheerio": "^1.0.0",
|
|
63
|
+
"jsonrepair": "^3.13.1",
|
|
64
|
+
"node-fetch": "^3.3.2"
|
|
65
|
+
},
|
|
66
|
+
"devDependencies": {
|
|
67
|
+
"@commitlint/cli": "^19.6.0",
|
|
68
|
+
"@commitlint/config-conventional": "^19.6.0",
|
|
69
|
+
"@eslint/js": "^9.15.0",
|
|
70
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
71
|
+
"@semantic-release/git": "^10.0.1",
|
|
72
|
+
"@types/better-sqlite3": "^7.6.12",
|
|
73
|
+
"@types/jquery": "^3.5.33",
|
|
74
|
+
"@types/node": "^22.10.1",
|
|
75
|
+
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
|
76
|
+
"@typescript-eslint/parser": "^8.15.0",
|
|
77
|
+
"@vitest/coverage-v8": "^4.0.15",
|
|
78
|
+
"@vitest/ui": "^4.0.15",
|
|
79
|
+
"eslint": "^9.15.0",
|
|
80
|
+
"eslint-config-prettier": "^9.1.0",
|
|
81
|
+
"eslint-plugin-prettier": "^5.2.1",
|
|
82
|
+
"husky": "^9.1.7",
|
|
83
|
+
"lint-staged": "^15.2.11",
|
|
84
|
+
"prettier": "^3.3.3",
|
|
85
|
+
"rimraf": "^6.0.1",
|
|
86
|
+
"semantic-release": "^21.1.2",
|
|
87
|
+
"tsx": "^4.19.2",
|
|
88
|
+
"typescript": "^5.7.2",
|
|
89
|
+
"typescript-eslint": "^8.15.0",
|
|
90
|
+
"vitest": "^4.0.15"
|
|
91
|
+
},
|
|
92
|
+
"lint-staged": {
|
|
93
|
+
"*.ts": [
|
|
94
|
+
"eslint --fix",
|
|
95
|
+
"prettier --write"
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
"commitlint": {
|
|
99
|
+
"extends": [
|
|
100
|
+
"@commitlint/config-conventional"
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
"repository": {
|
|
104
|
+
"type": "git",
|
|
105
|
+
"url": "git+https://github.com/OGMatrix/mcmodding-mcp.git"
|
|
106
|
+
},
|
|
107
|
+
"bugs": {
|
|
108
|
+
"url": "https://github.com/OGMatrix/mcmodding-mcp/issues"
|
|
109
|
+
},
|
|
110
|
+
"homepage": "https://github.com/OGMatrix/mcmodding-mcp#readme"
|
|
111
|
+
}
|