@hoshikawashiro/ide-mcp-server 1.0.6 → 1.0.9
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/mcp-server.d.ts +10 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +287 -75
- package/dist/mcp-server.js.map +1 -1
- package/dist/services/ide-connector.d.ts +9 -5
- package/dist/services/ide-connector.d.ts.map +1 -1
- package/dist/services/ide-connector.js +36 -37
- package/dist/services/ide-connector.js.map +1 -1
- package/dist/utils/snippet-parser.d.ts +55 -0
- package/dist/utils/snippet-parser.d.ts.map +1 -0
- package/dist/utils/snippet-parser.js +146 -0
- package/dist/utils/snippet-parser.js.map +1 -0
- package/package.json +2 -1
package/dist/mcp-server.d.ts
CHANGED
|
@@ -13,6 +13,11 @@ export declare class MCPServer {
|
|
|
13
13
|
* 确保每两次刷新之间不小于 5 秒
|
|
14
14
|
*/
|
|
15
15
|
private refreshInstancesWithThrottle;
|
|
16
|
+
/**
|
|
17
|
+
* 统一的实例查找方法
|
|
18
|
+
* 根据当前工作目录查找对应的 IDE 实例,如果找不到则抛出统一的错误
|
|
19
|
+
*/
|
|
20
|
+
private findInstanceOrThrow;
|
|
16
21
|
private registerTools;
|
|
17
22
|
private handleShowPopup;
|
|
18
23
|
private handleListInstances;
|
|
@@ -23,7 +28,12 @@ export declare class MCPServer {
|
|
|
23
28
|
private handleFetchContentFromIdentifier;
|
|
24
29
|
private handleTriggerGradleSync;
|
|
25
30
|
private handleSemanticsCodeSearch;
|
|
31
|
+
private handleLookupDeclaration;
|
|
26
32
|
private handleFindUsage;
|
|
33
|
+
private handleAnalyzeImage;
|
|
34
|
+
private callImageAnalyzeAPI;
|
|
35
|
+
private handleReadLarkDoc;
|
|
36
|
+
private callReadLarkDocAPI;
|
|
27
37
|
start(): Promise<void>;
|
|
28
38
|
stop(): Promise<void>;
|
|
29
39
|
isServerRunning(): boolean;
|
package/dist/mcp-server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AAgBA,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;;IAsBzC;;;OAGG;YACW,4BAA4B;IAmB1C;;;OAGG;YACW,mBAAmB;IAcjC,OAAO,CAAC,aAAa;YAqRP,eAAe;YAuBf,mBAAmB;YAqBnB,mBAAmB;YA2BnB,oBAAoB;YA0BpB,iBAAiB;YA8BjB,iBAAiB;YA8BjB,gCAAgC;YA8ChC,uBAAuB;YA0BvB,yBAAyB;YA8BzB,uBAAuB;YA8BvB,eAAe;YA8Bf,kBAAkB;YA2BlB,mBAAmB;YAkBnB,iBAAiB;YA2BjB,kBAAkB;IAiB1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3B,eAAe,IAAI,OAAO;CAG3B"}
|
package/dist/mcp-server.js
CHANGED
|
@@ -5,6 +5,8 @@ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextpro
|
|
|
5
5
|
import { InstanceManager } from './utils/instance-manager.js';
|
|
6
6
|
import { IDEConnector } from './services/ide-connector.js';
|
|
7
7
|
import * as os from 'os';
|
|
8
|
+
import axios from 'axios';
|
|
9
|
+
import { snippetParser } from "./utils/snippet-parser.js";
|
|
8
10
|
export class MCPServer {
|
|
9
11
|
constructor() {
|
|
10
12
|
this.isRunning = false;
|
|
@@ -47,6 +49,21 @@ export class MCPServer {
|
|
|
47
49
|
console.log('Failed to refresh instances:', error);
|
|
48
50
|
}
|
|
49
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* 统一的实例查找方法
|
|
54
|
+
* 根据当前工作目录查找对应的 IDE 实例,如果找不到则抛出统一的错误
|
|
55
|
+
*/
|
|
56
|
+
async findInstanceOrThrow() {
|
|
57
|
+
const cwd = process.cwd();
|
|
58
|
+
const instance = await this.instanceManager.findInstanceByProjectPath(cwd);
|
|
59
|
+
if (!instance) {
|
|
60
|
+
throw new Error(`No IDE instance found for project path: ${cwd}. You may not have started this project in IDEA/Android Studio, or not installed *IDE-use* plugin in the corresponding IDE.
|
|
61
|
+
- Plugin documentation: 📚 https://v2ig.cn/OyldV8sfxWI/
|
|
62
|
+
- Quick installation command: \`bash <(curl -s "https://v2mg.cn/Kw3Wx4hxHKs/")\`
|
|
63
|
+
`);
|
|
64
|
+
}
|
|
65
|
+
return instance;
|
|
66
|
+
}
|
|
50
67
|
registerTools() {
|
|
51
68
|
// 注册 showPopup 工具
|
|
52
69
|
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
@@ -54,13 +71,13 @@ export class MCPServer {
|
|
|
54
71
|
tools: [
|
|
55
72
|
{
|
|
56
73
|
name: 'show_popup',
|
|
57
|
-
description: '
|
|
74
|
+
description: 'Show a popup message in the IDE instance corresponding to the current project. The IDE instance is automatically matched by the current working directory and does not need to be provided.',
|
|
58
75
|
inputSchema: {
|
|
59
76
|
type: 'object',
|
|
60
77
|
properties: {
|
|
61
78
|
message: {
|
|
62
79
|
type: 'string',
|
|
63
|
-
description: '
|
|
80
|
+
description: 'The message content to be displayed'
|
|
64
81
|
}
|
|
65
82
|
},
|
|
66
83
|
required: ['message']
|
|
@@ -84,7 +101,7 @@ export class MCPServer {
|
|
|
84
101
|
},
|
|
85
102
|
{
|
|
86
103
|
name: 'code_inspect',
|
|
87
|
-
description: `A tool for lightweight
|
|
104
|
+
description: `A tool for lightweight compilation checking of Java and Kotlin code files at the specified path.`,
|
|
88
105
|
inputSchema: {
|
|
89
106
|
type: 'object',
|
|
90
107
|
properties: {
|
|
@@ -98,30 +115,43 @@ export class MCPServer {
|
|
|
98
115
|
},
|
|
99
116
|
{
|
|
100
117
|
name: 'search_class',
|
|
101
|
-
description: `
|
|
102
|
-
|
|
118
|
+
description: `
|
|
119
|
+
Search exact java or kotlin classes in current project visible scope by its class name. There could be several classes with the same name in different packages, so this tool willreturn a list of json object which declares files with this class. Each class result item contains:
|
|
120
|
+
- identifier: an identifier of target class, MUST use 'fetch_content_from_identifier' to get its real content. Attention: The identifier does not equals to file path.
|
|
103
121
|
- dependencyInfo: tell which module the class belongs to (use for confirm whether has class visibility).
|
|
122
|
+
** This tool can also be used to validate whether a class is visible in current project.
|
|
104
123
|
`,
|
|
105
124
|
inputSchema: {
|
|
106
125
|
type: 'object',
|
|
107
126
|
properties: {
|
|
108
127
|
keyword: {
|
|
109
128
|
type: 'string',
|
|
110
|
-
description: '
|
|
129
|
+
description: 'java simple class name without package name. Accept any valid java or kotlin class, interface, enum, annotation, etc. Not accept package name, method name and field name.'
|
|
111
130
|
}
|
|
112
131
|
},
|
|
113
|
-
required: ['
|
|
132
|
+
required: ['keyword']
|
|
114
133
|
}
|
|
115
134
|
},
|
|
116
135
|
{
|
|
117
136
|
name: 'fetch_content_from_identifier',
|
|
118
|
-
description: `
|
|
137
|
+
description: `
|
|
138
|
+
This tool is only used to accept the identifier list returned by the 'search_class', 'find_usage', "lookup_declaration" tool, and return the corresponding content. Never use this tool to read a file path directly.
|
|
139
|
+
The content of an identifier could be *source code* if it's a project class or source jar class, and it will be a *class ABI declaration* if it's a binary class in jar file.
|
|
140
|
+
`,
|
|
119
141
|
inputSchema: {
|
|
120
142
|
type: 'object',
|
|
121
143
|
properties: {
|
|
122
144
|
identifier: {
|
|
123
145
|
type: 'string',
|
|
124
|
-
description: 'identifier from
|
|
146
|
+
description: 'class identifier from accepted tools'
|
|
147
|
+
},
|
|
148
|
+
startLine: {
|
|
149
|
+
type: 'number',
|
|
150
|
+
description: 'Start line number of file identifier which need to be read (start from 1). When read whole file, donnot pass this parameter.'
|
|
151
|
+
},
|
|
152
|
+
endLine: {
|
|
153
|
+
type: 'number',
|
|
154
|
+
description: 'End line number of file identifier which need to be read (start from 1). When read whole file, donnot pass this parameter.'
|
|
125
155
|
}
|
|
126
156
|
},
|
|
127
157
|
required: ['identifier']
|
|
@@ -129,7 +159,7 @@ export class MCPServer {
|
|
|
129
159
|
},
|
|
130
160
|
{
|
|
131
161
|
name: 'trigger_gradle_sync',
|
|
132
|
-
description: '
|
|
162
|
+
description: 'Trigger Gradle Sync synchronization to rebuild project information, return the success status and error information (if failed) of the sync',
|
|
133
163
|
inputSchema: {
|
|
134
164
|
type: 'object',
|
|
135
165
|
properties: {}
|
|
@@ -137,42 +167,117 @@ export class MCPServer {
|
|
|
137
167
|
},
|
|
138
168
|
{
|
|
139
169
|
name: 'semantics_code_search',
|
|
140
|
-
description:
|
|
170
|
+
description: `
|
|
171
|
+
Performs semantic search across the project to find topK code snippets relevant to a given query. Used to find business-related code, base method usages, and reusable examples through short feature descriptions with qualifiers. Not intended for exploring code logic relationships or API call flows.
|
|
172
|
+
Query must be functionality targeting which includes: [functionality description (like ban user, show popup, encrypt user id etc)] + [business scope qualifier (optional, like live, feed, global example etc)] + [technical or framework qualifier (optional, like Retrofit, Dagger, etc)].
|
|
173
|
+
`,
|
|
141
174
|
inputSchema: {
|
|
142
175
|
type: 'object',
|
|
143
176
|
properties: {
|
|
144
177
|
codeDescription: {
|
|
145
178
|
type: 'string',
|
|
146
|
-
description: '
|
|
179
|
+
description: 'A brief description of the code snippet to be searched'
|
|
147
180
|
},
|
|
148
181
|
topK: {
|
|
149
182
|
type: 'number',
|
|
150
|
-
description: '
|
|
183
|
+
description: 'The number of code snippets to return, default is 3'
|
|
151
184
|
}
|
|
152
185
|
},
|
|
153
186
|
required: ['codeDescription']
|
|
154
187
|
}
|
|
155
188
|
},
|
|
189
|
+
{
|
|
190
|
+
name: 'lookup_declaration',
|
|
191
|
+
description: `
|
|
192
|
+
Look up the precise declaration of a specific java or kotlin symbol (could be class, method, variable) in the current project. Valid cases to use this tool to find declaration like Class use, method call and variable access (get or set).
|
|
193
|
+
This tool return a json object describe declaration which contains:
|
|
194
|
+
- identifier: an identifier contains target declaration, MUST use 'fetch_content_from_identifier' to get its real content;
|
|
195
|
+
- codeRange: code line range which contains the declaration;
|
|
196
|
+
`,
|
|
197
|
+
inputSchema: {
|
|
198
|
+
type: 'object',
|
|
199
|
+
properties: {
|
|
200
|
+
filePath: {
|
|
201
|
+
type: 'string',
|
|
202
|
+
description: 'File path which contains symbol usage'
|
|
203
|
+
},
|
|
204
|
+
line: {
|
|
205
|
+
type: 'number',
|
|
206
|
+
description: 'line number which contains the target symbol (start from 1)'
|
|
207
|
+
},
|
|
208
|
+
symbolIndex: {
|
|
209
|
+
type: 'number',
|
|
210
|
+
description: 'If there are multiple target symbols with the same name in this line, this parameter specifies the index (start from 1) of which target symbol. If the target symbol is unique in this line, this parameter is not needed.'
|
|
211
|
+
},
|
|
212
|
+
symbol: {
|
|
213
|
+
type: 'string',
|
|
214
|
+
description: "The name of the target symbol."
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
required: ['filePath', 'line', 'symbol']
|
|
218
|
+
}
|
|
219
|
+
},
|
|
156
220
|
{
|
|
157
221
|
name: 'find_usage',
|
|
158
|
-
description:
|
|
222
|
+
description: `
|
|
223
|
+
Find all usage specs of a specific java or kotlin symbol (could be class, method, variable) in the current project. Given the position coordinates where the symbol is declared, this tool will return a list of json object where it was used. Each usage result item contains:
|
|
224
|
+
- identifier: an identifier of target usage class, MUST use 'fetch_content_from_identifier' to get its real content. Attention: The identifier does not equals to file path;
|
|
225
|
+
- line: the line number of the usage point;
|
|
226
|
+
- preview: a brief content context of the usage point (2 lines above and below the usage point);
|
|
227
|
+
`,
|
|
159
228
|
inputSchema: {
|
|
160
229
|
type: 'object',
|
|
161
230
|
properties: {
|
|
162
231
|
filePath: {
|
|
163
232
|
type: 'string',
|
|
164
|
-
description: '
|
|
233
|
+
description: 'File path which contains symbol usage'
|
|
165
234
|
},
|
|
166
|
-
|
|
235
|
+
line: {
|
|
167
236
|
type: 'number',
|
|
168
|
-
description: '
|
|
237
|
+
description: 'line number which contains the target symbol (start from 1)'
|
|
169
238
|
},
|
|
170
|
-
|
|
239
|
+
symbolIndex: {
|
|
171
240
|
type: 'number',
|
|
172
|
-
description: '
|
|
241
|
+
description: 'If there are multiple target symbols with the same name in this line, this parameter specifies the index (start from 1) of which target symbol. If the target symbol is unique in this line, this parameter is not needed.'
|
|
242
|
+
},
|
|
243
|
+
symbol: {
|
|
244
|
+
type: 'string',
|
|
245
|
+
description: "The name of the target symbol."
|
|
173
246
|
}
|
|
174
247
|
},
|
|
175
|
-
required: ['filePath', '
|
|
248
|
+
required: ['filePath', 'line', 'symbol']
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
name: 'analyze_image',
|
|
253
|
+
description: 'Analyze an image using advanced AI vision models with comprehensive understanding capabilities. Only accepts remote image URLs (HTTP/HTTPS).',
|
|
254
|
+
inputSchema: {
|
|
255
|
+
type: 'object',
|
|
256
|
+
properties: {
|
|
257
|
+
image_source: {
|
|
258
|
+
type: 'string',
|
|
259
|
+
description: 'Accept only remote uploaded imageURL'
|
|
260
|
+
},
|
|
261
|
+
prompt: {
|
|
262
|
+
type: 'string',
|
|
263
|
+
description: 'A detail description of infomation want to extract from this image or the purpose of analyzing'
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
required: ['image_source', 'prompt']
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
name: 'read_lark_doc',
|
|
271
|
+
description: 'Read and retrieve content of a Lark document from its web link. The link MUST contains /wiki/ or /docx/ in its path. NEVER use this tool if the link not matches the pattern.',
|
|
272
|
+
inputSchema: {
|
|
273
|
+
type: 'object',
|
|
274
|
+
properties: {
|
|
275
|
+
docLink: {
|
|
276
|
+
type: 'string',
|
|
277
|
+
description: 'A valid http/https link to a Lark document.'
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
required: ['docLink']
|
|
176
281
|
}
|
|
177
282
|
},
|
|
178
283
|
]
|
|
@@ -203,8 +308,26 @@ export class MCPServer {
|
|
|
203
308
|
return await this.handleTriggerGradleSync();
|
|
204
309
|
case 'semantics_code_search':
|
|
205
310
|
return await this.handleSemanticsCodeSearch(args);
|
|
206
|
-
case '
|
|
207
|
-
|
|
311
|
+
case 'lookup_declaration': {
|
|
312
|
+
const { filePath, line, symbolIndex, symbol } = args;
|
|
313
|
+
const lookupResult = snippetParser.parse(filePath, line, symbol, symbolIndex);
|
|
314
|
+
if (!lookupResult.success) {
|
|
315
|
+
throw new Error(`Failed to parse snippet for lookup_declaration: ${lookupResult.error}`);
|
|
316
|
+
}
|
|
317
|
+
return await this.handleLookupDeclaration({ filePath, line: lookupResult.line, column: lookupResult.column });
|
|
318
|
+
}
|
|
319
|
+
case 'find_usage': {
|
|
320
|
+
const { filePath, line, symbolIndex, symbol } = args;
|
|
321
|
+
const findUsageResult = snippetParser.parse(filePath, line, symbol, symbolIndex);
|
|
322
|
+
if (!findUsageResult.success) {
|
|
323
|
+
throw new Error(`Failed to parse snippet for find_usage: ${findUsageResult.error}`);
|
|
324
|
+
}
|
|
325
|
+
return await this.handleFindUsage({ filePath, line: findUsageResult.line, column: findUsageResult.column });
|
|
326
|
+
}
|
|
327
|
+
case 'analyze_image':
|
|
328
|
+
return await this.handleAnalyzeImage(args);
|
|
329
|
+
case 'read_lark_doc':
|
|
330
|
+
return await this.handleReadLarkDoc(args);
|
|
208
331
|
default:
|
|
209
332
|
throw new Error(`Unknown tool: ${name}`);
|
|
210
333
|
}
|
|
@@ -218,12 +341,8 @@ export class MCPServer {
|
|
|
218
341
|
if (!params.message) {
|
|
219
342
|
throw new Error('Invalid params: message are required');
|
|
220
343
|
}
|
|
221
|
-
let cwd = process.cwd();
|
|
222
344
|
// 查找对应的 IDE 实例
|
|
223
|
-
const instance = await this.
|
|
224
|
-
if (!instance) {
|
|
225
|
-
throw new Error(`No IDE instance found for project path: ${cwd}`);
|
|
226
|
-
}
|
|
345
|
+
const instance = await this.findInstanceOrThrow();
|
|
227
346
|
try {
|
|
228
347
|
await this.ideConnector.showPopup(instance, params.message);
|
|
229
348
|
return {
|
|
@@ -282,12 +401,8 @@ export class MCPServer {
|
|
|
282
401
|
}
|
|
283
402
|
}
|
|
284
403
|
async handleGetCurrentFile() {
|
|
285
|
-
let cwd = process.cwd();
|
|
286
404
|
// 查找对应的 IDE 实例
|
|
287
|
-
const instance = await this.
|
|
288
|
-
if (!instance) {
|
|
289
|
-
throw new Error(`No IDE instance found for project path: ${cwd}`);
|
|
290
|
-
}
|
|
405
|
+
const instance = await this.findInstanceOrThrow();
|
|
291
406
|
try {
|
|
292
407
|
const response = await this.ideConnector.getCurrentFile(instance);
|
|
293
408
|
if (response.error) {
|
|
@@ -311,12 +426,8 @@ export class MCPServer {
|
|
|
311
426
|
if (!params.filePath) {
|
|
312
427
|
throw new Error('Invalid params: filePath is required');
|
|
313
428
|
}
|
|
314
|
-
let cwd = process.cwd();
|
|
315
429
|
// 查找对应的 IDE 实例
|
|
316
|
-
const instance = await this.
|
|
317
|
-
if (!instance) {
|
|
318
|
-
throw new Error(`No IDE instance found for project path: ${cwd}`);
|
|
319
|
-
}
|
|
430
|
+
const instance = await this.findInstanceOrThrow();
|
|
320
431
|
try {
|
|
321
432
|
const response = await this.ideConnector.codeInspect(instance, params.filePath);
|
|
322
433
|
if (response.error) {
|
|
@@ -340,12 +451,8 @@ export class MCPServer {
|
|
|
340
451
|
if (!params.keyword) {
|
|
341
452
|
throw new Error('Invalid params: keyword is required');
|
|
342
453
|
}
|
|
343
|
-
let cwd = process.cwd();
|
|
344
454
|
// 查找对应的 IDE 实例
|
|
345
|
-
const instance = await this.
|
|
346
|
-
if (!instance) {
|
|
347
|
-
throw new Error(`No IDE instance found for project path: ${cwd}`);
|
|
348
|
-
}
|
|
455
|
+
const instance = await this.findInstanceOrThrow();
|
|
349
456
|
try {
|
|
350
457
|
const response = await this.ideConnector.searchClass(instance, params.keyword);
|
|
351
458
|
if (response.error) {
|
|
@@ -369,38 +476,45 @@ export class MCPServer {
|
|
|
369
476
|
if (!params.identifier) {
|
|
370
477
|
throw new Error('Invalid params: identifier is required');
|
|
371
478
|
}
|
|
372
|
-
let cwd = process.cwd();
|
|
373
479
|
// 查找对应的 IDE 实例
|
|
374
|
-
const instance = await this.
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
480
|
+
const instance = await this.findInstanceOrThrow();
|
|
481
|
+
// 设置默认值
|
|
482
|
+
const startLine = params.startLine ?? 0;
|
|
483
|
+
const endLine = params.endLine ?? 10000;
|
|
378
484
|
try {
|
|
379
|
-
const response = await this.ideConnector.fetchContentFromIdentifier(instance, params.identifier);
|
|
485
|
+
const response = await this.ideConnector.fetchContentFromIdentifier(instance, params.identifier, startLine, endLine);
|
|
380
486
|
if (response.error) {
|
|
381
487
|
throw new Error(`Failed to fetch content from identifier: ${response.error.message}`);
|
|
382
488
|
}
|
|
383
489
|
const contentResult = response.result;
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
490
|
+
if (contentResult.success) {
|
|
491
|
+
return {
|
|
492
|
+
content: [
|
|
493
|
+
{
|
|
494
|
+
type: 'text',
|
|
495
|
+
text: `${contentResult.content}`
|
|
496
|
+
}
|
|
497
|
+
]
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
else {
|
|
501
|
+
return {
|
|
502
|
+
content: [
|
|
503
|
+
{
|
|
504
|
+
type: 'text',
|
|
505
|
+
text: `${JSON.stringify(contentResult)}`
|
|
506
|
+
}
|
|
507
|
+
]
|
|
508
|
+
};
|
|
509
|
+
}
|
|
392
510
|
}
|
|
393
511
|
catch (error) {
|
|
394
512
|
throw new Error(`Failed to fetch content from identifier: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
395
513
|
}
|
|
396
514
|
}
|
|
397
515
|
async handleTriggerGradleSync() {
|
|
398
|
-
let cwd = process.cwd();
|
|
399
516
|
// 查找对应的 IDE 实例
|
|
400
|
-
const instance = await this.
|
|
401
|
-
if (!instance) {
|
|
402
|
-
throw new Error(`No IDE instance found for project path: ${cwd}`);
|
|
403
|
-
}
|
|
517
|
+
const instance = await this.findInstanceOrThrow();
|
|
404
518
|
try {
|
|
405
519
|
const response = await this.ideConnector.triggerGradleSync(instance);
|
|
406
520
|
if (response.error) {
|
|
@@ -424,12 +538,8 @@ export class MCPServer {
|
|
|
424
538
|
if (!params.codeDescription) {
|
|
425
539
|
throw new Error('Invalid params: codeDescription is required');
|
|
426
540
|
}
|
|
427
|
-
let cwd = process.cwd();
|
|
428
541
|
// 查找对应的 IDE 实例
|
|
429
|
-
const instance = await this.
|
|
430
|
-
if (!instance) {
|
|
431
|
-
throw new Error(`No IDE instance found for project path: ${cwd}`);
|
|
432
|
-
}
|
|
542
|
+
const instance = await this.findInstanceOrThrow();
|
|
433
543
|
try {
|
|
434
544
|
const response = await this.ideConnector.semanticsCodeSearch(instance, params.codeDescription, params.topK || 3);
|
|
435
545
|
if (response.error) {
|
|
@@ -449,18 +559,39 @@ export class MCPServer {
|
|
|
449
559
|
throw new Error(`Failed to perform semantic code search: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
450
560
|
}
|
|
451
561
|
}
|
|
452
|
-
async
|
|
453
|
-
if (!params.filePath || params.
|
|
454
|
-
throw new Error('Invalid params: filePath,
|
|
562
|
+
async handleLookupDeclaration(params) {
|
|
563
|
+
if (!params.filePath || params.line === undefined || params.column === undefined) {
|
|
564
|
+
throw new Error('Invalid params: filePath, line, and column are required');
|
|
455
565
|
}
|
|
456
|
-
let cwd = process.cwd();
|
|
457
566
|
// 查找对应的 IDE 实例
|
|
458
|
-
const instance = await this.
|
|
459
|
-
|
|
460
|
-
|
|
567
|
+
const instance = await this.findInstanceOrThrow();
|
|
568
|
+
try {
|
|
569
|
+
const response = await this.ideConnector.lookupDeclaration(instance, params.filePath, params.line, params.column);
|
|
570
|
+
if (response.error) {
|
|
571
|
+
throw new Error(`Failed to lookup declaration: ${response.error.message}`);
|
|
572
|
+
}
|
|
573
|
+
const declarationResult = response.result;
|
|
574
|
+
return {
|
|
575
|
+
content: [
|
|
576
|
+
{
|
|
577
|
+
type: 'text',
|
|
578
|
+
text: `Declaration lookup result:\n${JSON.stringify(declarationResult, null, 2)}`
|
|
579
|
+
}
|
|
580
|
+
]
|
|
581
|
+
};
|
|
461
582
|
}
|
|
583
|
+
catch (error) {
|
|
584
|
+
throw new Error(`Failed to lookup declaration: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
async handleFindUsage(params) {
|
|
588
|
+
if (!params.filePath || params.line === undefined || params.column === undefined) {
|
|
589
|
+
throw new Error('Invalid params: filePath, line, and column are required');
|
|
590
|
+
}
|
|
591
|
+
// 查找对应的 IDE 实例
|
|
592
|
+
const instance = await this.findInstanceOrThrow();
|
|
462
593
|
try {
|
|
463
|
-
const response = await this.ideConnector.findUsage(instance, params.filePath, params.
|
|
594
|
+
const response = await this.ideConnector.findUsage(instance, params.filePath, params.line, params.column);
|
|
464
595
|
if (response.error) {
|
|
465
596
|
throw new Error(`Failed to find usage: ${response.error.message}`);
|
|
466
597
|
}
|
|
@@ -469,7 +600,7 @@ export class MCPServer {
|
|
|
469
600
|
content: [
|
|
470
601
|
{
|
|
471
602
|
type: 'text',
|
|
472
|
-
text: `Usage
|
|
603
|
+
text: `Usage search result:\n${JSON.stringify(usageResult, null, 2)}`
|
|
473
604
|
}
|
|
474
605
|
]
|
|
475
606
|
};
|
|
@@ -478,6 +609,87 @@ export class MCPServer {
|
|
|
478
609
|
throw new Error(`Failed to find usage: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
479
610
|
}
|
|
480
611
|
}
|
|
612
|
+
async handleAnalyzeImage(params) {
|
|
613
|
+
if (!params.image_source || !params.prompt) {
|
|
614
|
+
throw new Error('Invalid params: image_source and prompt are required');
|
|
615
|
+
}
|
|
616
|
+
// Validate that it's a valid URL
|
|
617
|
+
if (!params.image_source.startsWith('http://') && !params.image_source.startsWith('https://')) {
|
|
618
|
+
throw new Error('image_source must be a valid HTTP or HTTPS URL');
|
|
619
|
+
}
|
|
620
|
+
try {
|
|
621
|
+
// Call image analysis API
|
|
622
|
+
const analysisResult = await this.callImageAnalyzeAPI(params.image_source, params.prompt);
|
|
623
|
+
return {
|
|
624
|
+
content: [
|
|
625
|
+
{
|
|
626
|
+
type: 'text',
|
|
627
|
+
text: `Image Analysis Result:\n\n${JSON.stringify(analysisResult)}`
|
|
628
|
+
}
|
|
629
|
+
]
|
|
630
|
+
};
|
|
631
|
+
}
|
|
632
|
+
catch (error) {
|
|
633
|
+
throw new Error(`Failed to analyze image: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
async callImageAnalyzeAPI(imageUrl, prompt) {
|
|
637
|
+
try {
|
|
638
|
+
const response = await axios.post('https://v45b0i5r.fn.bytedance.net/chat/imageAnalyze', {
|
|
639
|
+
imageUrl: imageUrl,
|
|
640
|
+
prompt: prompt
|
|
641
|
+
}, {
|
|
642
|
+
headers: {
|
|
643
|
+
'Content-Type': 'application/json'
|
|
644
|
+
},
|
|
645
|
+
timeout: 60000 // 60秒超时
|
|
646
|
+
});
|
|
647
|
+
return response.data;
|
|
648
|
+
}
|
|
649
|
+
catch (error) {
|
|
650
|
+
throw new Error(`Image analysis API request failed (${error.response?.status})`);
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
async handleReadLarkDoc(params) {
|
|
654
|
+
if (!params.docLink) {
|
|
655
|
+
throw new Error('Invalid params: docLink is required');
|
|
656
|
+
}
|
|
657
|
+
// Validate that it's a valid URL
|
|
658
|
+
if (!params.docLink.startsWith('http://') && !params.docLink.startsWith('https://')) {
|
|
659
|
+
throw new Error('docLink must be a valid HTTP or HTTPS URL');
|
|
660
|
+
}
|
|
661
|
+
try {
|
|
662
|
+
// Call Lark doc reading API
|
|
663
|
+
const docContent = await this.callReadLarkDocAPI(params.docLink);
|
|
664
|
+
return {
|
|
665
|
+
content: [
|
|
666
|
+
{
|
|
667
|
+
type: 'text',
|
|
668
|
+
text: `Lark Document Content:\n\n${JSON.stringify(docContent)}`
|
|
669
|
+
}
|
|
670
|
+
]
|
|
671
|
+
};
|
|
672
|
+
}
|
|
673
|
+
catch (error) {
|
|
674
|
+
throw new Error(`Failed to read Lark document: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
async callReadLarkDocAPI(docLink) {
|
|
678
|
+
try {
|
|
679
|
+
const response = await axios.post('https://v45b0i5r.fn.bytedance.net/chat/readLarkDoc', {
|
|
680
|
+
docLink: docLink
|
|
681
|
+
}, {
|
|
682
|
+
headers: {
|
|
683
|
+
'Content-Type': 'application/json'
|
|
684
|
+
},
|
|
685
|
+
timeout: 60000 // 60秒超时
|
|
686
|
+
});
|
|
687
|
+
return response.data;
|
|
688
|
+
}
|
|
689
|
+
catch (error) {
|
|
690
|
+
throw new Error(`Lark doc reading API request failed (${JSON.stringify(error.response?.data)})`);
|
|
691
|
+
}
|
|
692
|
+
}
|
|
481
693
|
async start() {
|
|
482
694
|
if (this.isRunning) {
|
|
483
695
|
console.error('MCP Server is already running');
|
package/dist/mcp-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ export declare class IDEConnector {
|
|
|
33
33
|
/**
|
|
34
34
|
* 从标识符获取内容
|
|
35
35
|
*/
|
|
36
|
-
fetchContentFromIdentifier(instance: IDEInstanceInfo, identifier: string): Promise<MCPResponse>;
|
|
36
|
+
fetchContentFromIdentifier(instance: IDEInstanceInfo, identifier: string, startLine: number, endLine: number): Promise<MCPResponse>;
|
|
37
37
|
/**
|
|
38
38
|
* 触发 Gradle 同步
|
|
39
39
|
*/
|
|
@@ -43,13 +43,17 @@ export declare class IDEConnector {
|
|
|
43
43
|
*/
|
|
44
44
|
semanticsCodeSearch(instance: IDEInstanceInfo, codeDescription: string, topK: number): Promise<MCPResponse>;
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
46
|
+
* 查找符号定义
|
|
47
47
|
*/
|
|
48
|
-
|
|
48
|
+
lookupDeclaration(instance: IDEInstanceInfo, filePath: string, line: number, column: number): Promise<MCPResponse>;
|
|
49
|
+
/**
|
|
50
|
+
* 查找符号使用位置
|
|
51
|
+
*/
|
|
52
|
+
findUsage(instance: IDEInstanceInfo, filePath: string, line: number, column: number): Promise<MCPResponse>;
|
|
49
53
|
/**
|
|
50
|
-
*
|
|
54
|
+
* 关闭所有连接
|
|
51
55
|
*/
|
|
52
|
-
|
|
56
|
+
closeAllConnections(): void;
|
|
53
57
|
/**
|
|
54
58
|
* 生成请求 ID
|
|
55
59
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ide-connector.d.ts","sourceRoot":"","sources":["../../src/services/ide-connector.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AAE9F,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAqC;IAExD;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAuCtE;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAiCvF;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAajF;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAYrE;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAUpE;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAapF;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAanF;;OAEG;IACG,0BAA0B,CAAC,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"ide-connector.d.ts","sourceRoot":"","sources":["../../src/services/ide-connector.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AAE9F,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAqC;IAExD;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAuCtE;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAiCvF;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAajF;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAYrE;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAUpE;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAapF;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAanF;;OAEG;IACG,0BAA0B,CAAC,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAezI;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAUxE;;OAEG;IACG,mBAAmB,CAAC,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAcjH;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAexH;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAehH;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAS3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAG1B"}
|
|
@@ -137,12 +137,14 @@ export class IDEConnector {
|
|
|
137
137
|
/**
|
|
138
138
|
* 从标识符获取内容
|
|
139
139
|
*/
|
|
140
|
-
async fetchContentFromIdentifier(instance, identifier) {
|
|
140
|
+
async fetchContentFromIdentifier(instance, identifier, startLine, endLine) {
|
|
141
141
|
const request = {
|
|
142
142
|
jsonrpc: '2.0',
|
|
143
143
|
method: 'fetchContentFromIdentifier',
|
|
144
144
|
params: {
|
|
145
|
-
identifier
|
|
145
|
+
identifier,
|
|
146
|
+
startLine,
|
|
147
|
+
endLine
|
|
146
148
|
},
|
|
147
149
|
id: this.generateRequestId()
|
|
148
150
|
};
|
|
@@ -174,6 +176,38 @@ export class IDEConnector {
|
|
|
174
176
|
};
|
|
175
177
|
return this.sendRequest(instance, request);
|
|
176
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* 查找符号定义
|
|
181
|
+
*/
|
|
182
|
+
async lookupDeclaration(instance, filePath, line, column) {
|
|
183
|
+
const request = {
|
|
184
|
+
jsonrpc: '2.0',
|
|
185
|
+
method: 'lookupDeclaration',
|
|
186
|
+
params: {
|
|
187
|
+
filePath,
|
|
188
|
+
line,
|
|
189
|
+
column
|
|
190
|
+
},
|
|
191
|
+
id: this.generateRequestId()
|
|
192
|
+
};
|
|
193
|
+
return this.sendRequest(instance, request);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* 查找符号使用位置
|
|
197
|
+
*/
|
|
198
|
+
async findUsage(instance, filePath, line, column) {
|
|
199
|
+
const request = {
|
|
200
|
+
jsonrpc: '2.0',
|
|
201
|
+
method: 'findUsage',
|
|
202
|
+
params: {
|
|
203
|
+
filePath,
|
|
204
|
+
line,
|
|
205
|
+
column
|
|
206
|
+
},
|
|
207
|
+
id: this.generateRequestId()
|
|
208
|
+
};
|
|
209
|
+
return this.sendRequest(instance, request);
|
|
210
|
+
}
|
|
177
211
|
/**
|
|
178
212
|
* 关闭所有连接
|
|
179
213
|
*/
|
|
@@ -185,41 +219,6 @@ export class IDEConnector {
|
|
|
185
219
|
}
|
|
186
220
|
this.connections.clear();
|
|
187
221
|
}
|
|
188
|
-
/**
|
|
189
|
-
* 查找引用
|
|
190
|
-
*/
|
|
191
|
-
async findUsage(instance, filePath, lineNumber, columnNumber) {
|
|
192
|
-
const ws = await this.connectToInstance(instance);
|
|
193
|
-
return new Promise((resolve, reject) => {
|
|
194
|
-
const requestId = this.generateRequestId();
|
|
195
|
-
const request = {
|
|
196
|
-
jsonrpc: '2.0',
|
|
197
|
-
method: 'findUsage',
|
|
198
|
-
params: { filePath, lineNumber, columnNumber },
|
|
199
|
-
id: requestId
|
|
200
|
-
};
|
|
201
|
-
const timer = setTimeout(() => {
|
|
202
|
-
reject(new Error('Request timeout'));
|
|
203
|
-
}, 30000);
|
|
204
|
-
const messageHandler = (data) => {
|
|
205
|
-
try {
|
|
206
|
-
const response = JSON.parse(data.toString());
|
|
207
|
-
if (response.id === requestId) {
|
|
208
|
-
clearTimeout(timer);
|
|
209
|
-
ws.removeListener('message', messageHandler);
|
|
210
|
-
resolve(response);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
catch (error) {
|
|
214
|
-
clearTimeout(timer);
|
|
215
|
-
ws.removeListener('message', messageHandler);
|
|
216
|
-
reject(error);
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
|
-
ws.on('message', messageHandler);
|
|
220
|
-
ws.send(JSON.stringify(request));
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
222
|
/**
|
|
224
223
|
* 生成请求 ID
|
|
225
224
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ide-connector.js","sourceRoot":"","sources":["../../src/services/ide-connector.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAG3B,MAAM,OAAO,YAAY;IAAzB;QACU,gBAAW,GAA2B,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ide-connector.js","sourceRoot":"","sources":["../../src/services/ide-connector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 简化的 Snippet 解析结果
|
|
3
|
+
*/
|
|
4
|
+
export interface ParseResult {
|
|
5
|
+
/** 目标符号的精确行号 */
|
|
6
|
+
line: number;
|
|
7
|
+
/** 目标符号的精确列号 (从1开始) */
|
|
8
|
+
column: number;
|
|
9
|
+
/** 是否解析成功 */
|
|
10
|
+
success: boolean;
|
|
11
|
+
/** 错误信息 */
|
|
12
|
+
error?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Snippet 解析器
|
|
16
|
+
* 1. 从 snippet 中确定目标符号是第几个
|
|
17
|
+
* 2. 在实际文件行中找到对应的列号
|
|
18
|
+
*/
|
|
19
|
+
export declare class SnippetParser {
|
|
20
|
+
/**
|
|
21
|
+
* 解析 snippet,获取精确行列号
|
|
22
|
+
* @param filePath 文件路径
|
|
23
|
+
* @param line 目标行号
|
|
24
|
+
* @param symbol 符号名称
|
|
25
|
+
* @param symbolIndex
|
|
26
|
+
* @returns 解析结果
|
|
27
|
+
*/
|
|
28
|
+
parse(filePath: string, line: number, symbol: string, symbolIndex?: number): ParseResult;
|
|
29
|
+
/**
|
|
30
|
+
* 获取符号的上下文信息(前后各n个字符)
|
|
31
|
+
*/
|
|
32
|
+
private getSymbolContexts;
|
|
33
|
+
/**
|
|
34
|
+
* 统计符号在行中出现的次数
|
|
35
|
+
* @param line 代码行
|
|
36
|
+
* @param symbol 目标符号
|
|
37
|
+
* @returns 出现次数
|
|
38
|
+
*/
|
|
39
|
+
private countSymbolOccurrences;
|
|
40
|
+
/**
|
|
41
|
+
* 将代码行分割为 word 映射列表
|
|
42
|
+
* 避免字符串包含问题,使用更严格的 word 边界
|
|
43
|
+
*/
|
|
44
|
+
private splitIntoWords;
|
|
45
|
+
/**
|
|
46
|
+
* 在实际文件行中找到第 symbolIndex 个符号的列号
|
|
47
|
+
* @param line 实际文件行
|
|
48
|
+
* @param symbol 目标符号名称
|
|
49
|
+
* @param symbolIndex 第几个出现(从1开始)
|
|
50
|
+
* @returns 列号,从1开始,没找到返回0
|
|
51
|
+
*/
|
|
52
|
+
private findSymbolColumn;
|
|
53
|
+
}
|
|
54
|
+
export declare const snippetParser: SnippetParser;
|
|
55
|
+
//# sourceMappingURL=snippet-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snippet-parser.d.ts","sourceRoot":"","sources":["../../src/utils/snippet-parser.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAWD;;;;GAIG;AACH,qBAAa,aAAa;IAEtB;;;;;;;OAOG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW;IAuExF;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAK9B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAmBtB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;CAe3B;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
/**
|
|
3
|
+
* Snippet 解析器
|
|
4
|
+
* 1. 从 snippet 中确定目标符号是第几个
|
|
5
|
+
* 2. 在实际文件行中找到对应的列号
|
|
6
|
+
*/
|
|
7
|
+
export class SnippetParser {
|
|
8
|
+
/**
|
|
9
|
+
* 解析 snippet,获取精确行列号
|
|
10
|
+
* @param filePath 文件路径
|
|
11
|
+
* @param line 目标行号
|
|
12
|
+
* @param symbol 符号名称
|
|
13
|
+
* @param symbolIndex
|
|
14
|
+
* @returns 解析结果
|
|
15
|
+
*/
|
|
16
|
+
parse(filePath, line, symbol, symbolIndex) {
|
|
17
|
+
try {
|
|
18
|
+
// 1. 验证参数
|
|
19
|
+
if (!filePath || !fs.existsSync(filePath)) {
|
|
20
|
+
return {
|
|
21
|
+
line: 0,
|
|
22
|
+
column: 0,
|
|
23
|
+
success: false,
|
|
24
|
+
error: 'File not found or path is empty'
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const fileContent = fs.readFileSync(filePath, 'utf-8');
|
|
28
|
+
const lines = fileContent.split('\n');
|
|
29
|
+
const actualLine = lines[line - 1]; // 转换为0索引
|
|
30
|
+
// 如果未提供 symbolIndex,检查是否存在多个同名符号
|
|
31
|
+
if (symbolIndex == null) {
|
|
32
|
+
const symbolCount = this.countSymbolOccurrences(actualLine, symbol);
|
|
33
|
+
if (symbolCount === 0) {
|
|
34
|
+
return {
|
|
35
|
+
line: 0,
|
|
36
|
+
column: 0,
|
|
37
|
+
success: false,
|
|
38
|
+
error: `Symbol '${symbol}' not found in line ${line}`
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
else if (symbolCount > 1) {
|
|
42
|
+
const contexts = this.getSymbolContexts(actualLine, symbol);
|
|
43
|
+
return {
|
|
44
|
+
line: 0,
|
|
45
|
+
column: 0,
|
|
46
|
+
success: false,
|
|
47
|
+
error: `找到 ${symbolCount} 个 '${symbol}' 符号,请使用 symbolIndex 参数指定:\n` +
|
|
48
|
+
contexts.map((context, index) => ` ${index + 1}.上下文: "...${context}..."`).join('\n') +
|
|
49
|
+
`\n示例:如需选择第一个,使用 symbolIndex=1`
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// 如果只有一个匹配项,默认使用第一个
|
|
53
|
+
symbolIndex = 1;
|
|
54
|
+
}
|
|
55
|
+
// 在实际文件行中找到第 symbolIndex 个符号的列号
|
|
56
|
+
const column = this.findSymbolColumn(actualLine, symbol, symbolIndex);
|
|
57
|
+
if (column === 0) {
|
|
58
|
+
return {
|
|
59
|
+
line: 0,
|
|
60
|
+
column: 0,
|
|
61
|
+
success: false,
|
|
62
|
+
error: `Symbol '${symbol}' not found in line ${line} as the ${symbolIndex}th occurrence`
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
line,
|
|
67
|
+
column,
|
|
68
|
+
success: true
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return {
|
|
73
|
+
line: 0,
|
|
74
|
+
column: 0,
|
|
75
|
+
success: false,
|
|
76
|
+
error: `Parse error: ${error instanceof Error ? error.message : String(error)}`
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* 获取符号的上下文信息(前后各n个字符)
|
|
82
|
+
*/
|
|
83
|
+
getSymbolContexts(line, symbol, contextLength = 15) {
|
|
84
|
+
const contexts = [];
|
|
85
|
+
const words = this.splitIntoWords(line);
|
|
86
|
+
const symbolWords = words.filter(word => word.symbol === symbol);
|
|
87
|
+
for (const word of symbolWords) {
|
|
88
|
+
const start = Math.max(0, word.startColumn - 1 - contextLength);
|
|
89
|
+
const end = Math.min(line.length, word.endColumn + contextLength);
|
|
90
|
+
const context = line.substring(start, end);
|
|
91
|
+
contexts.push(context);
|
|
92
|
+
}
|
|
93
|
+
return contexts;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* 统计符号在行中出现的次数
|
|
97
|
+
* @param line 代码行
|
|
98
|
+
* @param symbol 目标符号
|
|
99
|
+
* @returns 出现次数
|
|
100
|
+
*/
|
|
101
|
+
countSymbolOccurrences(line, symbol) {
|
|
102
|
+
const words = this.splitIntoWords(line);
|
|
103
|
+
return words.filter(word => word.symbol === symbol).length;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* 将代码行分割为 word 映射列表
|
|
107
|
+
* 避免字符串包含问题,使用更严格的 word 边界
|
|
108
|
+
*/
|
|
109
|
+
splitIntoWords(line) {
|
|
110
|
+
const words = [];
|
|
111
|
+
// 使用正则表达式匹配代码中的标识符(变量名、方法名等)
|
|
112
|
+
// 匹配:字母、数字、下划线、$的组合,但不能以数字开头
|
|
113
|
+
const regex = /\b[a-zA-Z_$][a-zA-Z0-9_$]*\b/g;
|
|
114
|
+
let match;
|
|
115
|
+
while ((match = regex.exec(line)) !== null) {
|
|
116
|
+
words.push({
|
|
117
|
+
symbol: match[0],
|
|
118
|
+
startColumn: match.index + 1, // 列号从1开始
|
|
119
|
+
endColumn: match.index + match[0].length
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
return words;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* 在实际文件行中找到第 symbolIndex 个符号的列号
|
|
126
|
+
* @param line 实际文件行
|
|
127
|
+
* @param symbol 目标符号名称
|
|
128
|
+
* @param symbolIndex 第几个出现(从1开始)
|
|
129
|
+
* @returns 列号,从1开始,没找到返回0
|
|
130
|
+
*/
|
|
131
|
+
findSymbolColumn(line, symbol, symbolIndex) {
|
|
132
|
+
const words = this.splitIntoWords(line);
|
|
133
|
+
let currentIndex = 1;
|
|
134
|
+
for (const word of words) {
|
|
135
|
+
if (word.symbol === symbol) {
|
|
136
|
+
if (currentIndex === symbolIndex) {
|
|
137
|
+
return word.startColumn;
|
|
138
|
+
}
|
|
139
|
+
currentIndex++;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return 0; // 没找到足够数量的符号
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
export const snippetParser = new SnippetParser();
|
|
146
|
+
//# sourceMappingURL=snippet-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snippet-parser.js","sourceRoot":"","sources":["../../src/utils/snippet-parser.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hoshikawashiro/ide-mcp-server",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "MCP Server for enhance IntelliJ IDEA abilities",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/mcp-server.js",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"author": "TikTok",
|
|
32
32
|
"license": "MIT",
|
|
33
33
|
"dependencies": {
|
|
34
|
+
"axios": "^1.13.2",
|
|
34
35
|
"@modelcontextprotocol/sdk": "^0.4.0",
|
|
35
36
|
"ws": "^8.14.2",
|
|
36
37
|
"commander": "^11.1.0",
|