@acquis-consulting/asm 1.0.12 → 1.0.14
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/README.md +31 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/docsFetch.d.ts +25 -0
- package/dist/tools/docsFetch.js +51 -0
- package/dist/tools/docsFetch.js.map +1 -0
- package/dist/tools/docsListCollections.d.ts +44 -0
- package/dist/tools/docsListCollections.js +63 -0
- package/dist/tools/docsListCollections.js.map +1 -0
- package/dist/tools/docsSearch.d.ts +42 -0
- package/dist/tools/docsSearch.js +87 -0
- package/dist/tools/docsSearch.js.map +1 -0
- package/dist/tools/executeAnonymous.js +76 -7
- package/dist/tools/executeAnonymous.js.map +1 -1
- package/dist/tools/objectSchema.d.ts +7 -0
- package/dist/tools/objectSchema.js +40 -3
- package/dist/tools/objectSchema.js.map +1 -1
- package/dist/tools/trailheadFetch.d.ts +28 -0
- package/dist/tools/trailheadFetch.js +66 -0
- package/dist/tools/trailheadFetch.js.map +1 -0
- package/dist/tools/trailheadSearch.d.ts +94 -0
- package/dist/tools/trailheadSearch.js +112 -0
- package/dist/tools/trailheadSearch.js.map +1 -0
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/relatedComponents.d.ts +9 -0
- package/dist/utils/relatedComponents.js +227 -4
- package/dist/utils/relatedComponents.js.map +1 -1
- package/dist/utils/salesforceDocsClient.d.ts +2 -0
- package/dist/utils/salesforceDocsClient.js +43 -0
- package/dist/utils/salesforceDocsClient.js.map +1 -0
- package/dist/utils/trailheadClient.d.ts +7 -0
- package/dist/utils/trailheadClient.js +35 -0
- package/dist/utils/trailheadClient.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Salesforce MCP Server
|
|
2
|
+
|
|
3
|
+
## Documentation search tools
|
|
4
|
+
|
|
5
|
+
These tools proxy the official Salesforce Labs "Salesforce Docs MCP" server
|
|
6
|
+
(https://labs.agentforce.com/docs/salesforce-docs-mcp) and require no
|
|
7
|
+
Salesforce org connection:
|
|
8
|
+
|
|
9
|
+
- `salesforce_docs_search` — search official Salesforce documentation
|
|
10
|
+
(Apex, LWC, Admin, Architect, MuleSoft, Tableau, Release Notes, and more).
|
|
11
|
+
Returns ranked excerpts with document paths.
|
|
12
|
+
- `salesforce_docs_fetch` — fetch the full content of a documentation page by
|
|
13
|
+
document path (from `salesforce_docs_search`) or URL.
|
|
14
|
+
- `salesforce_docs_list_collections` — list indexed documentation collections
|
|
15
|
+
with document/chunk counts, to discover what to pass as `collection` to
|
|
16
|
+
`salesforce_docs_search`.
|
|
17
|
+
|
|
18
|
+
## Trailhead learning content tools
|
|
19
|
+
|
|
20
|
+
These tools proxy the public Salesforce Trailhead MCP server
|
|
21
|
+
(https://mcp.trailhead.salesforce.com/mcp) and require no Salesforce org
|
|
22
|
+
connection or Trailhead login — content is public and no user progress or
|
|
23
|
+
points are collected:
|
|
24
|
+
|
|
25
|
+
- `salesforce_trailhead_search` — search Trailhead modules, projects, trails,
|
|
26
|
+
trailmixes, superbadges, badges, and Trailhead Journeys by keyword, with
|
|
27
|
+
optional role/level/type filters. Returns an `apiName` you can pass to
|
|
28
|
+
`salesforce_trailhead_fetch`.
|
|
29
|
+
- `salesforce_trailhead_fetch` — fetch the full content (markdown) of a
|
|
30
|
+
Trailhead item by `apiName` (from `salesforce_trailhead_search`). Set
|
|
31
|
+
`expand: true` to include full child-module content when fetching a trail.
|
package/dist/index.js
CHANGED
|
@@ -49,6 +49,11 @@ import { userPermissionsDescriptor } from './tools/userPermissions.js';
|
|
|
49
49
|
import { listUserPermissionsDescriptor } from './tools/listUserPermissions.js';
|
|
50
50
|
import { createRecordPageDescriptor } from './tools/createRecordPage.js';
|
|
51
51
|
import { appTabManagementDescriptor } from './tools/appTabManagement.js';
|
|
52
|
+
import { docsSearchDescriptor } from './tools/docsSearch.js';
|
|
53
|
+
import { docsFetchDescriptor } from './tools/docsFetch.js';
|
|
54
|
+
import { docsListCollectionsDescriptor } from './tools/docsListCollections.js';
|
|
55
|
+
import { trailheadSearchDescriptor } from './tools/trailheadSearch.js';
|
|
56
|
+
import { trailheadFetchDescriptor } from './tools/trailheadFetch.js';
|
|
52
57
|
const DIST_DIR = import.meta.filename?.endsWith('.ts')
|
|
53
58
|
? path.join(import.meta.dirname, '..', 'dist')
|
|
54
59
|
: import.meta.dirname;
|
|
@@ -99,6 +104,11 @@ const writeTools = [
|
|
|
99
104
|
const standaloneTools = [
|
|
100
105
|
selectOrgDescriptor,
|
|
101
106
|
salesforceLoginDescriptor,
|
|
107
|
+
docsSearchDescriptor,
|
|
108
|
+
docsFetchDescriptor,
|
|
109
|
+
docsListCollectionsDescriptor,
|
|
110
|
+
trailheadSearchDescriptor,
|
|
111
|
+
trailheadFetchDescriptor,
|
|
102
112
|
];
|
|
103
113
|
const SESSION_ID_SCHEMA = z
|
|
104
114
|
.string()
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAGjF,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,6DAA6D;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,uEAAuE;AACvE,2EAA2E;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,oEAAoE;AACpE,kGAAkG;AAClG,wFAAwF;AACxF,8EAA8E;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { z } from 'zod/v4';
|
|
3
|
+
export declare const docsFetchTool: Tool;
|
|
4
|
+
export interface DocsFetchArgs {
|
|
5
|
+
id: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function handleDocsFetch(args: DocsFetchArgs): Promise<{
|
|
8
|
+
content: {
|
|
9
|
+
type: "text";
|
|
10
|
+
text: string;
|
|
11
|
+
}[];
|
|
12
|
+
isError: boolean;
|
|
13
|
+
}>;
|
|
14
|
+
export declare const docsFetchSchema: {
|
|
15
|
+
id: z.ZodString;
|
|
16
|
+
};
|
|
17
|
+
export declare const docsFetchDescriptor: {
|
|
18
|
+
name: string;
|
|
19
|
+
description: string | undefined;
|
|
20
|
+
schema: {
|
|
21
|
+
id: z.ZodString;
|
|
22
|
+
};
|
|
23
|
+
handler: typeof handleDocsFetch;
|
|
24
|
+
noConnection: boolean;
|
|
25
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { z } from 'zod/v4';
|
|
2
|
+
import { callDocsMcpTool } from '../utils/salesforceDocsClient.js';
|
|
3
|
+
import { toolResponse } from '../utils/errors.js';
|
|
4
|
+
export const docsFetchTool = {
|
|
5
|
+
name: 'salesforce_docs_fetch',
|
|
6
|
+
description: 'Fetch the full content of an official Salesforce documentation page via the official Salesforce Labs Docs MCP server. ' +
|
|
7
|
+
'Pass a document path returned by salesforce_docs_search, or a full Salesforce documentation URL.',
|
|
8
|
+
inputSchema: {
|
|
9
|
+
type: 'object',
|
|
10
|
+
properties: {
|
|
11
|
+
id: {
|
|
12
|
+
type: 'string',
|
|
13
|
+
description: 'Document path from salesforce_docs_search results (e.g. "lwc/lwc/guides/create/create-lifecycle-hooks.html") or a full Salesforce doc URL.',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
required: ['id'],
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
export async function handleDocsFetch(args) {
|
|
20
|
+
try {
|
|
21
|
+
const structured = await callDocsMcpTool('salesforce_docs_fetch', { id: args.id });
|
|
22
|
+
const content = structured.content;
|
|
23
|
+
if (!content) {
|
|
24
|
+
return toolResponse(`No content returned for document "${args.id}".`, true);
|
|
25
|
+
}
|
|
26
|
+
const title = structured.metadata?.title ?? args.id;
|
|
27
|
+
const collection = structured.collection ?? 'unknown';
|
|
28
|
+
const url = structured.url;
|
|
29
|
+
const header = [
|
|
30
|
+
`# ${title}`,
|
|
31
|
+
`Collection: ${collection}`,
|
|
32
|
+
url ? `URL: ${url}` : null,
|
|
33
|
+
'',
|
|
34
|
+
].filter(Boolean).join('\n');
|
|
35
|
+
return toolResponse(`${header}\n${content}`);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
return toolResponse(`salesforce_docs_fetch failed: ${error.message}`, true);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export const docsFetchSchema = {
|
|
42
|
+
id: z.string().describe('Document path from salesforce_docs_search results (e.g. "lwc/lwc/guides/create/create-lifecycle-hooks.html") or a full Salesforce doc URL.'),
|
|
43
|
+
};
|
|
44
|
+
export const docsFetchDescriptor = {
|
|
45
|
+
name: 'salesforce_docs_fetch',
|
|
46
|
+
description: docsFetchTool.description,
|
|
47
|
+
schema: docsFetchSchema,
|
|
48
|
+
handler: handleDocsFetch,
|
|
49
|
+
noConnection: true,
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=docsFetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docsFetch.js","sourceRoot":"","sources":["../../src/tools/docsFetch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,aAAa,GAAS;IACjC,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,wHAAwH;QACxH,kGAAkG;IACpG,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,EAAE,EAAE;gBACF,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4IAA4I;aAC1J;SACF;QACD,QAAQ,EAAE,CAAC,IAAI,CAAC;KACjB;CACF,CAAC;AAMF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAmB;IACvD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACnF,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAEnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,YAAY,CAAC,qCAAqC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,SAAS,CAAC;QACtD,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;QAE3B,MAAM,MAAM,GAAG;YACb,KAAK,KAAK,EAAE;YACZ,eAAe,UAAU,EAAE;YAC3B,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI;YAC1B,EAAE;SACH,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7B,OAAO,YAAY,CAAC,GAAG,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,YAAY,CAAC,iCAAiC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4IAA4I,CAAC;CACtK,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,aAAa,CAAC,WAAW;IACtC,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,eAAe;IACxB,YAAY,EAAE,IAAI;CACnB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { z } from 'zod/v4';
|
|
3
|
+
declare const SOURCES: readonly ["admin", "architect", "developer", "legacydeveloper", "mulesoft", "tableau"];
|
|
4
|
+
export declare const docsListCollectionsTool: Tool;
|
|
5
|
+
export interface DocsListCollectionsArgs {
|
|
6
|
+
source?: typeof SOURCES[number];
|
|
7
|
+
filter?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function handleDocsListCollections(args: DocsListCollectionsArgs): Promise<{
|
|
10
|
+
content: {
|
|
11
|
+
type: "text";
|
|
12
|
+
text: string;
|
|
13
|
+
}[];
|
|
14
|
+
isError: boolean;
|
|
15
|
+
}>;
|
|
16
|
+
export declare const docsListCollectionsSchema: {
|
|
17
|
+
source: z.ZodOptional<z.ZodEnum<{
|
|
18
|
+
admin: "admin";
|
|
19
|
+
architect: "architect";
|
|
20
|
+
developer: "developer";
|
|
21
|
+
legacydeveloper: "legacydeveloper";
|
|
22
|
+
mulesoft: "mulesoft";
|
|
23
|
+
tableau: "tableau";
|
|
24
|
+
}>>;
|
|
25
|
+
filter: z.ZodOptional<z.ZodString>;
|
|
26
|
+
};
|
|
27
|
+
export declare const docsListCollectionsDescriptor: {
|
|
28
|
+
name: string;
|
|
29
|
+
description: string | undefined;
|
|
30
|
+
schema: {
|
|
31
|
+
source: z.ZodOptional<z.ZodEnum<{
|
|
32
|
+
admin: "admin";
|
|
33
|
+
architect: "architect";
|
|
34
|
+
developer: "developer";
|
|
35
|
+
legacydeveloper: "legacydeveloper";
|
|
36
|
+
mulesoft: "mulesoft";
|
|
37
|
+
tableau: "tableau";
|
|
38
|
+
}>>;
|
|
39
|
+
filter: z.ZodOptional<z.ZodString>;
|
|
40
|
+
};
|
|
41
|
+
handler: typeof handleDocsListCollections;
|
|
42
|
+
noConnection: boolean;
|
|
43
|
+
};
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { z } from 'zod/v4';
|
|
2
|
+
import { readDocsMcpResource } from '../utils/salesforceDocsClient.js';
|
|
3
|
+
import { toolResponse } from '../utils/errors.js';
|
|
4
|
+
const SOURCES = ['admin', 'architect', 'developer', 'legacydeveloper', 'mulesoft', 'tableau'];
|
|
5
|
+
export const docsListCollectionsTool = {
|
|
6
|
+
name: 'salesforce_docs_list_collections',
|
|
7
|
+
description: 'List indexed Salesforce documentation collections (with document/chunk counts and last-indexed timestamps) from the ' +
|
|
8
|
+
'official Salesforce Labs Docs MCP server. Useful for discovering which collection to pass to salesforce_docs_search.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
source: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
enum: [...SOURCES],
|
|
15
|
+
description: 'Filter collections by root source.',
|
|
16
|
+
},
|
|
17
|
+
filter: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: 'Filter collection names by substring (case-insensitive).',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
required: [],
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
export async function handleDocsListCollections(args) {
|
|
26
|
+
try {
|
|
27
|
+
const data = await readDocsMcpResource('collection://list');
|
|
28
|
+
let collections = data.collections ?? [];
|
|
29
|
+
if (args.source) {
|
|
30
|
+
collections = collections.filter((c) => String(c.collection ?? '').startsWith(args.source + '/'));
|
|
31
|
+
}
|
|
32
|
+
if (args.filter) {
|
|
33
|
+
const pattern = args.filter.toLowerCase();
|
|
34
|
+
collections = collections.filter((c) => String(c.collection ?? '').toLowerCase().includes(pattern));
|
|
35
|
+
}
|
|
36
|
+
if (collections.length === 0) {
|
|
37
|
+
return toolResponse('No collections found matching the given filters.');
|
|
38
|
+
}
|
|
39
|
+
collections.sort((a, b) => String(a.collection ?? '').localeCompare(String(b.collection ?? '')));
|
|
40
|
+
const lines = collections.map((c) => {
|
|
41
|
+
const docs = Number(c.document_count ?? 0).toLocaleString();
|
|
42
|
+
const chunks = Number(c.chunk_count ?? 0).toLocaleString();
|
|
43
|
+
const lastIndexed = c.last_indexed ?? 'unknown';
|
|
44
|
+
return `- ${c.collection}: ${docs} docs, ${chunks} chunks, last indexed ${lastIndexed}`;
|
|
45
|
+
});
|
|
46
|
+
return toolResponse(`Found ${collections.length} collection(s):\n\n${lines.join('\n')}`);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
return toolResponse(`salesforce_docs_list_collections failed: ${error.message}`, true);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export const docsListCollectionsSchema = {
|
|
53
|
+
source: z.enum(SOURCES).describe('Filter collections by root source.').optional(),
|
|
54
|
+
filter: z.string().describe('Filter collection names by substring (case-insensitive).').optional(),
|
|
55
|
+
};
|
|
56
|
+
export const docsListCollectionsDescriptor = {
|
|
57
|
+
name: 'salesforce_docs_list_collections',
|
|
58
|
+
description: docsListCollectionsTool.description,
|
|
59
|
+
schema: docsListCollectionsSchema,
|
|
60
|
+
handler: handleDocsListCollections,
|
|
61
|
+
noConnection: true,
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=docsListCollections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docsListCollections.js","sourceRoot":"","sources":["../../src/tools/docsListCollections.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { z } from 'zod/v4';
|
|
3
|
+
export declare const docsSearchTool: Tool;
|
|
4
|
+
export interface DocsSearchArgs {
|
|
5
|
+
query: string;
|
|
6
|
+
collection?: string;
|
|
7
|
+
limit?: number;
|
|
8
|
+
mode?: 'auto' | 'semantic' | 'hybrid';
|
|
9
|
+
}
|
|
10
|
+
export declare function handleDocsSearch(args: DocsSearchArgs): Promise<{
|
|
11
|
+
content: {
|
|
12
|
+
type: "text";
|
|
13
|
+
text: string;
|
|
14
|
+
}[];
|
|
15
|
+
isError: boolean;
|
|
16
|
+
}>;
|
|
17
|
+
export declare const docsSearchSchema: {
|
|
18
|
+
query: z.ZodString;
|
|
19
|
+
collection: z.ZodOptional<z.ZodString>;
|
|
20
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
21
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
22
|
+
auto: "auto";
|
|
23
|
+
semantic: "semantic";
|
|
24
|
+
hybrid: "hybrid";
|
|
25
|
+
}>>;
|
|
26
|
+
};
|
|
27
|
+
export declare const docsSearchDescriptor: {
|
|
28
|
+
name: string;
|
|
29
|
+
description: string | undefined;
|
|
30
|
+
schema: {
|
|
31
|
+
query: z.ZodString;
|
|
32
|
+
collection: z.ZodOptional<z.ZodString>;
|
|
33
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
34
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
35
|
+
auto: "auto";
|
|
36
|
+
semantic: "semantic";
|
|
37
|
+
hybrid: "hybrid";
|
|
38
|
+
}>>;
|
|
39
|
+
};
|
|
40
|
+
handler: typeof handleDocsSearch;
|
|
41
|
+
noConnection: boolean;
|
|
42
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { z } from 'zod/v4';
|
|
2
|
+
import { callDocsMcpTool } from '../utils/salesforceDocsClient.js';
|
|
3
|
+
import { toolResponse } from '../utils/errors.js';
|
|
4
|
+
export const docsSearchTool = {
|
|
5
|
+
name: 'salesforce_docs_search',
|
|
6
|
+
description: 'Search official Salesforce documentation (Apex, LWC, Admin, Architect, MuleSoft, Tableau, Release Notes, and more) ' +
|
|
7
|
+
'via the official Salesforce Labs Docs MCP server. Returns ranked excerpts with document paths you can pass to ' +
|
|
8
|
+
'salesforce_docs_fetch for the full document. Use this proactively whenever a request touches a Salesforce feature, ' +
|
|
9
|
+
'object, or API you are not fully certain about — especially niche or less-common modules (CPQ, MuleSoft, Platform ' +
|
|
10
|
+
'Events, Data Cloud, Tableau, Field Service, Experience Cloud, Industries/OmniStudio, etc.) — rather than relying on ' +
|
|
11
|
+
'possibly outdated training knowledge.',
|
|
12
|
+
inputSchema: {
|
|
13
|
+
type: 'object',
|
|
14
|
+
properties: {
|
|
15
|
+
query: {
|
|
16
|
+
type: 'string',
|
|
17
|
+
description: 'Search query or question, e.g. "how to configure einstein copilot" or an error code like "INVALID_FIELD_FOR_INSERT_UPDATE".',
|
|
18
|
+
},
|
|
19
|
+
collection: {
|
|
20
|
+
type: 'string',
|
|
21
|
+
description: 'Optional collection to restrict the search to, e.g. "developer/lwc".',
|
|
22
|
+
},
|
|
23
|
+
limit: {
|
|
24
|
+
type: 'number',
|
|
25
|
+
description: 'Max number of results to return (1-50). Default 5.',
|
|
26
|
+
},
|
|
27
|
+
mode: {
|
|
28
|
+
type: 'string',
|
|
29
|
+
enum: ['auto', 'semantic', 'hybrid'],
|
|
30
|
+
description: 'Search mode. Use "hybrid" for literal matches on error codes, permission names, or camelCase/snake_case identifiers. Default "auto".',
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
required: ['query'],
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
export async function handleDocsSearch(args) {
|
|
37
|
+
try {
|
|
38
|
+
const params = {
|
|
39
|
+
query: args.query,
|
|
40
|
+
limit: args.limit ?? 5,
|
|
41
|
+
search_mode: args.mode ?? 'auto',
|
|
42
|
+
};
|
|
43
|
+
if (args.collection)
|
|
44
|
+
params.collection = args.collection;
|
|
45
|
+
const structured = await callDocsMcpTool('salesforce_docs_search', params);
|
|
46
|
+
const chunks = structured.chunks ?? [];
|
|
47
|
+
const total = structured.total ?? chunks.length;
|
|
48
|
+
const metrics = structured.metrics ?? {};
|
|
49
|
+
if (chunks.length === 0) {
|
|
50
|
+
return toolResponse(`No documentation matches found for "${args.query}".`);
|
|
51
|
+
}
|
|
52
|
+
const lines = [
|
|
53
|
+
`Found ${total} match(es), showing top ${chunks.length} (mode: ${metrics.searchMode ?? params.search_mode}):`,
|
|
54
|
+
'',
|
|
55
|
+
];
|
|
56
|
+
for (const chunk of chunks) {
|
|
57
|
+
const title = chunk.metadata?.title ?? chunk.documentPath;
|
|
58
|
+
lines.push(`### ${title} (score: ${(chunk.score ?? 0).toFixed(4)})`);
|
|
59
|
+
lines.push(`- Collection: ${chunk.collection ?? 'unknown'}`);
|
|
60
|
+
lines.push(`- Document path (pass to salesforce_docs_fetch): ${chunk.documentPath}`);
|
|
61
|
+
if (chunk.url)
|
|
62
|
+
lines.push(`- URL: ${chunk.url}`);
|
|
63
|
+
if (chunk.content) {
|
|
64
|
+
lines.push(`- Excerpt: ${String(chunk.content).trim().slice(0, 500)}`);
|
|
65
|
+
}
|
|
66
|
+
lines.push('');
|
|
67
|
+
}
|
|
68
|
+
return toolResponse(lines.join('\n').trimEnd());
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
return toolResponse(`salesforce_docs_search failed: ${error.message}`, true);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export const docsSearchSchema = {
|
|
75
|
+
query: z.string().describe('Search query or question, e.g. "how to configure einstein copilot" or an error code like "INVALID_FIELD_FOR_INSERT_UPDATE".'),
|
|
76
|
+
collection: z.string().describe('Optional collection to restrict the search to, e.g. "developer/lwc".').optional(),
|
|
77
|
+
limit: z.number().describe('Max number of results to return (1-50). Default 5.').optional(),
|
|
78
|
+
mode: z.enum(['auto', 'semantic', 'hybrid']).describe('Search mode. Use "hybrid" for literal matches on error codes, permission names, or camelCase/snake_case identifiers. Default "auto".').optional(),
|
|
79
|
+
};
|
|
80
|
+
export const docsSearchDescriptor = {
|
|
81
|
+
name: 'salesforce_docs_search',
|
|
82
|
+
description: docsSearchTool.description,
|
|
83
|
+
schema: docsSearchSchema,
|
|
84
|
+
handler: handleDocsSearch,
|
|
85
|
+
noConnection: true,
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=docsSearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docsSearch.js","sourceRoot":"","sources":["../../src/tools/docsSearch.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,9 +19,66 @@ export const executeAnonymousTool = {
|
|
|
19
19
|
required: ['apexCode'],
|
|
20
20
|
},
|
|
21
21
|
};
|
|
22
|
+
async function findMostRecentExecuteAnonymousLogId(conn, userId) {
|
|
23
|
+
const logResult = await conn.tooling.query(`SELECT Id FROM ApexLog WHERE LogUserId = '${userId}' AND Operation LIKE '%executeAnonymous%' ORDER BY StartTime DESC LIMIT 1`);
|
|
24
|
+
if (logResult.records && logResult.records.length > 0) {
|
|
25
|
+
return logResult.records[0].Id;
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
async function findNewLog(conn, userId, previousLogId) {
|
|
30
|
+
const attempts = 6;
|
|
31
|
+
for (let i = 0; i < attempts; i++) {
|
|
32
|
+
const logId = await findMostRecentExecuteAnonymousLogId(conn, userId);
|
|
33
|
+
if (logId && logId !== previousLogId) {
|
|
34
|
+
return logId;
|
|
35
|
+
}
|
|
36
|
+
if (i < attempts - 1) {
|
|
37
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
22
42
|
export async function handleExecuteAnonymous(conn, args) {
|
|
23
|
-
const { apexCode } = args;
|
|
43
|
+
const { apexCode, logLevel = 'DEBUG' } = args;
|
|
44
|
+
let createdTraceFlagId;
|
|
24
45
|
try {
|
|
46
|
+
const identity = await conn.identity();
|
|
47
|
+
const userId = identity.user_id;
|
|
48
|
+
// Ensure an active trace flag exists so this execution actually produces an ApexLog
|
|
49
|
+
const now = new Date();
|
|
50
|
+
const existingTf = await conn.tooling.query(`SELECT Id FROM TraceFlag WHERE TracedEntityId = '${userId}' AND ExpirationDate > ${now.toISOString()} AND LogType = 'USER_DEBUG'`);
|
|
51
|
+
if (!existingTf.records || existingTf.records.length === 0) {
|
|
52
|
+
const devName = `MCP_Debug_${Date.now()}`;
|
|
53
|
+
const debugLevelResult = await conn.tooling.sobject('DebugLevel').create({
|
|
54
|
+
DeveloperName: devName,
|
|
55
|
+
MasterLabel: devName,
|
|
56
|
+
ApexCode: logLevel,
|
|
57
|
+
ApexProfiling: logLevel,
|
|
58
|
+
Callout: logLevel,
|
|
59
|
+
Database: logLevel,
|
|
60
|
+
System: logLevel,
|
|
61
|
+
Validation: logLevel,
|
|
62
|
+
Visualforce: logLevel,
|
|
63
|
+
Workflow: logLevel,
|
|
64
|
+
});
|
|
65
|
+
if (!debugLevelResult.success) {
|
|
66
|
+
return toolResponse(`Failed to create debug level: ${JSON.stringify(debugLevelResult.errors)}`, true);
|
|
67
|
+
}
|
|
68
|
+
const expiry = new Date(now.getTime() + 15 * 60000);
|
|
69
|
+
const tfResult = await conn.tooling.sobject('TraceFlag').create({
|
|
70
|
+
TracedEntityId: userId,
|
|
71
|
+
DebugLevelId: debugLevelResult.id,
|
|
72
|
+
LogType: 'USER_DEBUG',
|
|
73
|
+
StartDate: now.toISOString(),
|
|
74
|
+
ExpirationDate: expiry.toISOString(),
|
|
75
|
+
});
|
|
76
|
+
if (!tfResult.success) {
|
|
77
|
+
return toolResponse(`Failed to create trace flag: ${JSON.stringify(tfResult.errors)}`, true);
|
|
78
|
+
}
|
|
79
|
+
createdTraceFlagId = tfResult.id;
|
|
80
|
+
}
|
|
81
|
+
const previousLogId = await findMostRecentExecuteAnonymousLogId(conn, userId);
|
|
25
82
|
const result = await conn.tooling.executeAnonymous(apexCode);
|
|
26
83
|
const lines = [];
|
|
27
84
|
if (!result.compiled) {
|
|
@@ -39,11 +96,10 @@ export async function handleExecuteAnonymous(conn, args) {
|
|
|
39
96
|
return toolResponse(lines.join('\n'), true);
|
|
40
97
|
}
|
|
41
98
|
lines.push('## Execution: Success\n');
|
|
42
|
-
//
|
|
99
|
+
// Fetch debug log for this execution
|
|
43
100
|
try {
|
|
44
|
-
const
|
|
45
|
-
if (
|
|
46
|
-
const logId = logResult.records[0].Id;
|
|
101
|
+
const logId = await findNewLog(conn, userId, previousLogId);
|
|
102
|
+
if (logId) {
|
|
47
103
|
const logBody = await conn.request({
|
|
48
104
|
method: 'GET',
|
|
49
105
|
url: `/services/data/v58.0/tooling/sobjects/ApexLog/${logId}/Body`,
|
|
@@ -54,15 +110,28 @@ export async function handleExecuteAnonymous(conn, args) {
|
|
|
54
110
|
lines.push('```\n' + compressApexLog(raw) + '\n```');
|
|
55
111
|
}
|
|
56
112
|
}
|
|
113
|
+
else {
|
|
114
|
+
lines.push('\n(Debug log not available: no ApexLog record appeared for this execution)');
|
|
115
|
+
}
|
|
57
116
|
}
|
|
58
|
-
catch {
|
|
59
|
-
lines.push(
|
|
117
|
+
catch (logError) {
|
|
118
|
+
lines.push(`\n(Debug log not available: ${logError.message})`);
|
|
60
119
|
}
|
|
61
120
|
return toolResponse(lines.join('\n'));
|
|
62
121
|
}
|
|
63
122
|
catch (error) {
|
|
64
123
|
return toolResponse(`Execute anonymous failed: ${error.message}`, true);
|
|
65
124
|
}
|
|
125
|
+
finally {
|
|
126
|
+
if (createdTraceFlagId) {
|
|
127
|
+
try {
|
|
128
|
+
await conn.tooling.sobject('TraceFlag').destroy(createdTraceFlagId);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
// best-effort cleanup
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
66
135
|
}
|
|
67
136
|
export const executeAnonymousSchema = {
|
|
68
137
|
apexCode: z.string().describe('The Apex code to execute.'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeAnonymous.js","sourceRoot":"","sources":["../../src/tools/executeAnonymous.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAElE,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,8BAA8B;IACpC,WAAW,EAAE,gJAAgJ;IAC7J,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2BAA2B;aACzC;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;gBAC3E,WAAW,EAAE,kCAAkC;aAChD;SACF;QACD,QAAQ,EAAE,CAAC,UAAU,CAAC;KACvB;CACF,CAAC;AAOF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAgB,EAAE,IAA0B;IACvF,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"executeAnonymous.js","sourceRoot":"","sources":["../../src/tools/executeAnonymous.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,12 +10,17 @@ export declare const objectSchemaTool: {
|
|
|
10
10
|
type: string;
|
|
11
11
|
description: string;
|
|
12
12
|
};
|
|
13
|
+
includeRelatedComponents: {
|
|
14
|
+
type: string;
|
|
15
|
+
description: string;
|
|
16
|
+
};
|
|
13
17
|
};
|
|
14
18
|
required: string[];
|
|
15
19
|
};
|
|
16
20
|
};
|
|
17
21
|
export interface ObjectSchemaArgs {
|
|
18
22
|
objectName: string;
|
|
23
|
+
includeRelatedComponents?: boolean;
|
|
19
24
|
}
|
|
20
25
|
export declare function handleObjectSchema(conn: Connection, args: ObjectSchemaArgs): Promise<{
|
|
21
26
|
content: {
|
|
@@ -26,12 +31,14 @@ export declare function handleObjectSchema(conn: Connection, args: ObjectSchemaA
|
|
|
26
31
|
}>;
|
|
27
32
|
export declare const objectSchemaSchema: {
|
|
28
33
|
objectName: z.ZodString;
|
|
34
|
+
includeRelatedComponents: z.ZodOptional<z.ZodBoolean>;
|
|
29
35
|
};
|
|
30
36
|
export declare const objectSchemaDescriptor: {
|
|
31
37
|
name: string;
|
|
32
38
|
description: string;
|
|
33
39
|
schema: {
|
|
34
40
|
objectName: z.ZodString;
|
|
41
|
+
includeRelatedComponents: z.ZodOptional<z.ZodBoolean>;
|
|
35
42
|
};
|
|
36
43
|
handler: typeof handleObjectSchema;
|
|
37
44
|
};
|