mne-docs-mcp 1.0.48 → 1.0.49

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.
Files changed (107) hide show
  1. package/dist/archive/manager.d.ts +7 -0
  2. package/dist/archive/manager.d.ts.map +1 -1
  3. package/dist/archive/manager.js +46 -1
  4. package/dist/archive/manager.js.map +1 -1
  5. package/dist/archive/search.d.ts +5 -0
  6. package/dist/archive/search.d.ts.map +1 -1
  7. package/dist/archive/search.js +15 -0
  8. package/dist/archive/search.js.map +1 -1
  9. package/dist/config.d.ts +1 -1
  10. package/dist/config.js +1 -1
  11. package/dist/config.js.map +1 -1
  12. package/dist/forum/client.d.ts +32 -1
  13. package/dist/forum/client.d.ts.map +1 -1
  14. package/dist/forum/client.js +136 -5
  15. package/dist/forum/client.js.map +1 -1
  16. package/dist/github/client.d.ts +3 -1
  17. package/dist/github/client.d.ts.map +1 -1
  18. package/dist/github/client.js +44 -9
  19. package/dist/github/client.js.map +1 -1
  20. package/dist/github/types.d.ts +6 -0
  21. package/dist/github/types.d.ts.map +1 -1
  22. package/dist/repoContent/index.d.ts +2 -0
  23. package/dist/repoContent/index.d.ts.map +1 -1
  24. package/dist/repoContent/index.js +11 -6
  25. package/dist/repoContent/index.js.map +1 -1
  26. package/dist/searchCorpus/index.d.ts +3 -0
  27. package/dist/searchCorpus/index.d.ts.map +1 -1
  28. package/dist/searchCorpus/index.js +20 -11
  29. package/dist/searchCorpus/index.js.map +1 -1
  30. package/dist/symbolLookup/index.js +3 -3
  31. package/dist/symbolLookup/index.js.map +1 -1
  32. package/dist/tools/defineTool.d.ts +18 -0
  33. package/dist/tools/defineTool.d.ts.map +1 -0
  34. package/dist/tools/defineTool.js +8 -0
  35. package/dist/tools/defineTool.js.map +1 -0
  36. package/dist/tools/findMneSymbol.d.ts +6 -10
  37. package/dist/tools/findMneSymbol.d.ts.map +1 -1
  38. package/dist/tools/findMneSymbol.js +10 -15
  39. package/dist/tools/findMneSymbol.js.map +1 -1
  40. package/dist/tools/getMneChangelog.d.ts +6 -10
  41. package/dist/tools/getMneChangelog.d.ts.map +1 -1
  42. package/dist/tools/getMneChangelog.js +9 -12
  43. package/dist/tools/getMneChangelog.js.map +1 -1
  44. package/dist/tools/getMneDoc.d.ts +6 -10
  45. package/dist/tools/getMneDoc.d.ts.map +1 -1
  46. package/dist/tools/getMneDoc.js +21 -27
  47. package/dist/tools/getMneDoc.js.map +1 -1
  48. package/dist/tools/getMneExample.d.ts +12 -12
  49. package/dist/tools/getMneExample.d.ts.map +1 -1
  50. package/dist/tools/getMneExample.js +32 -18
  51. package/dist/tools/getMneExample.js.map +1 -1
  52. package/dist/tools/getMneFile.d.ts +7 -11
  53. package/dist/tools/getMneFile.d.ts.map +1 -1
  54. package/dist/tools/getMneFile.js +131 -40
  55. package/dist/tools/getMneFile.js.map +1 -1
  56. package/dist/tools/getMneForumTopic.d.ts +8 -37
  57. package/dist/tools/getMneForumTopic.d.ts.map +1 -1
  58. package/dist/tools/getMneForumTopic.js +8 -122
  59. package/dist/tools/getMneForumTopic.js.map +1 -1
  60. package/dist/tools/getMneIssue.d.ts +8 -10
  61. package/dist/tools/getMneIssue.d.ts.map +1 -1
  62. package/dist/tools/getMneIssue.js +16 -10
  63. package/dist/tools/getMneIssue.js.map +1 -1
  64. package/dist/tools/getMneIssueComments.d.ts +10 -10
  65. package/dist/tools/getMneIssueComments.d.ts.map +1 -1
  66. package/dist/tools/getMneIssueComments.js +30 -13
  67. package/dist/tools/getMneIssueComments.js.map +1 -1
  68. package/dist/tools/getRelatedSymbols.d.ts +7 -11
  69. package/dist/tools/getRelatedSymbols.d.ts.map +1 -1
  70. package/dist/tools/getRelatedSymbols.js +44 -18
  71. package/dist/tools/getRelatedSymbols.js.map +1 -1
  72. package/dist/tools/getSymbolReferences.d.ts +7 -10
  73. package/dist/tools/getSymbolReferences.d.ts.map +1 -1
  74. package/dist/tools/getSymbolReferences.js +28 -16
  75. package/dist/tools/getSymbolReferences.js.map +1 -1
  76. package/dist/tools/listMneVersions.d.ts +6 -63
  77. package/dist/tools/listMneVersions.d.ts.map +1 -1
  78. package/dist/tools/listMneVersions.js +13 -15
  79. package/dist/tools/listMneVersions.js.map +1 -1
  80. package/dist/tools/lookupMneError.d.ts +14 -10
  81. package/dist/tools/lookupMneError.d.ts.map +1 -1
  82. package/dist/tools/lookupMneError.js +69 -14
  83. package/dist/tools/lookupMneError.js.map +1 -1
  84. package/dist/tools/requestBudget.d.ts +12 -0
  85. package/dist/tools/requestBudget.d.ts.map +1 -0
  86. package/dist/tools/requestBudget.js +36 -0
  87. package/dist/tools/requestBudget.js.map +1 -0
  88. package/dist/tools/searchMneDocs.d.ts +5 -9
  89. package/dist/tools/searchMneDocs.d.ts.map +1 -1
  90. package/dist/tools/searchMneDocs.js +162 -22
  91. package/dist/tools/searchMneDocs.js.map +1 -1
  92. package/dist/tools/searchMneForum.d.ts +9 -10
  93. package/dist/tools/searchMneForum.d.ts.map +1 -1
  94. package/dist/tools/searchMneForum.js +21 -12
  95. package/dist/tools/searchMneForum.js.map +1 -1
  96. package/dist/tools/searchMneIssues.d.ts +10 -11
  97. package/dist/tools/searchMneIssues.d.ts.map +1 -1
  98. package/dist/tools/searchMneIssues.js +28 -24
  99. package/dist/tools/searchMneIssues.js.map +1 -1
  100. package/dist/types.d.ts +51 -0
  101. package/dist/types.d.ts.map +1 -1
  102. package/dist/utils/searchRanking.d.ts +18 -0
  103. package/dist/utils/searchRanking.d.ts.map +1 -0
  104. package/dist/utils/searchRanking.js +63 -0
  105. package/dist/utils/searchRanking.js.map +1 -0
  106. package/package.json +1 -1
  107. package/python/ast_extractor.py +3 -0
@@ -1 +1 @@
1
- {"version":3,"file":"getMneForumTopic.js","sourceRoot":"","sources":["../../src/tools/getMneForumTopic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getMneForumTopic.js","sourceRoot":"","sources":["../../src/tools/getMneForumTopic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IACxI,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC/G,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,+CAA+C,CAAC;CAC5I,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACjC,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EAAE,oIAAoI;IACjJ,YAAY,EAAE,4BAA4B;IAC1C,WAAW,EAAE,0BAA0B;CAC1C,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,MAAe,EACf,OAAoB;IAEpB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,4BAA4B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3F,OAAO,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,CAAC"}
@@ -1,23 +1,21 @@
1
1
  import { z } from 'zod';
2
- import { ToolContext } from '../types.js';
2
+ import { RequestBudgetSummary, ToolContext } from '../types.js';
3
3
  import { GitHubIssueDetail } from '../github/types.js';
4
4
  export declare const definition: {
5
- name: string;
6
- title: string;
7
- description: string;
8
5
  inputSchema: {
9
6
  issueNumber: z.ZodNumber;
7
+ brief: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
10
8
  package: z.ZodOptional<z.ZodEnum<[string, ...string[]]>>;
11
9
  };
12
- annotations: {
13
- readonly readOnlyHint: true;
14
- readonly destructiveHint: false;
15
- readonly idempotentHint: true;
16
- readonly openWorldHint: true;
17
- };
10
+ name: string;
11
+ title: string;
12
+ description: string;
13
+ annotations?: object;
14
+ outputSchema?: z.ZodTypeAny;
18
15
  };
19
16
  export interface GetMneIssueResult extends GitHubIssueDetail {
20
17
  package: string;
18
+ requestBudget?: RequestBudgetSummary;
21
19
  }
22
20
  export declare function getMneIssue(params: unknown, context: ToolContext): Promise<GetMneIssueResult>;
23
21
  export { getMneIssue as handler };
@@ -1 +1 @@
1
- {"version":3,"file":"getMneIssue.d.ts","sourceRoot":"","sources":["../../src/tools/getMneIssue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAY,WAAW,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AASvD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;CAStB,CAAC;AAEF,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IACxD,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,WAAW,CAC7B,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAgB5B;AAED,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"getMneIssue.d.ts","sourceRoot":"","sources":["../../src/tools/getMneIssue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAY,oBAAoB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAYvD,eAAO,MAAM,UAAU;;;;;;;;;;;CAMrB,CAAC;AAEH,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACxC;AAED,wBAAsB,WAAW,CAC7B,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAuB5B;AAED,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,CAAC"}
@@ -1,23 +1,23 @@
1
1
  import { z } from 'zod';
2
2
  import { McpError } from '../types.js';
3
- import { MNE_PACKAGE_NAMES, packageSchema } from '../config.js';
3
+ import { packageSchema } from '../config.js';
4
4
  import { READ_ONLY_TOOL_ANNOTATIONS } from './annotations.js';
5
+ import { defineTool } from './defineTool.js';
6
+ import { buildGithubRequestBudget } from './requestBudget.js';
5
7
  const GetMneIssueParamsSchema = z.object({
6
- issueNumber: z.number().int().positive('Issue number must be a positive integer'),
7
- package: z.enum(MNE_PACKAGE_NAMES).optional(),
8
+ issueNumber: z.number().int().positive('Issue number must be a positive integer').describe('GitHub issue number, e.g. 12345'),
9
+ brief: z.boolean().optional().default(false).describe('Return a shorter body preview (default: false)'),
10
+ package: packageSchema,
8
11
  });
9
- export const definition = {
12
+ export const definition = defineTool({
10
13
  name: 'get_mne_issue',
11
14
  title: 'Get MNE Issue',
12
15
  description: 'Get full details of a specific GitHub issue by number. Use after search_mne_issues to read the complete issue description and context.',
13
- inputSchema: {
14
- issueNumber: z.number().int().positive().describe('GitHub issue number, e.g. 12345'),
15
- package: packageSchema,
16
- },
16
+ paramsSchema: GetMneIssueParamsSchema,
17
17
  annotations: READ_ONLY_TOOL_ANNOTATIONS,
18
- };
18
+ });
19
19
  export async function getMneIssue(params, context) {
20
- const { issueNumber, package: packageName } = GetMneIssueParamsSchema.parse(params);
20
+ const { issueNumber, brief, package: packageName } = GetMneIssueParamsSchema.parse(params);
21
21
  const issue = await context.github.getIssue(issueNumber, packageName);
22
22
  if (!issue) {
23
23
  throw new McpError('ISSUE_NOT_FOUND', `Issue #${issueNumber} not found`, {
@@ -25,9 +25,15 @@ export async function getMneIssue(params, context) {
25
25
  suggestion: 'Use search_mne_issues to find valid issue numbers.',
26
26
  });
27
27
  }
28
+ const maxBodyLength = 400;
29
+ const bodyTruncated = brief && issue.body.length > maxBodyLength;
28
30
  return {
29
31
  ...issue,
32
+ type: issue.type || 'issue',
33
+ body: bodyTruncated ? `${issue.body.slice(0, maxBodyLength)}...` : issue.body,
34
+ bodyTruncated,
30
35
  package: packageName || 'mne-python',
36
+ requestBudget: buildGithubRequestBudget(context.github, ['core']),
31
37
  };
32
38
  }
33
39
  export { getMneIssue as handler };
@@ -1 +1 @@
1
- {"version":3,"file":"getMneIssue.js","sourceRoot":"","sources":["../../src/tools/getMneIssue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAe,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACjF,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,iBAA0C,CAAC,CAAC,QAAQ,EAAE;CACzE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,eAAe;IACtB,WAAW,EAAE,wIAAwI;IACrJ,WAAW,EAAE;QACT,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACpF,OAAO,EAAE,aAAa;KACzB;IACD,WAAW,EAAE,0BAA0B;CAC1C,CAAC;AAMF,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,MAAe,EACf,OAAoB;IAEpB,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEpF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAEtE,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,UAAU,WAAW,YAAY,EAAE;YACrE,OAAO,EAAE,YAAY,WAAW,IAAI,YAAY,EAAE;YAClD,UAAU,EAAE,oDAAoD;SACnE,CAAC,CAAC;IACP,CAAC;IAED,OAAO;QACH,GAAG,KAAK;QACR,OAAO,EAAE,WAAW,IAAI,YAAY;KACvC,CAAC;AACN,CAAC;AAED,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"getMneIssue.js","sourceRoot":"","sources":["../../src/tools/getMneIssue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAqC,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC7H,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,gDAAgD,CAAC;IACvG,OAAO,EAAE,aAAa;CACzB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACjC,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,eAAe;IACtB,WAAW,EAAE,wIAAwI;IACrJ,YAAY,EAAE,uBAAuB;IACrC,WAAW,EAAE,0BAA0B;CAC1C,CAAC,CAAC;AAOH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,MAAe,EACf,OAAoB;IAEpB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE3F,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAEtE,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,UAAU,WAAW,YAAY,EAAE;YACrE,OAAO,EAAE,YAAY,WAAW,IAAI,YAAY,EAAE;YAClD,UAAU,EAAE,oDAAoD;SACnE,CAAC,CAAC;IACP,CAAC;IAED,MAAM,aAAa,GAAG,GAAG,CAAC;IAC1B,MAAM,aAAa,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;IAEjE,OAAO;QACH,GAAG,KAAK;QACR,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,OAAO;QAC3B,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;QAC7E,aAAa;QACb,OAAO,EAAE,WAAW,IAAI,YAAY;QACpC,aAAa,EAAE,wBAAwB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;KACpE,CAAC;AACN,CAAC;AAED,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,CAAC"}
@@ -1,26 +1,26 @@
1
1
  import { z } from 'zod';
2
- import { ToolContext } from '../types.js';
2
+ import { RequestBudgetSummary, ToolContext } from '../types.js';
3
3
  import { GitHubIssueComment } from '../github/types.js';
4
4
  export declare const definition: {
5
- name: string;
6
- title: string;
7
- description: string;
8
5
  inputSchema: {
9
6
  issueNumber: z.ZodNumber;
7
+ maxComments: z.ZodOptional<z.ZodNumber>;
8
+ maxContentLength: z.ZodOptional<z.ZodNumber>;
10
9
  package: z.ZodOptional<z.ZodEnum<[string, ...string[]]>>;
11
10
  };
12
- annotations: {
13
- readonly readOnlyHint: true;
14
- readonly destructiveHint: false;
15
- readonly idempotentHint: true;
16
- readonly openWorldHint: true;
17
- };
11
+ name: string;
12
+ title: string;
13
+ description: string;
14
+ annotations?: object;
15
+ outputSchema?: z.ZodTypeAny;
18
16
  };
19
17
  export interface GetMneIssueCommentsResult {
20
18
  issueNumber: number;
21
19
  package: string;
22
20
  comments: GitHubIssueComment[];
23
21
  totalComments: number;
22
+ truncated: boolean;
23
+ requestBudget?: RequestBudgetSummary;
24
24
  }
25
25
  export declare function getMneIssueComments(params: unknown, context: ToolContext): Promise<GetMneIssueCommentsResult>;
26
26
  export { getMneIssueComments as handler };
@@ -1 +1 @@
1
- {"version":3,"file":"getMneIssueComments.d.ts","sourceRoot":"","sources":["../../src/tools/getMneIssueComments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAY,WAAW,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AASxD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;CAStB,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,yBAAyB,CAAC,CAoBpC;AAED,OAAO,EAAE,mBAAmB,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"getMneIssueComments.d.ts","sourceRoot":"","sources":["../../src/tools/getMneIssueComments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAY,oBAAoB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAaxD,eAAO,MAAM,UAAU;;;;;;;;;;;;CAMrB,CAAC;AAEH,MAAM,WAAW,yBAAyB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACxC;AAED,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,yBAAyB,CAAC,CAoCpC;AAED,OAAO,EAAE,mBAAmB,IAAI,OAAO,EAAE,CAAC"}
@@ -1,23 +1,24 @@
1
1
  import { z } from 'zod';
2
2
  import { McpError } from '../types.js';
3
- import { MNE_PACKAGE_NAMES, packageSchema } from '../config.js';
3
+ import { packageSchema } from '../config.js';
4
4
  import { READ_ONLY_TOOL_ANNOTATIONS } from './annotations.js';
5
+ import { defineTool } from './defineTool.js';
6
+ import { buildGithubRequestBudget } from './requestBudget.js';
5
7
  const GetMneIssueCommentsParamsSchema = z.object({
6
- issueNumber: z.number().int().positive('Issue number must be a positive integer'),
7
- package: z.enum(MNE_PACKAGE_NAMES).optional(),
8
+ issueNumber: z.number().int().positive('Issue number must be a positive integer').describe('GitHub issue number'),
9
+ maxComments: z.number().int().min(1).max(500).optional().describe('Max comments to return'),
10
+ maxContentLength: z.number().int().min(20).max(20000).optional().describe('Truncate each comment body to N chars'),
11
+ package: packageSchema,
8
12
  });
9
- export const definition = {
13
+ export const definition = defineTool({
10
14
  name: 'get_mne_issue_comments',
11
15
  title: 'Get MNE Issue Comments',
12
16
  description: 'Get all comments on a GitHub issue. Use to see the discussion, workarounds, and resolution for a bug or feature request.',
13
- inputSchema: {
14
- issueNumber: z.number().int().positive().describe('GitHub issue number'),
15
- package: packageSchema,
16
- },
17
+ paramsSchema: GetMneIssueCommentsParamsSchema,
17
18
  annotations: READ_ONLY_TOOL_ANNOTATIONS,
18
- };
19
+ });
19
20
  export async function getMneIssueComments(params, context) {
20
- const { issueNumber, package: packageName } = GetMneIssueCommentsParamsSchema.parse(params);
21
+ const { issueNumber, maxComments, maxContentLength, package: packageName } = GetMneIssueCommentsParamsSchema.parse(params);
21
22
  // Verify issue exists first
22
23
  const issue = await context.github.getIssue(issueNumber, packageName);
23
24
  if (!issue) {
@@ -26,12 +27,28 @@ export async function getMneIssueComments(params, context) {
26
27
  suggestion: 'Use search_mne_issues to find valid issue numbers.',
27
28
  });
28
29
  }
29
- const comments = await context.github.getIssueComments(issueNumber, packageName);
30
+ const comments = await context.github.getIssueComments(issueNumber, packageName, { maxComments });
31
+ const totalComments = issue.commentsCount ?? comments.length;
32
+ const limitedComments = maxComments ? comments.slice(0, maxComments) : comments;
33
+ let truncated = maxComments ? totalComments > limitedComments.length : false;
34
+ const normalizedComments = limitedComments.map(comment => {
35
+ if (!maxContentLength || comment.body.length <= maxContentLength) {
36
+ return { ...comment, bodyTruncated: false };
37
+ }
38
+ truncated = true;
39
+ return {
40
+ ...comment,
41
+ body: `${comment.body.slice(0, maxContentLength)}...`,
42
+ bodyTruncated: true,
43
+ };
44
+ });
30
45
  return {
31
46
  issueNumber,
32
47
  package: packageName || 'mne-python',
33
- comments,
34
- totalComments: comments.length,
48
+ comments: normalizedComments,
49
+ totalComments,
50
+ truncated,
51
+ requestBudget: buildGithubRequestBudget(context.github, ['core']),
35
52
  };
36
53
  }
37
54
  export { getMneIssueComments as handler };
@@ -1 +1 @@
1
- {"version":3,"file":"getMneIssueComments.js","sourceRoot":"","sources":["../../src/tools/getMneIssueComments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAe,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACjF,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,iBAA0C,CAAC,CAAC,QAAQ,EAAE;CACzE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,wBAAwB;IAC/B,WAAW,EAAE,0HAA0H;IACvI,WAAW,EAAE;QACT,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACxE,OAAO,EAAE,aAAa;KACzB;IACD,WAAW,EAAE,0BAA0B;CAC1C,CAAC;AASF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,MAAe,EACf,OAAoB;IAEpB,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,+BAA+B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE5F,4BAA4B;IAC5B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACtE,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,UAAU,WAAW,YAAY,EAAE;YACrE,OAAO,EAAE,YAAY,WAAW,IAAI,YAAY,EAAE;YAClD,UAAU,EAAE,oDAAoD;SACnE,CAAC,CAAC;IACP,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAEjF,OAAO;QACH,WAAW;QACX,OAAO,EAAE,WAAW,IAAI,YAAY;QACpC,QAAQ;QACR,aAAa,EAAE,QAAQ,CAAC,MAAM;KACjC,CAAC;AACN,CAAC;AAED,OAAO,EAAE,mBAAmB,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"getMneIssueComments.js","sourceRoot":"","sources":["../../src/tools/getMneIssueComments.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,17 @@
1
1
  import { z } from 'zod';
2
2
  import { ToolContext } from '../types.js';
3
3
  export declare const definition: {
4
- name: string;
5
- title: string;
6
- description: string;
7
4
  inputSchema: {
8
5
  symbol: z.ZodString;
9
6
  version: z.ZodOptional<z.ZodString>;
10
- maxResults: z.ZodOptional<z.ZodNumber>;
7
+ maxResults: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
11
8
  package: z.ZodOptional<z.ZodEnum<[string, ...string[]]>>;
12
9
  };
13
- annotations: {
14
- readonly readOnlyHint: true;
15
- readonly destructiveHint: false;
16
- readonly idempotentHint: true;
17
- readonly openWorldHint: true;
18
- };
10
+ name: string;
11
+ title: string;
12
+ description: string;
13
+ annotations?: object;
14
+ outputSchema?: z.ZodTypeAny;
19
15
  };
20
16
  /**
21
17
  * A related symbol with relationship type.
@@ -24,7 +20,7 @@ export interface RelatedSymbol {
24
20
  name: string;
25
21
  qualifiedName: string;
26
22
  kind: string;
27
- relationship: 'same_module' | 'similar_name' | 'see_also';
23
+ relationship: 'method' | 'same_module' | 'similar_name' | 'see_also';
28
24
  description?: string;
29
25
  sourceUrl: string;
30
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getRelatedSymbols.d.ts","sourceRoot":"","sources":["../../src/tools/getRelatedSymbols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAY,MAAM,aAAa,CAAC;AAgBpD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;CAetB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,aAAa,GAAG,cAAc,GAAG,UAAU,CAAC;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,aAAa,EAAE,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACnC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,uBAAuB,CAAC,CAiIlC;AAED,OAAO,EAAE,iBAAiB,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"getRelatedSymbols.d.ts","sourceRoot":"","sources":["../../src/tools/getRelatedSymbols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAY,MAAM,aAAa,CAAC;AAiBpD,eAAO,MAAM,UAAU;;;;;;;;;;;;CAUrB,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,QAAQ,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,CAAC;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,aAAa,EAAE,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACnC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,uBAAuB,CAAC,CAgKlC;AAED,OAAO,EAAE,iBAAiB,IAAI,OAAO,EAAE,CAAC"}
@@ -1,32 +1,28 @@
1
1
  import { z } from 'zod';
2
2
  import { McpError } from '../types.js';
3
3
  import { getLogger } from '../utils/logger.js';
4
- import { MNE_PACKAGE_NAMES, packageSchema } from '../config.js';
4
+ import { packageSchema } from '../config.js';
5
5
  import { getMneDoc } from './getMneDoc.js';
6
6
  import { filePathToModule } from '../utils/helpers.js';
7
7
  import { READ_ONLY_TOOL_ANNOTATIONS } from './annotations.js';
8
+ import { defineTool } from './defineTool.js';
8
9
  const logger = getLogger();
9
10
  const GetRelatedSymbolsParamsSchema = z.object({
10
- symbol: z.string().trim().min(1, 'Symbol is required'),
11
- version: z.string().optional(),
12
- maxResults: z.number().int().min(1).max(50).optional().default(15),
13
- package: z.enum(MNE_PACKAGE_NAMES).optional(),
11
+ symbol: z.string().trim().min(1, 'Symbol is required').describe('Fully-qualified name (no spaces), e.g. "mne.Epochs"'),
12
+ version: z.string().optional().describe('Version tag (default: latest)'),
13
+ maxResults: z.number().int().min(1).max(50).optional().default(15).describe('Max results (default: 15)'),
14
+ package: packageSchema,
14
15
  });
15
- export const definition = {
16
+ export const definition = defineTool({
16
17
  name: 'get_related_symbols',
17
18
  title: 'Get Related Symbols',
18
19
  description: 'Find symbols related to a given symbol (same module, "See Also", or similar names). ' +
19
20
  'Input must be a fully-qualified name like "mne.Epochs". ' +
20
21
  'If you only know part of the name, use find_mne_symbol. ' +
21
22
  'If you have a natural-language question, use search_mne_docs.',
22
- inputSchema: {
23
- symbol: z.string().describe('Fully-qualified name (no spaces), e.g. "mne.Epochs"'),
24
- version: z.string().optional().describe('Version tag (default: latest)'),
25
- maxResults: z.number().optional().describe('Max results (default: 15)'),
26
- package: packageSchema,
27
- },
23
+ paramsSchema: GetRelatedSymbolsParamsSchema,
28
24
  annotations: READ_ONLY_TOOL_ANNOTATIONS,
29
- };
25
+ });
30
26
  /**
31
27
  * Finds symbols related to the given symbol.
32
28
  * Includes: same module, See Also references, and similarly named symbols.
@@ -45,6 +41,11 @@ export async function getRelatedSymbols(params, context) {
45
41
  const resolvedVersion = target.version;
46
42
  logger.debug(`Finding related symbols for: ${symbol}`);
47
43
  const related = [];
44
+ const addRelated = (item) => {
45
+ if (related.some(existing => existing.qualifiedName === item.qualifiedName))
46
+ return;
47
+ related.push(item);
48
+ };
48
49
  // 1. Get the symbol's documentation (includes See Also)
49
50
  // Use brief: false to get full result with filePath, seeAlso, etc.
50
51
  let doc;
@@ -62,11 +63,24 @@ export async function getRelatedSymbols(params, context) {
62
63
  details: error instanceof Error ? error.message : undefined,
63
64
  });
64
65
  }
66
+ const publicQualifiedName = doc.publicQualifiedName || symbol;
67
+ if (doc.kind === 'class' && doc.methods && doc.methods.length > 0) {
68
+ for (const method of doc.methods.slice(0, Math.min(maxResults, 8))) {
69
+ addRelated({
70
+ name: method.name,
71
+ qualifiedName: `${publicQualifiedName}.${method.name}`,
72
+ kind: 'method',
73
+ relationship: 'method',
74
+ description: method.docstring?.split('\n')[0]?.slice(0, 100),
75
+ sourceUrl: doc.docsUrl,
76
+ });
77
+ }
78
+ }
65
79
  // Add See Also references
66
80
  if (doc.seeAlso && doc.seeAlso.length > 0) {
67
81
  for (const ref of doc.seeAlso) {
68
82
  const qualifiedName = ref.startsWith(`${rootModule}.`) ? ref : `${rootModule}.${ref}`;
69
- related.push({
83
+ addRelated({
70
84
  name: ref.split('.').pop() || ref,
71
85
  qualifiedName,
72
86
  kind: 'unknown',
@@ -88,11 +102,13 @@ export async function getRelatedSymbols(params, context) {
88
102
  continue;
89
103
  if (s.name.startsWith('_'))
90
104
  continue;
105
+ if (doc.kind === 'class' && doc.methods?.some(method => method.name === s.name))
106
+ continue;
91
107
  // Limit same-module symbols
92
108
  const sameModuleCount = related.filter(r => r.relationship === 'same_module').length;
93
109
  if (sameModuleCount >= 10)
94
110
  break;
95
- related.push({
111
+ addRelated({
96
112
  name: s.name,
97
113
  qualifiedName: s.qualifiedName,
98
114
  kind: s.kind,
@@ -119,9 +135,7 @@ export async function getRelatedSymbols(params, context) {
119
135
  if (item.path.includes('/tests/'))
120
136
  continue;
121
137
  const qualifiedName = filePathToModule(item.path);
122
- if (related.some(r => r.qualifiedName === qualifiedName))
123
- continue;
124
- related.push({
138
+ addRelated({
125
139
  name: item.name.replace(/\.py$/, ''),
126
140
  qualifiedName,
127
141
  kind: 'module',
@@ -146,6 +160,18 @@ export async function getRelatedSymbols(params, context) {
146
160
  seen.add(r.qualifiedName);
147
161
  return true;
148
162
  });
163
+ const relationshipOrder = {
164
+ method: 0,
165
+ see_also: 1,
166
+ same_module: 2,
167
+ similar_name: 3,
168
+ };
169
+ deduplicated.sort((a, b) => {
170
+ const byRelationship = relationshipOrder[a.relationship] - relationshipOrder[b.relationship];
171
+ if (byRelationship !== 0)
172
+ return byRelationship;
173
+ return 0;
174
+ });
149
175
  return {
150
176
  symbol,
151
177
  version: resolvedVersion,
@@ -1 +1 @@
1
- {"version":3,"file":"getRelatedSymbols.js","sourceRoot":"","sources":["../../src/tools/getRelatedSymbols.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getRelatedSymbols.js","sourceRoot":"","sources":["../../src/tools/getRelatedSymbols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAe,QAAQ,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAgC,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAE3B,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IACtH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACxE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACxG,OAAO,EAAE,aAAa;CACzB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACjC,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EACP,sFAAsF;QACtF,0DAA0D;QAC1D,0DAA0D;QAC1D,+DAA+D;IACnE,YAAY,EAAE,6BAA6B;IAC3C,WAAW,EAAE,0BAA0B;CAC1C,CAAC,CAAC;AAwBH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,MAAe,EACf,OAAoB;IAEpB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,6BAA6B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE1G,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,qBAAqB,MAAM,EAAE,EAAE;YAClE,UAAU,EAAE,4GAA4G;SAC3H,CAAC,CAAC;IACP,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IACjF,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;IAC/B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACvC,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjF,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,CAAC,IAAmB,EAAE,EAAE;QACvC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa,CAAC;YAAE,OAAO;QACpF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,wDAAwD;IACxD,mEAAmE;IACnE,IAAI,GAAiC,CAAC;IACtC,IAAI,CAAC;QACD,GAAG,GAAG,MAAM,SAAS,CAAC;YAClB,MAAM;YACN,OAAO,EAAE,eAAe;YACxB,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,GAAG;SACf,EAAE,OAAO,CAAiC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,qBAAqB,MAAM,EAAE,EAAE;YAClE,UAAU,EAAE,2DAA2D;YACvE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;SAC9D,CAAC,CAAC;IACP,CAAC;IAED,MAAM,mBAAmB,GAAG,GAAG,CAAC,mBAAmB,IAAI,MAAM,CAAC;IAE9D,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,UAAU,CAAC;gBACP,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,aAAa,EAAE,GAAG,mBAAmB,IAAI,MAAM,CAAC,IAAI,EAAE;gBACtD,IAAI,EAAE,QAAQ;gBACd,YAAY,EAAE,QAAQ;gBACtB,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC5D,SAAS,EAAE,GAAG,CAAC,OAAO;aACzB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,0BAA0B;IAC1B,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,GAAG,EAAE,CAAC;YACtF,UAAU,CAAC;gBACP,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG;gBACjC,aAAa;gBACb,IAAI,EAAE,SAAS;gBACf,YAAY,EAAE,UAAU;gBACxB,SAAS,EAAE,GAAG,WAAW,CAAC,OAAO,aAAa,aAAa,OAAO;aACrE,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACf,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACpF,IAAI,QAAQ,EAAE,CAAC;gBACX,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAClD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;gBAEjF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACtB,+CAA+C;oBAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM;wBAAE,SAAS;oBACpC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;wBAAE,SAAS;oBACrC,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;wBAAE,SAAS;oBAE1F,4BAA4B;oBAC5B,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;oBACrF,IAAI,eAAe,IAAI,EAAE;wBAAE,MAAM;oBAEjC,UAAU,CAAC;wBACP,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,aAAa,EAAE,CAAC,CAAC,aAAa;wBAC9B,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,YAAY,EAAE,aAAa;wBAC3B,WAAW,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;wBACvD,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;qBAC3E,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;IAED,kFAAkF;IAClF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC;gBACD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,CAClD,cAAc,SAAS,gBAAgB,EACvC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,EAAE,CAC9D,CAAC;gBAEF,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;oBACtC,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,QAAQ;wBAAE,SAAS;oBACzC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;wBAAE,SAAS;oBAE5C,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAElD,UAAU,CAAC;wBACP,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;wBACpC,aAAa;wBACb,IAAI,EAAE,QAAQ;wBACd,YAAY,EAAE,cAAc;wBAC5B,WAAW,EAAE,qBAAqB,SAAS,GAAG;wBAC9C,SAAS,EAAE,IAAI,CAAC,QAAQ;qBAC3B,CAAC,CAAC;oBAEH,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,cAAc,CAAC,CAAC,MAAM,IAAI,CAAC;wBAAE,MAAM;gBAClF,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACnE,CAAC;QACL,CAAC;IACL,CAAC;IAED,gCAAgC;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACpC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAkD;QACrE,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;KAClB,CAAC;IACF,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,cAAc,GAAG,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC7F,IAAI,cAAc,KAAK,CAAC;YAAE,OAAO,cAAc,CAAC;QAChD,OAAO,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,OAAO;QACH,MAAM;QACN,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,GAAG;QACZ,cAAc,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;KACpD,CAAC;AACN,CAAC;AAED,OAAO,EAAE,iBAAiB,IAAI,OAAO,EAAE,CAAC"}
@@ -2,21 +2,17 @@ import { z } from 'zod';
2
2
  import { ToolContext } from '../types.js';
3
3
  import { CrossReferenceResult } from '../parser/types.js';
4
4
  export declare const definition: {
5
- name: string;
6
- title: string;
7
- description: string;
8
5
  inputSchema: {
9
6
  symbol: z.ZodString;
10
7
  version: z.ZodOptional<z.ZodString>;
11
- crossFile: z.ZodOptional<z.ZodBoolean>;
8
+ crossFile: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
12
9
  package: z.ZodOptional<z.ZodEnum<[string, ...string[]]>>;
13
10
  };
14
- annotations: {
15
- readonly readOnlyHint: true;
16
- readonly destructiveHint: false;
17
- readonly idempotentHint: true;
18
- readonly openWorldHint: true;
19
- };
11
+ name: string;
12
+ title: string;
13
+ description: string;
14
+ annotations?: object;
15
+ outputSchema?: z.ZodTypeAny;
20
16
  };
21
17
  export interface CrossFileRef {
22
18
  name: string;
@@ -30,6 +26,7 @@ export interface SymbolReferencesResult extends CrossReferenceResult {
30
26
  sourceUrl: string;
31
27
  scope: string;
32
28
  note: string;
29
+ referenceCompleteness: 'local' | 'cross-file-best-effort';
33
30
  crossFileCallers?: CrossFileRef[];
34
31
  }
35
32
  export declare function getSymbolReferences(params: unknown, context: ToolContext): Promise<SymbolReferencesResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"getSymbolReferences.d.ts","sourceRoot":"","sources":["../../src/tools/getSymbolReferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAY,WAAW,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAY1D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;CAetB,CAAC;AAEF,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAuB,SAAQ,oBAAoB;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC;CACrC;AAED,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,sBAAsB,CAAC,CAwFjC;AAED,OAAO,EAAE,mBAAmB,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"getSymbolReferences.d.ts","sourceRoot":"","sources":["../../src/tools/getSymbolReferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAY,WAAW,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAa1D,eAAO,MAAM,UAAU;;;;;;;;;;;;CAUrB,CAAC;AAEH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAuB,SAAQ,oBAAoB;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB,EAAE,OAAO,GAAG,wBAAwB,CAAC;IAC1D,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC;CACrC;AAcD,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,sBAAsB,CAAC,CA2FjC;AAED,OAAO,EAAE,mBAAmB,IAAI,OAAO,EAAE,CAAC"}
@@ -1,30 +1,38 @@
1
1
  import { z } from 'zod';
2
2
  import { McpError } from '../types.js';
3
- import { MNE_PACKAGE_NAMES, packageSchema } from '../config.js';
3
+ import { packageSchema } from '../config.js';
4
4
  import { isTestFile, escapeRegExp } from '../utils/helpers.js';
5
5
  import { getArchive, searchInArchive } from '../archive/search.js';
6
6
  import { READ_ONLY_TOOL_ANNOTATIONS } from './annotations.js';
7
+ import { defineTool } from './defineTool.js';
7
8
  const GetSymbolReferencesParamsSchema = z.object({
8
- symbol: z.string().trim().min(1, 'Symbol is required'),
9
- version: z.string().optional(),
10
- crossFile: z.boolean().optional().default(false),
11
- package: z.enum(MNE_PACKAGE_NAMES).optional(),
9
+ symbol: z.string().trim().min(1, 'Symbol is required').describe('Fully-qualified name (no spaces), e.g. "mne.filter.filter_data"'),
10
+ version: z.string().optional().describe('Version tag (default: latest)'),
11
+ crossFile: z.boolean().optional().default(false).describe('Also search for callers in other files via archive/GitHub code search (default: false; slower and costs extra API calls)'),
12
+ package: packageSchema,
12
13
  });
13
- export const definition = {
14
+ export const definition = defineTool({
14
15
  name: 'get_symbol_references',
15
16
  title: 'Get Symbol References',
16
17
  description: 'Analyze code references for a symbol: what it calls (callees) and what calls it (callers). ' +
17
18
  'Input must be a fully-qualified name like "mne.filter.filter_data". ' +
18
19
  'Set crossFile=true to search callers in other files (slower: uses GitHub code search). ' +
19
20
  'If you have a natural-language question, use search_mne_docs.',
20
- inputSchema: {
21
- symbol: z.string().describe('Fully-qualified name (no spaces), e.g. "mne.filter.filter_data"'),
22
- version: z.string().optional().describe('Version tag (default: latest)'),
23
- crossFile: z.boolean().optional().describe('Also search for callers in other files via GitHub code search (default: false; slower and costs extra API calls)'),
24
- package: packageSchema,
25
- },
21
+ paramsSchema: GetSymbolReferencesParamsSchema,
26
22
  annotations: READ_ONLY_TOOL_ANNOTATIONS,
27
- };
23
+ });
24
+ const NOISY_CALLEE_NAMES = new Set([
25
+ 'dict', 'list', 'set', 'tuple', 'len', 'str', 'int', 'float', 'bool',
26
+ 'print', 'sum', 'min', 'max', 'sorted', 'enumerate', 'zip', 'map',
27
+ 'filter', 'range', 'next', 'iter', 'object', 'type', 'super',
28
+ ]);
29
+ function isUsefulCallee(name) {
30
+ if (NOISY_CALLEE_NAMES.has(name))
31
+ return false;
32
+ if (/\.(items|keys|values)$/.test(name))
33
+ return false;
34
+ return true;
35
+ }
28
36
  export async function getSymbolReferences(params, context) {
29
37
  const { symbol, version, crossFile, package: packageName } = GetSymbolReferencesParamsSchema.parse(params);
30
38
  if (/\s/.test(symbol)) {
@@ -36,7 +44,6 @@ export async function getSymbolReferences(params, context) {
36
44
  const pkg = target.packageName;
37
45
  const packageInfo = target.packageInfo;
38
46
  const resolvedVersion = target.version;
39
- const archive = await getArchive(context.github, context.archive, resolvedVersion, pkg);
40
47
  const definitionSource = await context.symbolLookup.resolveDefinitionSource({ symbol, target });
41
48
  if (!definitionSource) {
42
49
  throw new McpError('SYMBOL_NOT_FOUND', `Symbol not found: ${symbol}`, {
@@ -50,6 +57,7 @@ export async function getSymbolReferences(params, context) {
50
57
  const crossFileSearchPromise = (async () => {
51
58
  if (!crossFile)
52
59
  return [];
60
+ const archive = await getArchive(context.github, context.archive, resolvedVersion, pkg);
53
61
  if (archive) {
54
62
  const hits = await searchInArchive(archive, context.archive, {
55
63
  pattern: `\\b${escapeRegExp(location.resolvedName)}\\s*\\(`,
@@ -72,16 +80,20 @@ export async function getSymbolReferences(params, context) {
72
80
  }
73
81
  })();
74
82
  const [crossRefs, crossFileResults] = await Promise.all([crossRefsPromise, crossFileSearchPromise]);
83
+ const filteredCallees = crossRefs.callees.filter(callee => isUsefulCallee(callee.name));
75
84
  const result = {
76
85
  ...crossRefs,
86
+ callees: filteredCallees,
87
+ totalCallees: filteredCallees.length,
77
88
  version: resolvedVersion,
78
89
  package: pkg,
79
90
  filePath: location.filePath,
80
91
  sourceUrl: definitionSource.sourceUrl,
81
92
  scope: crossFile ? 'cross-file' : 'same-file',
93
+ referenceCompleteness: crossFile ? 'cross-file-best-effort' : 'local',
82
94
  note: location.classContext
83
- ? `Cross-references for ${location.classContext}.${location.resolvedName} method`
84
- : `Cross-references for ${location.resolvedName}`,
95
+ ? `Cross-references for ${location.classContext}.${location.resolvedName} method${crossFile ? ' (cross-file callers are best-effort)' : ''}`
96
+ : `Cross-references for ${location.resolvedName}${crossFile ? ' (cross-file callers are best-effort)' : ''}`,
85
97
  };
86
98
  // Cross-file caller search: always set crossFileCallers so clients get a consistent shape
87
99
  const crossFileCallers = [];
@@ -1 +1 @@
1
- {"version":3,"file":"getSymbolReferences.js","sourceRoot":"","sources":["../../src/tools/getSymbolReferences.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getSymbolReferences.js","sourceRoot":"","sources":["../../src/tools/getSymbolReferences.ts"],"names":[],"mappings":"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"}