Skip to content

Commit c62b625

Browse files
committed
feat(mcp): add useWeightedTraversal parameter to search tools
Enable weighted traversal by default in search_codebase tool. Pass embedding to traversal handler for similarity scoring.
1 parent 71a4ef7 commit c62b625

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/mcp/tools/search-codebase.tool.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ export const createSearchCodebaseTool = (server: McpServer): void => {
5050
.optional()
5151
.describe(`Length of code snippets to include (default: ${DEFAULTS.codeSnippetLength})`)
5252
.default(DEFAULTS.codeSnippetLength),
53+
useWeightedTraversal: z
54+
.boolean()
55+
.optional()
56+
.describe('Use weighted traversal strategy that scores each node for relevance (default: false)')
57+
.default(true),
5358
},
5459
},
5560
async ({
@@ -60,6 +65,7 @@ export const createSearchCodebaseTool = (server: McpServer): void => {
6065
skip = 0,
6166
includeCode = true,
6267
snippetLength = DEFAULTS.codeSnippetLength,
68+
useWeightedTraversal = true,
6369
}) => {
6470
try {
6571
await debugLog('Search codebase started', { query, limit });
@@ -71,7 +77,7 @@ export const createSearchCodebaseTool = (server: McpServer): void => {
7177
const embedding = await embeddingsService.embedText(query);
7278

7379
const vectorResults = await neo4jService.run(QUERIES.VECTOR_SEARCH, {
74-
limit,
80+
limit: parseInt(limit.toString()),
7581
embedding,
7682
});
7783

@@ -93,7 +99,7 @@ export const createSearchCodebaseTool = (server: McpServer): void => {
9399
snippetLength,
94100
});
95101

96-
return await traversalHandler.traverseFromNode(nodeId, {
102+
return await traversalHandler.traverseFromNode(nodeId, embedding, {
97103
maxDepth,
98104
direction: 'BOTH', // Show both incoming (who calls this) and outgoing (what this calls)
99105
includeCode,
@@ -102,6 +108,7 @@ export const createSearchCodebaseTool = (server: McpServer): void => {
102108
summaryOnly: false,
103109
snippetLength,
104110
title: `Exploration from Node: ${nodeId}`,
111+
useWeightedTraversal,
105112
});
106113
} catch (error) {
107114
console.error('Search codebase error:', error);

src/mcp/tools/traverse-from-node.tool.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ export const createTraverseFromNodeTool = (server: McpServer): void => {
9999
const neo4jService = new Neo4jService();
100100
const traversalHandler = new TraversalHandler(neo4jService);
101101

102-
return await traversalHandler.traverseFromNode(nodeId, {
102+
return await traversalHandler.traverseFromNode(nodeId, [], {
103103
maxDepth: sanitizedMaxDepth,
104104
skip: sanitizedSkip,
105105
direction,

0 commit comments

Comments
 (0)