mcmodding-mcp 0.1.0 → 0.2.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/dist/index.js CHANGED
@@ -7,128 +7,139 @@ import { handleGetMinecraftVersion } from './tools/getMinecraftVersion.js';
7
7
  import { handleSearchDocs } from './tools/searchDocs.js';
8
8
  import { handleExplainConcept } from './tools/explainConcept.js';
9
9
  import { DbVersioning } from './db-versioning.js';
10
+ import { ModExamplesService } from './services/mod-examples-service.js';
11
+ import { MOD_EXAMPLES_TOOLS, handleSearchModExamples, handleGetModExample, handleListCanonicalMods, handleListModCategories, handleGetModPatterns, } from './tools/modExamples.js';
12
+ if (process.argv.includes('install')) {
13
+ const { runInstaller } = await import('./cli/install.js');
14
+ await runInstaller();
15
+ process.exit(0);
16
+ }
10
17
  const server = new Server({
11
18
  name: 'mcmodding-mcp',
12
- version: '0.1.0',
19
+ version: '0.1.1',
13
20
  }, {
14
21
  capabilities: {
15
22
  tools: {},
16
23
  resources: {},
17
24
  },
18
25
  });
19
- server.setRequestHandler(ListToolsRequestSchema, () => {
20
- return {
21
- tools: [
22
- {
23
- name: 'search_fabric_docs',
24
- description: 'Search Fabric modding documentation for guides and API information. Use this when you need to find documentation about Fabric modding features, APIs, or tutorials.',
25
- inputSchema: {
26
- type: 'object',
27
- properties: {
28
- query: {
29
- type: 'string',
30
- description: "Search query (e.g., 'how to register items', 'mixin tutorial', 'networking'). Be specific for best results. Especially useful for finding guides and API references.",
31
- },
32
- category: {
33
- type: 'string',
34
- enum: [
35
- 'getting-started',
36
- 'items',
37
- 'blocks',
38
- 'entities',
39
- 'rendering',
40
- 'networking',
41
- 'data-generation',
42
- 'all',
43
- ],
44
- description: 'Documentation category to search within (default: all)',
45
- default: 'all',
46
- },
47
- },
48
- required: ['query'],
26
+ const BASE_TOOLS = [
27
+ {
28
+ name: 'search_fabric_docs',
29
+ description: 'Search Fabric modding documentation for guides and API information. Use this when you need to find documentation about Fabric modding features, APIs, or tutorials.',
30
+ inputSchema: {
31
+ type: 'object',
32
+ properties: {
33
+ query: {
34
+ type: 'string',
35
+ description: "Search query (e.g., 'how to register items', 'mixin tutorial', 'networking'). Be specific for best results. Especially useful for finding guides and API references.",
36
+ },
37
+ category: {
38
+ type: 'string',
39
+ enum: [
40
+ 'getting-started',
41
+ 'items',
42
+ 'blocks',
43
+ 'entities',
44
+ 'rendering',
45
+ 'networking',
46
+ 'data-generation',
47
+ 'all',
48
+ ],
49
+ description: 'Documentation category to search within (default: all)',
50
+ default: 'all',
49
51
  },
50
52
  },
51
- {
52
- name: 'get_example',
53
- description: 'Get code examples for Minecraft modding topics. Returns complete, working code snippets with full context including explanations, source documentation, and metadata. Use this when you need concrete code examples for implementing features.',
54
- inputSchema: {
55
- type: 'object',
56
- properties: {
57
- topic: {
58
- type: 'string',
59
- description: "Topic or pattern to get examples for (e.g., 'register item', 'block entity', 'mixin', 'networking', 'custom armor'). Can be free-form text.",
60
- },
61
- language: {
62
- type: 'string',
63
- description: "Programming language (e.g., 'java', 'json', 'groovy')",
64
- default: 'java',
65
- },
66
- loader: {
67
- type: 'string',
68
- enum: ['fabric', 'neoforge', 'shared'],
69
- description: 'Mod loader to filter by',
70
- },
71
- minecraft_version: {
72
- type: 'string',
73
- description: "Target Minecraft version (e.g., '1.21.4', '1.21.10'). Latest: use 'latest'",
74
- },
75
- category: {
76
- type: 'string',
77
- enum: [
78
- 'getting-started',
79
- 'items',
80
- 'blocks',
81
- 'entities',
82
- 'rendering',
83
- 'networking',
84
- 'data-generation',
85
- 'commands',
86
- 'sounds',
87
- ],
88
- description: 'Documentation category to filter by',
89
- },
90
- limit: {
91
- type: 'number',
92
- description: 'Maximum number of examples to return (1-10)',
93
- default: 5,
94
- minimum: 1,
95
- maximum: 10,
96
- },
97
- },
98
- required: ['topic'],
53
+ required: ['query'],
54
+ },
55
+ },
56
+ {
57
+ name: 'get_example',
58
+ description: 'Get code examples for Minecraft modding topics. Returns complete, working code snippets with full context including explanations, source documentation, and metadata. Use this when you need concrete code examples for implementing features.',
59
+ inputSchema: {
60
+ type: 'object',
61
+ properties: {
62
+ topic: {
63
+ type: 'string',
64
+ description: "Topic or pattern to get examples for (e.g., 'register item', 'block entity', 'mixin', 'networking', 'custom armor'). Can be free-form text.",
65
+ },
66
+ language: {
67
+ type: 'string',
68
+ description: "Programming language (e.g., 'java', 'json', 'groovy')",
69
+ default: 'java',
70
+ },
71
+ loader: {
72
+ type: 'string',
73
+ enum: ['fabric', 'neoforge', 'shared'],
74
+ description: 'Mod loader to filter by',
75
+ },
76
+ minecraft_version: {
77
+ type: 'string',
78
+ description: "Target Minecraft version (e.g., '1.21.4', '1.21.10'). Latest: use 'latest'",
79
+ },
80
+ category: {
81
+ type: 'string',
82
+ enum: [
83
+ 'getting-started',
84
+ 'items',
85
+ 'blocks',
86
+ 'entities',
87
+ 'rendering',
88
+ 'networking',
89
+ 'data-generation',
90
+ 'commands',
91
+ 'sounds',
92
+ ],
93
+ description: 'Documentation category to filter by',
94
+ },
95
+ limit: {
96
+ type: 'number',
97
+ description: 'Maximum number of examples to return (1-10)',
98
+ default: 5,
99
+ minimum: 1,
100
+ maximum: 10,
99
101
  },
100
102
  },
101
- {
102
- name: 'explain_fabric_concept',
103
- description: 'Get detailed explanation of a Fabric or Minecraft modding concept. Use this to understand fundamental concepts, terminology, or architectural patterns.',
104
- inputSchema: {
105
- type: 'object',
106
- properties: {
107
- concept: {
108
- type: 'string',
109
- description: "Concept to explain (e.g., 'mixins', 'registries', 'sided logic', 'fabric.mod.json', 'events')",
110
- },
111
- },
112
- required: ['concept'],
103
+ required: ['topic'],
104
+ },
105
+ },
106
+ {
107
+ name: 'explain_fabric_concept',
108
+ description: 'Get detailed explanation of a Fabric or Minecraft modding concept. Use this to understand fundamental concepts, terminology, or architectural patterns.',
109
+ inputSchema: {
110
+ type: 'object',
111
+ properties: {
112
+ concept: {
113
+ type: 'string',
114
+ description: "Concept to explain (e.g., 'mixins', 'registries', 'sided logic', 'fabric.mod.json', 'events')",
113
115
  },
114
116
  },
115
- {
116
- name: 'get_minecraft_version',
117
- description: 'Get Minecraft version information from the indexed documentation. Returns either the latest version or all available versions.',
118
- inputSchema: {
119
- type: 'object',
120
- properties: {
121
- type: {
122
- type: 'string',
123
- enum: ['latest', 'all'],
124
- description: "Type of version info: 'latest' for newest version, 'all' for complete list",
125
- default: 'latest',
126
- },
127
- },
117
+ required: ['concept'],
118
+ },
119
+ },
120
+ {
121
+ name: 'get_minecraft_version',
122
+ description: 'Get Minecraft version information from the indexed documentation. Returns either the latest version or all available versions.',
123
+ inputSchema: {
124
+ type: 'object',
125
+ properties: {
126
+ type: {
127
+ type: 'string',
128
+ enum: ['latest', 'all'],
129
+ description: "Type of version info: 'latest' for newest version, 'all' for complete list",
130
+ default: 'latest',
128
131
  },
129
132
  },
130
- ],
131
- };
133
+ },
134
+ },
135
+ ];
136
+ server.setRequestHandler(ListToolsRequestSchema, () => {
137
+ const tools = [...BASE_TOOLS];
138
+ if (ModExamplesService.isAvailable()) {
139
+ tools.push(...MOD_EXAMPLES_TOOLS);
140
+ console.error('[MCP] Mod examples database available - additional tools registered');
141
+ }
142
+ return { tools };
132
143
  });
133
144
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
134
145
  const { name, arguments: args } = request.params;
@@ -163,6 +174,35 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
163
174
  type: args?.type || 'latest',
164
175
  });
165
176
  }
177
+ case 'search_mod_examples': {
178
+ return handleSearchModExamples({
179
+ query: args?.query,
180
+ mod: args?.mod,
181
+ category: args?.category,
182
+ pattern_type: args?.pattern_type,
183
+ complexity: args?.complexity,
184
+ min_quality: args?.min_quality,
185
+ featured_only: args?.featured_only,
186
+ limit: args?.limit,
187
+ });
188
+ }
189
+ case 'get_mod_example': {
190
+ return handleGetModExample({
191
+ id: args?.id || 0,
192
+ include_related: args?.include_related,
193
+ });
194
+ }
195
+ case 'list_canonical_mods': {
196
+ return handleListCanonicalMods({
197
+ include_stats: args?.include_stats,
198
+ });
199
+ }
200
+ case 'list_mod_categories': {
201
+ return handleListModCategories();
202
+ }
203
+ case 'get_mod_patterns': {
204
+ return handleGetModPatterns();
205
+ }
166
206
  default:
167
207
  throw new Error(`Unknown tool: ${name}`);
168
208
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ export interface ModInfo {
2
+ id: number;
3
+ name: string;
4
+ repo: string;
5
+ loader: string;
6
+ description: string;
7
+ readmeSummary: string;
8
+ architectureNotes: string;
9
+ starCount: number;
10
+ minecraftVersions: string[];
11
+ exampleCount: number;
12
+ }
13
+ export interface ModExample {
14
+ id: number;
15
+ modName: string;
16
+ modRepo: string;
17
+ filePath: string;
18
+ fileUrl: string;
19
+ startLine: number;
20
+ endLine: number;
21
+ title: string;
22
+ code: string;
23
+ language: string;
24
+ caption: string;
25
+ explanation: string;
26
+ patternType: string;
27
+ complexity: 'beginner' | 'intermediate' | 'advanced' | 'expert';
28
+ category: string;
29
+ categoryName: string;
30
+ bestPractices: string[];
31
+ potentialPitfalls: string[];
32
+ useCases: string[];
33
+ keywords: string[];
34
+ minecraftConcepts: string[];
35
+ qualityScore: number;
36
+ isFeatured: boolean;
37
+ tags: string[];
38
+ imports: Array<{
39
+ path: string;
40
+ type: string;
41
+ isCritical: boolean;
42
+ }>;
43
+ apiReferences: Array<{
44
+ className: string;
45
+ methodName?: string;
46
+ apiType: string;
47
+ }>;
48
+ }
49
+ export interface ExampleRelation {
50
+ sourceId: number;
51
+ targetId: number;
52
+ relationType: 'uses' | 'extends' | 'similar_to' | 'alternative_to' | 'requires' | 'complements';
53
+ description: string;
54
+ strength: number;
55
+ targetTitle: string;
56
+ targetCaption: string;
57
+ }
58
+ export interface ModExampleSearchOptions {
59
+ query?: string;
60
+ modName?: string;
61
+ category?: string;
62
+ patternType?: string;
63
+ complexity?: string;
64
+ minQualityScore?: number;
65
+ featured?: boolean;
66
+ tags?: string[];
67
+ limit?: number;
68
+ }
69
+ export interface CategoryInfo {
70
+ slug: string;
71
+ name: string;
72
+ description: string;
73
+ icon: string;
74
+ exampleCount: number;
75
+ }
76
+ export declare class ModExamplesService {
77
+ private db;
78
+ private static dbPath;
79
+ constructor(dbPath?: string);
80
+ static isAvailable(): boolean;
81
+ getStats(): {
82
+ mods: number;
83
+ examples: number;
84
+ relations: number;
85
+ categories: number;
86
+ featuredExamples: number;
87
+ avgQualityScore: number;
88
+ };
89
+ listMods(): ModInfo[];
90
+ getMod(name: string): ModInfo | null;
91
+ listCategories(): CategoryInfo[];
92
+ searchExamples(options: ModExampleSearchOptions): ModExample[];
93
+ getExample(id: number): ModExample | null;
94
+ getRelatedExamples(exampleId: number): ExampleRelation[];
95
+ getFeaturedExamples(limit?: number): ModExample[];
96
+ getExamplesByPattern(patternType: string, limit?: number): ModExample[];
97
+ getPatternTypes(): Array<{
98
+ type: string;
99
+ count: number;
100
+ }>;
101
+ private enrichExample;
102
+ formatExampleForAI(example: ModExample): string;
103
+ formatExamplesForAI(examples: ModExample[]): string;
104
+ close(): void;
105
+ }
106
+ //# sourceMappingURL=mod-examples-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod-examples-service.d.ts","sourceRoot":"","sources":["../../src/services/mod-examples-service.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,QAAQ,CAAC;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACpE,aAAa,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnF;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,gBAAgB,GAAG,UAAU,GAAG,aAAa,CAAC;IAChG,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAMD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAuD;gBAEhE,MAAM,CAAC,EAAE,MAAM;IAS3B,MAAM,CAAC,WAAW,IAAI,OAAO;IAO7B,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;KACzB;IA+BD,QAAQ,IAAI,OAAO,EAAE;IAgCrB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAkCpC,cAAc,IAAI,YAAY,EAAE;IAuBhC,cAAc,CAAC,OAAO,EAAE,uBAAuB,GAAG,UAAU,EAAE;IAgI9D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IA8DzC,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,EAAE;IAwBxD,mBAAmB,CAAC,KAAK,GAAE,MAAW,GAAG,UAAU,EAAE;IAWrD,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,UAAU,EAAE;IAW3E,eAAe,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAiBzD,OAAO,CAAC,aAAa;IAyErB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM;IAsE/C,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM;IAmBnD,KAAK,IAAI,IAAI;CAGd"}