smart-coding-mcp 1.2.0 → 1.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/index.js +6 -1
- package/lib/config.js +38 -7
- package/lib/utils.js +50 -4
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -4,6 +4,11 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
4
4
|
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
5
5
|
import { pipeline } from "@xenova/transformers";
|
|
6
6
|
import fs from "fs/promises";
|
|
7
|
+
import { createRequire } from "module";
|
|
8
|
+
|
|
9
|
+
// Import package.json for version
|
|
10
|
+
const require = createRequire(import.meta.url);
|
|
11
|
+
const packageJson = require("./package.json");
|
|
7
12
|
|
|
8
13
|
import { loadConfig } from "./lib/config.js";
|
|
9
14
|
import { EmbeddingsCache } from "./lib/cache.js";
|
|
@@ -110,7 +115,7 @@ async function initialize() {
|
|
|
110
115
|
const server = new Server(
|
|
111
116
|
{
|
|
112
117
|
name: "smart-coding-mcp",
|
|
113
|
-
version:
|
|
118
|
+
version: packageJson.version
|
|
114
119
|
},
|
|
115
120
|
{
|
|
116
121
|
capabilities: {
|
package/lib/config.js
CHANGED
|
@@ -136,24 +136,55 @@ export async function loadConfig(workspaceDir = null) {
|
|
|
136
136
|
console.error(`[Config] Error: ${error.message}`);
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
// Apply environment variable overrides (prefix: SMART_CODING_)
|
|
139
|
+
// Apply environment variable overrides (prefix: SMART_CODING_) with validation
|
|
140
140
|
if (process.env.SMART_CODING_VERBOSE !== undefined) {
|
|
141
|
-
|
|
141
|
+
const value = process.env.SMART_CODING_VERBOSE;
|
|
142
|
+
if (value === 'true' || value === 'false') {
|
|
143
|
+
config.verbose = value === 'true';
|
|
144
|
+
}
|
|
142
145
|
}
|
|
146
|
+
|
|
143
147
|
if (process.env.SMART_CODING_BATCH_SIZE !== undefined) {
|
|
144
|
-
|
|
148
|
+
const value = parseInt(process.env.SMART_CODING_BATCH_SIZE, 10);
|
|
149
|
+
if (!isNaN(value) && value > 0 && value <= 1000) {
|
|
150
|
+
config.batchSize = value;
|
|
151
|
+
} else {
|
|
152
|
+
console.error(`[Config] Invalid SMART_CODING_BATCH_SIZE: ${process.env.SMART_CODING_BATCH_SIZE}, using default`);
|
|
153
|
+
}
|
|
145
154
|
}
|
|
155
|
+
|
|
146
156
|
if (process.env.SMART_CODING_MAX_FILE_SIZE !== undefined) {
|
|
147
|
-
|
|
157
|
+
const value = parseInt(process.env.SMART_CODING_MAX_FILE_SIZE, 10);
|
|
158
|
+
if (!isNaN(value) && value > 0) {
|
|
159
|
+
config.maxFileSize = value;
|
|
160
|
+
} else {
|
|
161
|
+
console.error(`[Config] Invalid SMART_CODING_MAX_FILE_SIZE: ${process.env.SMART_CODING_MAX_FILE_SIZE}, using default`);
|
|
162
|
+
}
|
|
148
163
|
}
|
|
164
|
+
|
|
149
165
|
if (process.env.SMART_CODING_CHUNK_SIZE !== undefined) {
|
|
150
|
-
|
|
166
|
+
const value = parseInt(process.env.SMART_CODING_CHUNK_SIZE, 10);
|
|
167
|
+
if (!isNaN(value) && value > 0 && value <= 100) {
|
|
168
|
+
config.chunkSize = value;
|
|
169
|
+
} else {
|
|
170
|
+
console.error(`[Config] Invalid SMART_CODING_CHUNK_SIZE: ${process.env.SMART_CODING_CHUNK_SIZE}, using default`);
|
|
171
|
+
}
|
|
151
172
|
}
|
|
173
|
+
|
|
152
174
|
if (process.env.SMART_CODING_MAX_RESULTS !== undefined) {
|
|
153
|
-
|
|
175
|
+
const value = parseInt(process.env.SMART_CODING_MAX_RESULTS, 10);
|
|
176
|
+
if (!isNaN(value) && value > 0 && value <= 100) {
|
|
177
|
+
config.maxResults = value;
|
|
178
|
+
} else {
|
|
179
|
+
console.error(`[Config] Invalid SMART_CODING_MAX_RESULTS: ${process.env.SMART_CODING_MAX_RESULTS}, using default`);
|
|
180
|
+
}
|
|
154
181
|
}
|
|
182
|
+
|
|
155
183
|
if (process.env.SMART_CODING_SMART_INDEXING !== undefined) {
|
|
156
|
-
|
|
184
|
+
const value = process.env.SMART_CODING_SMART_INDEXING;
|
|
185
|
+
if (value === 'true' || value === 'false') {
|
|
186
|
+
config.smartIndexing = value === 'true';
|
|
187
|
+
}
|
|
157
188
|
}
|
|
158
189
|
|
|
159
190
|
return config;
|
package/lib/utils.js
CHANGED
|
@@ -31,14 +31,60 @@ export function smartChunk(content, file, config) {
|
|
|
31
31
|
|
|
32
32
|
// Language-specific patterns for function/class detection
|
|
33
33
|
const patterns = {
|
|
34
|
+
// JavaScript/TypeScript
|
|
34
35
|
js: /^(export\s+)?(async\s+)?(function|class|const|let|var)\s+\w+/,
|
|
36
|
+
jsx: /^(export\s+)?(async\s+)?(function|class|const|let|var)\s+\w+/,
|
|
35
37
|
ts: /^(export\s+)?(async\s+)?(function|class|const|let|var|interface|type)\s+\w+/,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
tsx: /^(export\s+)?(async\s+)?(function|class|const|let|var|interface|type)\s+\w+/,
|
|
39
|
+
mjs: /^(export\s+)?(async\s+)?(function|class|const|let|var)\s+\w+/,
|
|
40
|
+
cjs: /^(export\s+)?(async\s+)?(function|class|const|let|var)\s+\w+/,
|
|
41
|
+
|
|
42
|
+
// Python
|
|
43
|
+
py: /^(class|def|async\s+def)\s+\w+/,
|
|
44
|
+
pyw: /^(class|def|async\s+def)\s+\w+/,
|
|
45
|
+
|
|
46
|
+
// Java/Kotlin/Scala
|
|
47
|
+
java: /^(public|private|protected)?\s*(static\s+)?(class|interface|enum|void|int|String|boolean)\s+\w+/,
|
|
48
|
+
kt: /^(class|interface|object|fun|val|var)\s+\w+/,
|
|
49
|
+
kts: /^(class|interface|object|fun|val|var)\s+\w+/,
|
|
50
|
+
scala: /^(class|object|trait|def|val|var)\s+\w+/,
|
|
51
|
+
|
|
52
|
+
// C/C++
|
|
53
|
+
c: /^(struct|enum|union|void|int|char|float|double)\s+\w+/,
|
|
54
|
+
cpp: /^(class|struct|namespace|template|void|int|bool)\s+\w+/,
|
|
55
|
+
cc: /^(class|struct|namespace|template|void|int|bool)\s+\w+/,
|
|
56
|
+
cxx: /^(class|struct|namespace|template|void|int|bool)\s+\w+/,
|
|
57
|
+
h: /^(class|struct|namespace|template|void|int|bool)\s+\w+/,
|
|
58
|
+
hpp: /^(class|struct|namespace|template|void|int|bool)\s+\w+/,
|
|
59
|
+
|
|
60
|
+
// C#
|
|
61
|
+
cs: /^(public|private|protected)?\s*(static\s+)?(class|interface|struct|enum|void|int|string|bool)\s+\w+/,
|
|
62
|
+
|
|
63
|
+
// Go
|
|
64
|
+
go: /^(func|type|const|var)\s+\w+/,
|
|
65
|
+
|
|
66
|
+
// Rust
|
|
67
|
+
rs: /^(pub\s+)?(fn|struct|enum|trait|impl|const|static)\s+\w+/,
|
|
68
|
+
|
|
69
|
+
// PHP
|
|
70
|
+
php: /^(class|interface|trait|function|const)\s+\w+/,
|
|
71
|
+
|
|
72
|
+
// Ruby
|
|
73
|
+
rb: /^(class|module|def)\s+\w+/,
|
|
74
|
+
rake: /^(class|module|def|task)\s+\w+/,
|
|
75
|
+
|
|
76
|
+
// Swift
|
|
77
|
+
swift: /^(class|struct|enum|protocol|func|var|let)\s+\w+/,
|
|
78
|
+
|
|
79
|
+
// R
|
|
80
|
+
r: /^(\w+)\s*<-\s*function/,
|
|
81
|
+
R: /^(\w+)\s*<-\s*function/,
|
|
82
|
+
|
|
83
|
+
// Lua
|
|
84
|
+
lua: /^(function|local\s+function)\s+\w+/,
|
|
40
85
|
};
|
|
41
86
|
|
|
87
|
+
|
|
42
88
|
const langPattern = patterns[ext.slice(1)] || patterns.js;
|
|
43
89
|
let currentChunk = [];
|
|
44
90
|
let chunkStartLine = 0;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "smart-coding-mcp",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "An extensible MCP server that enhances coding productivity with AI-powered features including semantic code search, intelligent indexing, and more, using local LLMs",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|