salesforce-metadata-mcp 2.0.0
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/AGENTFORCE.md +125 -0
- package/APEX_LWC.md +214 -0
- package/CHANGELOG.md +120 -0
- package/README.md +207 -0
- package/SETUP.md +208 -0
- package/TOOLS.md +193 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/index.d.ts +3406 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +992 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/services/deployment.d.ts +36 -0
- package/dist/services/deployment.d.ts.map +1 -0
- package/dist/services/deployment.js +215 -0
- package/dist/services/deployment.js.map +1 -0
- package/dist/services/mcpgen.d.ts +16 -0
- package/dist/services/mcpgen.d.ts.map +1 -0
- package/dist/services/mcpgen.js +229 -0
- package/dist/services/mcpgen.js.map +1 -0
- package/dist/services/salesforce.d.ts +598 -0
- package/dist/services/salesforce.d.ts.map +1 -0
- package/dist/services/salesforce.js +1317 -0
- package/dist/services/salesforce.js.map +1 -0
- package/dist/services/tooling.d.ts +23 -0
- package/dist/services/tooling.d.ts.map +1 -0
- package/dist/services/tooling.js +173 -0
- package/dist/services/tooling.js.map +1 -0
- package/dist/tools/agentforce.d.ts +3 -0
- package/dist/tools/agentforce.d.ts.map +1 -0
- package/dist/tools/agentforce.js +73 -0
- package/dist/tools/agentforce.js.map +1 -0
- package/dist/tools/apex.d.ts +3 -0
- package/dist/tools/apex.d.ts.map +1 -0
- package/dist/tools/apex.js +95 -0
- package/dist/tools/apex.js.map +1 -0
- package/dist/tools/automation.d.ts +3 -0
- package/dist/tools/automation.d.ts.map +1 -0
- package/dist/tools/automation.js +186 -0
- package/dist/tools/automation.js.map +1 -0
- package/dist/tools/deployment.d.ts +3 -0
- package/dist/tools/deployment.d.ts.map +1 -0
- package/dist/tools/deployment.js +89 -0
- package/dist/tools/deployment.js.map +1 -0
- package/dist/tools/experience.d.ts +3 -0
- package/dist/tools/experience.d.ts.map +1 -0
- package/dist/tools/experience.js +53 -0
- package/dist/tools/experience.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +27 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/integrations.d.ts +3 -0
- package/dist/tools/integrations.d.ts.map +1 -0
- package/dist/tools/integrations.js +96 -0
- package/dist/tools/integrations.js.map +1 -0
- package/dist/tools/lwc.d.ts +3 -0
- package/dist/tools/lwc.d.ts.map +1 -0
- package/dist/tools/lwc.js +73 -0
- package/dist/tools/lwc.js.map +1 -0
- package/dist/tools/mcp.d.ts +3 -0
- package/dist/tools/mcp.d.ts.map +1 -0
- package/dist/tools/mcp.js +44 -0
- package/dist/tools/mcp.js.map +1 -0
- package/dist/tools/metadata.d.ts +3 -0
- package/dist/tools/metadata.d.ts.map +1 -0
- package/dist/tools/metadata.js +168 -0
- package/dist/tools/metadata.js.map +1 -0
- package/dist/tools/objects.d.ts +3 -0
- package/dist/tools/objects.d.ts.map +1 -0
- package/dist/tools/objects.js +172 -0
- package/dist/tools/objects.js.map +1 -0
- package/dist/tools/security.d.ts +3 -0
- package/dist/tools/security.d.ts.map +1 -0
- package/dist/tools/security.js +82 -0
- package/dist/tools/security.js.map +1 -0
- package/dist/tools/ui.d.ts +3 -0
- package/dist/tools/ui.d.ts.map +1 -0
- package/dist/tools/ui.js +195 -0
- package/dist/tools/ui.js.map +1 -0
- package/dist/tools/utils.d.ts +15 -0
- package/dist/tools/utils.d.ts.map +1 -0
- package/dist/tools/utils.js +7 -0
- package/dist/tools/utils.js.map +1 -0
- package/dist/types.d.ts +85 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lwc.js","sourceRoot":"","sources":["../../src/tools/lwc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsDxD"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { CreateMcpServerSchema, CreateMcpToolSchema, ListMcpToolsSchema } from "../schemas/index.js";
|
|
2
|
+
import { createMcpServer, createMcpTool, listMcpTools } from "../services/mcpgen.js";
|
|
3
|
+
import { resultContent } from "./utils.js";
|
|
4
|
+
export function registerMcpTools(server) {
|
|
5
|
+
server.registerTool("sf_create_mcp_server", {
|
|
6
|
+
title: "Create Salesforce MCP Server",
|
|
7
|
+
description: `Generates a complete, working MCP server project structure on disk targeting a Salesforce org. Creates package.json, tsconfig.json, src/index.ts entry point, .env.example, and README.md. The generated server uses the MCP SDK and includes a sample 'hello_world' tool. Provide an outputDirectory (absolute path) where the files will be written. After generation, run 'npm install' then 'npm run build' in that directory.`,
|
|
8
|
+
inputSchema: CreateMcpServerSchema,
|
|
9
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
10
|
+
}, async (params) => {
|
|
11
|
+
const result = await createMcpServer({
|
|
12
|
+
serverName: params.serverName,
|
|
13
|
+
outputDirectory: params.outputDirectory,
|
|
14
|
+
description: params.description,
|
|
15
|
+
salesforceInstanceUrl: params.salesforceInstanceUrl,
|
|
16
|
+
});
|
|
17
|
+
return resultContent(result);
|
|
18
|
+
});
|
|
19
|
+
server.registerTool("sf_create_mcp_tool", {
|
|
20
|
+
title: "Add Tool to MCP Server",
|
|
21
|
+
description: `Adds a new tool definition to an existing MCP server project by reading the src/index.ts file and appending the tool registration. Provide the tool name, description, input schema as a JSON object (field names to {type, description}), and handler code. The tool code is inserted before the 'Start server' section. Run 'npm run build' after adding tools.`,
|
|
22
|
+
inputSchema: CreateMcpToolSchema,
|
|
23
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
24
|
+
}, async (params) => {
|
|
25
|
+
const result = await createMcpTool({
|
|
26
|
+
projectDirectory: params.projectDirectory,
|
|
27
|
+
toolName: params.toolName,
|
|
28
|
+
toolDescription: params.toolDescription,
|
|
29
|
+
inputSchema: params.inputSchema,
|
|
30
|
+
handlerCode: params.handlerCode,
|
|
31
|
+
});
|
|
32
|
+
return resultContent(result);
|
|
33
|
+
});
|
|
34
|
+
server.registerTool("sf_list_mcp_tools", {
|
|
35
|
+
title: "List MCP Server Tools",
|
|
36
|
+
description: `Lists all tools currently registered in a given MCP server project by reading and parsing its src/index.ts file. Returns the tool names in the order they are registered. Use to audit what tools exist before adding new ones.`,
|
|
37
|
+
inputSchema: ListMcpToolsSchema,
|
|
38
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
39
|
+
}, async (params) => {
|
|
40
|
+
const result = await listMcpTools(params.projectDirectory);
|
|
41
|
+
return resultContent(result);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAEhD,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,8BAA8B;QACrC,WAAW,EAAE,oaAAoa;QACjb,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KACzG,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;SACpD,CAAC,CAAC;QACH,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,mWAAmW;QAChX,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1G,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;YACjC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;QACH,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,iOAAiO;QAC9O,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KACxG,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC3D,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/tools/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2BzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0M7D"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { CreateCustomObjectSchema, CreateCustomFieldSchema, AddPicklistValuesSchema, CreateFlowSchema, CreateApprovalProcessSchema, CreateValidationRuleSchema, CreateWorkflowFieldUpdateSchema, } from "../schemas/index.js";
|
|
2
|
+
import { getAuth, createCustomObject, createCustomField, addPicklistValues, createFlow, createApprovalProcess, createValidationRule, createWorkflowFieldUpdate, } from "../services/salesforce.js";
|
|
3
|
+
import { resultContent } from "./utils.js";
|
|
4
|
+
export function registerMetadataTools(server) {
|
|
5
|
+
server.registerTool("sf_create_custom_object", {
|
|
6
|
+
title: "Create Salesforce Custom Object",
|
|
7
|
+
description: `Creates a new Salesforce Custom Object using the Metadata API. The object name must end with '__c'. Use this when a user asks to create a new object, entity, or table in Salesforce.`,
|
|
8
|
+
inputSchema: CreateCustomObjectSchema,
|
|
9
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
10
|
+
}, async (params) => {
|
|
11
|
+
const auth = await getAuth();
|
|
12
|
+
const meta = {
|
|
13
|
+
fullName: params.fullName,
|
|
14
|
+
label: params.label,
|
|
15
|
+
pluralLabel: params.pluralLabel,
|
|
16
|
+
description: params.description,
|
|
17
|
+
deploymentStatus: params.deploymentStatus,
|
|
18
|
+
sharingModel: params.sharingModel,
|
|
19
|
+
enableActivities: params.enableActivities,
|
|
20
|
+
enableHistory: params.enableHistory,
|
|
21
|
+
enableReports: params.enableReports,
|
|
22
|
+
enableSearch: params.enableSearch,
|
|
23
|
+
nameField: {
|
|
24
|
+
label: params.nameFieldLabel,
|
|
25
|
+
type: params.nameFieldType,
|
|
26
|
+
...(params.nameFieldType === "AutoNumber"
|
|
27
|
+
? { displayFormat: params.autoNumberFormat ?? "REC-{0000}" }
|
|
28
|
+
: {}),
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
const result = await createCustomObject(auth, meta);
|
|
32
|
+
return resultContent(result);
|
|
33
|
+
});
|
|
34
|
+
server.registerTool("sf_create_custom_field", {
|
|
35
|
+
title: "Create Salesforce Custom Field",
|
|
36
|
+
description: `Creates a new custom field on an existing Salesforce object. The field API name must end with '__c'. Supports all field types: Text, Number, Picklist, Lookup, etc.`,
|
|
37
|
+
inputSchema: CreateCustomFieldSchema,
|
|
38
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
39
|
+
}, async (params) => {
|
|
40
|
+
const auth = await getAuth();
|
|
41
|
+
const meta = {
|
|
42
|
+
fullName: `${params.objectName}.${params.fieldName}`,
|
|
43
|
+
label: params.label,
|
|
44
|
+
type: params.type,
|
|
45
|
+
description: params.description,
|
|
46
|
+
required: params.required,
|
|
47
|
+
unique: params.unique,
|
|
48
|
+
externalId: params.externalId,
|
|
49
|
+
length: params.length,
|
|
50
|
+
visibleLines: params.visibleLines,
|
|
51
|
+
precision: params.precision,
|
|
52
|
+
scale: params.scale,
|
|
53
|
+
referenceTo: params.referenceTo,
|
|
54
|
+
relationshipLabel: params.relationshipLabel,
|
|
55
|
+
relationshipName: params.relationshipName,
|
|
56
|
+
deleteConstraint: params.deleteConstraint,
|
|
57
|
+
...(params.picklistValues
|
|
58
|
+
? {
|
|
59
|
+
valueSet: {
|
|
60
|
+
restricted: params.picklistValues.restricted,
|
|
61
|
+
valueSetDefinition: {
|
|
62
|
+
sorted: params.picklistValues.sorted,
|
|
63
|
+
value: params.picklistValues.values,
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
}
|
|
67
|
+
: {}),
|
|
68
|
+
};
|
|
69
|
+
const result = await createCustomField(auth, meta);
|
|
70
|
+
return resultContent(result);
|
|
71
|
+
});
|
|
72
|
+
server.registerTool("sf_add_picklist_values", {
|
|
73
|
+
title: "Add Picklist Values to Existing Field",
|
|
74
|
+
description: `Adds new picklist values to an existing Picklist or MultiselectPicklist field without removing existing values. Use when a user wants to add new options to a dropdown.`,
|
|
75
|
+
inputSchema: AddPicklistValuesSchema,
|
|
76
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
77
|
+
}, async (params) => {
|
|
78
|
+
const auth = await getAuth();
|
|
79
|
+
const result = await addPicklistValues(auth, params.objectFieldFullName, params.values);
|
|
80
|
+
return resultContent(result);
|
|
81
|
+
});
|
|
82
|
+
server.registerTool("sf_create_flow", {
|
|
83
|
+
title: "Create Salesforce Flow",
|
|
84
|
+
description: `Creates or updates a Salesforce Flow via the Metadata API. Supports AutoLaunchedFlow, Screen Flow, RecordTriggeredFlow, and ScheduledFlow. Supports advanced elements: Decision, GetRecords, CreateRecords, DeleteRecords, SendEmailAlert, ApexAction, Subflow, Loop, Assignment, Screen, Wait, and Platform Event publish via the 'elements' array.`,
|
|
85
|
+
inputSchema: CreateFlowSchema,
|
|
86
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
87
|
+
}, async (params) => {
|
|
88
|
+
const auth = await getAuth();
|
|
89
|
+
const result = await createFlow(auth, {
|
|
90
|
+
label: params.label,
|
|
91
|
+
apiName: params.apiName,
|
|
92
|
+
description: params.description,
|
|
93
|
+
flowType: params.flowType,
|
|
94
|
+
triggerObject: params.triggerObject,
|
|
95
|
+
triggerType: params.triggerType,
|
|
96
|
+
triggerFilterFormula: params.triggerFilterFormula,
|
|
97
|
+
fieldUpdates: params.fieldUpdates,
|
|
98
|
+
elements: params.elements,
|
|
99
|
+
variables: params.variables,
|
|
100
|
+
status: params.status,
|
|
101
|
+
submitForApprovalProcessName: params.submitForApprovalProcessName,
|
|
102
|
+
});
|
|
103
|
+
return resultContent(result);
|
|
104
|
+
});
|
|
105
|
+
server.registerTool("sf_create_approval_process", {
|
|
106
|
+
title: "Create Salesforce Approval Process",
|
|
107
|
+
description: `Creates or updates a Salesforce Approval Process via the Metadata API. Define who can submit, approval steps with approvers, entry criteria, and what happens on approval or rejection.`,
|
|
108
|
+
inputSchema: CreateApprovalProcessSchema,
|
|
109
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
110
|
+
}, async (params) => {
|
|
111
|
+
const auth = await getAuth();
|
|
112
|
+
const result = await createApprovalProcess(auth, {
|
|
113
|
+
objectName: params.objectName,
|
|
114
|
+
processName: params.processName,
|
|
115
|
+
label: params.label,
|
|
116
|
+
description: params.description,
|
|
117
|
+
allowedSubmitters: params.allowedSubmitters,
|
|
118
|
+
approvalSteps: params.approvalSteps,
|
|
119
|
+
entryFormula: params.entryFormula,
|
|
120
|
+
entryFilterCriteria: params.entryFilterCriteria,
|
|
121
|
+
recordEditability: params.recordEditability,
|
|
122
|
+
allowRecall: params.allowRecall,
|
|
123
|
+
finalApprovalLock: params.finalApprovalLock,
|
|
124
|
+
finalRejectionLock: params.finalRejectionLock,
|
|
125
|
+
emailTemplate: params.emailTemplate,
|
|
126
|
+
active: params.active,
|
|
127
|
+
});
|
|
128
|
+
return resultContent(result);
|
|
129
|
+
});
|
|
130
|
+
server.registerTool("sf_create_validation_rule", {
|
|
131
|
+
title: "Create Salesforce Validation Rule",
|
|
132
|
+
description: `Creates or updates a Salesforce Validation Rule on any object via the Metadata API. The errorConditionFormula returns TRUE when data is INVALID. Use for data quality enforcement.`,
|
|
133
|
+
inputSchema: CreateValidationRuleSchema,
|
|
134
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
135
|
+
}, async (params) => {
|
|
136
|
+
const auth = await getAuth();
|
|
137
|
+
const result = await createValidationRule(auth, {
|
|
138
|
+
objectName: params.objectName,
|
|
139
|
+
ruleName: params.ruleName,
|
|
140
|
+
active: params.active,
|
|
141
|
+
errorConditionFormula: params.errorConditionFormula,
|
|
142
|
+
errorMessage: params.errorMessage,
|
|
143
|
+
errorDisplayField: params.errorDisplayField,
|
|
144
|
+
description: params.description,
|
|
145
|
+
});
|
|
146
|
+
return resultContent(result);
|
|
147
|
+
});
|
|
148
|
+
server.registerTool("sf_create_workflow_field_update", {
|
|
149
|
+
title: "Create Salesforce Workflow Field Update Action",
|
|
150
|
+
description: `Creates a Workflow Field Update action that can be referenced by Approval Processes, Workflow Rules, or Flows. Sets a field to a literal value, formula result, or null.`,
|
|
151
|
+
inputSchema: CreateWorkflowFieldUpdateSchema,
|
|
152
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
153
|
+
}, async (params) => {
|
|
154
|
+
const auth = await getAuth();
|
|
155
|
+
const result = await createWorkflowFieldUpdate(auth, {
|
|
156
|
+
objectName: params.objectName,
|
|
157
|
+
actionName: params.actionName,
|
|
158
|
+
label: params.label,
|
|
159
|
+
field: params.field,
|
|
160
|
+
literalValue: params.literalValue,
|
|
161
|
+
formula: params.formula,
|
|
162
|
+
nullValue: params.nullValue,
|
|
163
|
+
notifyAssignee: params.notifyAssignee,
|
|
164
|
+
});
|
|
165
|
+
return resultContent(result);
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/tools/metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../src/tools/objects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6BzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyN3D"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { CreateCustomMetadataTypeSchema, CreateCustomMetadataRecordSchema, CreateCustomLabelSchema, CreateCustomSettingSchema, CreateGlobalValueSetSchema, CreateRecordTypeSchema, CreateBusinessProcessSchema, CreatePageLayoutSchema, CreateSharingRuleSchema, CreateFieldDependencySchema, } from "../schemas/index.js";
|
|
2
|
+
import { getAuth, createCustomMetadataType, createCustomMetadataRecord, createCustomLabel, createCustomSetting, createGlobalValueSet, createRecordType, createBusinessProcess, createPageLayout, createSharingRule, createFieldDependency, } from "../services/salesforce.js";
|
|
3
|
+
import { resultContent } from "./utils.js";
|
|
4
|
+
export function registerObjectTools(server) {
|
|
5
|
+
server.registerTool("sf_create_custom_metadata_type", {
|
|
6
|
+
title: "Create Custom Metadata Type",
|
|
7
|
+
description: `Creates a new Custom Metadata Type (ending in __mdt) with optional custom fields. Custom Metadata Types store configuration data that can be packaged and deployed. Use when a user wants to store configuration in metadata rather than custom objects.`,
|
|
8
|
+
inputSchema: CreateCustomMetadataTypeSchema,
|
|
9
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
10
|
+
}, async (params) => {
|
|
11
|
+
const auth = await getAuth();
|
|
12
|
+
const result = await createCustomMetadataType(auth, {
|
|
13
|
+
fullName: params.fullName,
|
|
14
|
+
label: params.label,
|
|
15
|
+
pluralLabel: params.pluralLabel,
|
|
16
|
+
description: params.description,
|
|
17
|
+
fields: params.fields,
|
|
18
|
+
});
|
|
19
|
+
return resultContent(result);
|
|
20
|
+
});
|
|
21
|
+
server.registerTool("sf_create_custom_metadata_record", {
|
|
22
|
+
title: "Create Custom Metadata Record",
|
|
23
|
+
description: `Creates a record within an existing Custom Metadata Type (__mdt). Custom metadata records store configuration values that can be read in Apex, Flows, and formulas. Provide typeName (e.g., 'Config__mdt'), a record name, and field values.`,
|
|
24
|
+
inputSchema: CreateCustomMetadataRecordSchema,
|
|
25
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
26
|
+
}, async (params) => {
|
|
27
|
+
const auth = await getAuth();
|
|
28
|
+
const result = await createCustomMetadataRecord(auth, {
|
|
29
|
+
typeName: params.typeName,
|
|
30
|
+
recordName: params.recordName,
|
|
31
|
+
label: params.label,
|
|
32
|
+
values: params.values,
|
|
33
|
+
});
|
|
34
|
+
return resultContent(result);
|
|
35
|
+
});
|
|
36
|
+
server.registerTool("sf_create_custom_label", {
|
|
37
|
+
title: "Create or Update Custom Label",
|
|
38
|
+
description: `Creates or updates a Salesforce Custom Label. Custom Labels are text values accessible in Apex, Visualforce, LWC, and Flows, with support for translation. Use for internationalizable text strings, error messages, or UI labels.`,
|
|
39
|
+
inputSchema: CreateCustomLabelSchema,
|
|
40
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
41
|
+
}, async (params) => {
|
|
42
|
+
const auth = await getAuth();
|
|
43
|
+
const result = await createCustomLabel(auth, {
|
|
44
|
+
fullName: params.fullName,
|
|
45
|
+
value: params.value,
|
|
46
|
+
language: params.language,
|
|
47
|
+
categories: params.categories,
|
|
48
|
+
protected: params.protected,
|
|
49
|
+
shortDescription: params.shortDescription,
|
|
50
|
+
});
|
|
51
|
+
return resultContent(result);
|
|
52
|
+
});
|
|
53
|
+
server.registerTool("sf_create_custom_setting", {
|
|
54
|
+
title: "Create Custom Setting",
|
|
55
|
+
description: `Creates a Custom Setting object (ending in __c) with Hierarchy or List type. Custom Settings store data accessible via Apex without SOQL queries. Hierarchy type supports org/profile/user level overrides. Use for feature flags, thresholds, or configurable constants.`,
|
|
56
|
+
inputSchema: CreateCustomSettingSchema,
|
|
57
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
58
|
+
}, async (params) => {
|
|
59
|
+
const auth = await getAuth();
|
|
60
|
+
const result = await createCustomSetting(auth, {
|
|
61
|
+
fullName: params.fullName,
|
|
62
|
+
label: params.label,
|
|
63
|
+
settingType: params.settingType,
|
|
64
|
+
visibility: params.visibility,
|
|
65
|
+
description: params.description,
|
|
66
|
+
fields: params.fields,
|
|
67
|
+
});
|
|
68
|
+
return resultContent(result);
|
|
69
|
+
});
|
|
70
|
+
server.registerTool("sf_create_global_value_set", {
|
|
71
|
+
title: "Create Global Value Set (Shared Picklist)",
|
|
72
|
+
description: `Creates a Global Value Set — a shared picklist definition that can be referenced by multiple Picklist fields across different objects. Any change to the Global Value Set is reflected in all fields that use it. Use when the same set of values (like Status, Priority, Region) should be shared and kept in sync across multiple objects.`,
|
|
73
|
+
inputSchema: CreateGlobalValueSetSchema,
|
|
74
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
75
|
+
}, async (params) => {
|
|
76
|
+
const auth = await getAuth();
|
|
77
|
+
const result = await createGlobalValueSet(auth, {
|
|
78
|
+
fullName: params.fullName,
|
|
79
|
+
masterLabel: params.masterLabel,
|
|
80
|
+
description: params.description,
|
|
81
|
+
sorted: params.sorted,
|
|
82
|
+
values: params.values,
|
|
83
|
+
});
|
|
84
|
+
return resultContent(result);
|
|
85
|
+
});
|
|
86
|
+
server.registerTool("sf_create_record_type", {
|
|
87
|
+
title: "Create Record Type",
|
|
88
|
+
description: `Creates a Record Type on a Salesforce object. Record Types allow different page layouts, picklist values, and business processes for different types of records on the same object. For example, create 'Enterprise' and 'SMB' record types on Opportunity with different Stage values.`,
|
|
89
|
+
inputSchema: CreateRecordTypeSchema,
|
|
90
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
91
|
+
}, async (params) => {
|
|
92
|
+
const auth = await getAuth();
|
|
93
|
+
const result = await createRecordType(auth, {
|
|
94
|
+
objectName: params.objectName,
|
|
95
|
+
fullName: params.fullName,
|
|
96
|
+
label: params.label,
|
|
97
|
+
description: params.description,
|
|
98
|
+
businessProcess: params.businessProcess,
|
|
99
|
+
isActive: params.isActive,
|
|
100
|
+
picklistValues: params.picklistValues,
|
|
101
|
+
});
|
|
102
|
+
return resultContent(result);
|
|
103
|
+
});
|
|
104
|
+
server.registerTool("sf_create_business_process", {
|
|
105
|
+
title: "Create Business Process",
|
|
106
|
+
description: `Creates a Business Process for Opportunity (Stage values), Lead (Status values), Case (Status values), or Solution (Status values). Business Processes define which picklist values are available for a given Record Type. Must be created before assigning to a Record Type.`,
|
|
107
|
+
inputSchema: CreateBusinessProcessSchema,
|
|
108
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
109
|
+
}, async (params) => {
|
|
110
|
+
const auth = await getAuth();
|
|
111
|
+
const result = await createBusinessProcess(auth, {
|
|
112
|
+
objectName: params.objectName,
|
|
113
|
+
processName: params.processName,
|
|
114
|
+
label: params.label,
|
|
115
|
+
description: params.description,
|
|
116
|
+
isActive: params.isActive,
|
|
117
|
+
values: params.values,
|
|
118
|
+
});
|
|
119
|
+
return resultContent(result);
|
|
120
|
+
});
|
|
121
|
+
server.registerTool("sf_create_page_layout", {
|
|
122
|
+
title: "Create Page Layout",
|
|
123
|
+
description: `Creates a Page Layout for a Salesforce object. Page Layouts control what fields, related lists, and buttons appear on record detail and edit pages. Layouts are assigned to user profiles and record types. Define sections with fields and the related lists to include.`,
|
|
124
|
+
inputSchema: CreatePageLayoutSchema,
|
|
125
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
126
|
+
}, async (params) => {
|
|
127
|
+
const auth = await getAuth();
|
|
128
|
+
const result = await createPageLayout(auth, {
|
|
129
|
+
objectName: params.objectName,
|
|
130
|
+
layoutName: params.layoutName,
|
|
131
|
+
label: params.label,
|
|
132
|
+
sections: params.sections,
|
|
133
|
+
relatedLists: params.relatedLists,
|
|
134
|
+
});
|
|
135
|
+
return resultContent(result);
|
|
136
|
+
});
|
|
137
|
+
server.registerTool("sf_create_sharing_rule", {
|
|
138
|
+
title: "Create Sharing Rule",
|
|
139
|
+
description: `Creates a Sharing Rule for a Salesforce object. Sharing Rules extend the OWD by automatically sharing records with users who meet criteria (criteria-based) or who own records (ownership-based). Use to give specific roles/groups access to records they wouldn't normally see based on OWD.`,
|
|
140
|
+
inputSchema: CreateSharingRuleSchema,
|
|
141
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
142
|
+
}, async (params) => {
|
|
143
|
+
const auth = await getAuth();
|
|
144
|
+
const result = await createSharingRule(auth, {
|
|
145
|
+
objectName: params.objectName,
|
|
146
|
+
ruleName: params.ruleName,
|
|
147
|
+
label: params.label,
|
|
148
|
+
ruleType: params.ruleType,
|
|
149
|
+
accessLevel: params.accessLevel,
|
|
150
|
+
sharedTo: params.sharedTo,
|
|
151
|
+
criteriaItems: params.criteriaItems,
|
|
152
|
+
sharedFrom: params.sharedFrom,
|
|
153
|
+
});
|
|
154
|
+
return resultContent(result);
|
|
155
|
+
});
|
|
156
|
+
server.registerTool("sf_create_field_dependency", {
|
|
157
|
+
title: "Create Field Dependency (Controlling/Dependent Picklist)",
|
|
158
|
+
description: `Creates a field dependency between a controlling picklist and a dependent picklist on the same object. When a user selects a value in the controlling field, only the relevant dependent field values appear. Example: when Country = 'USA', State shows only US states.`,
|
|
159
|
+
inputSchema: CreateFieldDependencySchema,
|
|
160
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
161
|
+
}, async (params) => {
|
|
162
|
+
const auth = await getAuth();
|
|
163
|
+
const result = await createFieldDependency(auth, {
|
|
164
|
+
objectName: params.objectName,
|
|
165
|
+
controllingField: params.controllingField,
|
|
166
|
+
dependentField: params.dependentField,
|
|
167
|
+
valueSettings: params.valueSettings,
|
|
168
|
+
});
|
|
169
|
+
return resultContent(result);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=objects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.js","sourceRoot":"","sources":["../../src/tools/objects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/tools/security.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiG7D"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { CreatePermissionSetSchema, CreateRoleSchema, CreateQueueSchema, CreateNamedCredentialSchema, } from "../schemas/index.js";
|
|
2
|
+
import { getAuth, createPermissionSet, createRole, createQueue, createNamedCredential, } from "../services/salesforce.js";
|
|
3
|
+
import { resultContent } from "./utils.js";
|
|
4
|
+
export function registerSecurityTools(server) {
|
|
5
|
+
server.registerTool("sf_create_permission_set", {
|
|
6
|
+
title: "Create Permission Set",
|
|
7
|
+
description: `Creates a Permission Set with object permissions, field permissions, Apex class access, and user permissions. Permission Sets extend a user's access without changing their profile. Use when you need to grant specific permissions to a subset of users (e.g., a 'Sales Manager' permission set that allows deleting opportunities).`,
|
|
8
|
+
inputSchema: CreatePermissionSetSchema,
|
|
9
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
10
|
+
}, async (params) => {
|
|
11
|
+
const auth = await getAuth();
|
|
12
|
+
const result = await createPermissionSet(auth, {
|
|
13
|
+
fullName: params.fullName,
|
|
14
|
+
label: params.label,
|
|
15
|
+
description: params.description,
|
|
16
|
+
userLicense: params.userLicense,
|
|
17
|
+
objectPermissions: params.objectPermissions,
|
|
18
|
+
fieldPermissions: params.fieldPermissions,
|
|
19
|
+
apexClassAccesses: params.apexClassAccesses,
|
|
20
|
+
userPermissions: params.userPermissions,
|
|
21
|
+
tabSettings: params.tabSettings,
|
|
22
|
+
});
|
|
23
|
+
return resultContent(result);
|
|
24
|
+
});
|
|
25
|
+
server.registerTool("sf_create_role", {
|
|
26
|
+
title: "Create Role",
|
|
27
|
+
description: `Creates a Role in the Salesforce role hierarchy. Roles control record visibility through role-based sharing. Users in higher roles can see records owned by users in subordinate roles. Specify a parentRole to place this role in the hierarchy, or omit it for a top-level role.`,
|
|
28
|
+
inputSchema: CreateRoleSchema,
|
|
29
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
30
|
+
}, async (params) => {
|
|
31
|
+
const auth = await getAuth();
|
|
32
|
+
const result = await createRole(auth, {
|
|
33
|
+
fullName: params.fullName,
|
|
34
|
+
name: params.name,
|
|
35
|
+
description: params.description,
|
|
36
|
+
parentRole: params.parentRole,
|
|
37
|
+
caseAccessLevel: params.caseAccessLevel,
|
|
38
|
+
contactAccessLevel: params.contactAccessLevel,
|
|
39
|
+
opportunityAccessLevel: params.opportunityAccessLevel,
|
|
40
|
+
accountAccessLevel: params.accountAccessLevel,
|
|
41
|
+
mayForecastManagerShare: params.mayForecastManagerShare,
|
|
42
|
+
});
|
|
43
|
+
return resultContent(result);
|
|
44
|
+
});
|
|
45
|
+
server.registerTool("sf_create_queue", {
|
|
46
|
+
title: "Create Queue",
|
|
47
|
+
description: `Creates a Queue in Salesforce. Queues are groups of users that can be assigned records (Cases, Leads, etc.). When a record is assigned to a queue, any queue member can work on it. Use for support teams, sales teams, or any scenario where multiple people share a pool of records to process.`,
|
|
48
|
+
inputSchema: CreateQueueSchema,
|
|
49
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
50
|
+
}, async (params) => {
|
|
51
|
+
const auth = await getAuth();
|
|
52
|
+
const result = await createQueue(auth, {
|
|
53
|
+
fullName: params.fullName,
|
|
54
|
+
name: params.name,
|
|
55
|
+
email: params.email,
|
|
56
|
+
doesSendEmailToMembers: params.doesSendEmailToMembers,
|
|
57
|
+
supportedObjects: params.supportedObjects,
|
|
58
|
+
queueMembers: params.queueMembers,
|
|
59
|
+
});
|
|
60
|
+
return resultContent(result);
|
|
61
|
+
});
|
|
62
|
+
server.registerTool("sf_create_named_credential", {
|
|
63
|
+
title: "Create Named Credential",
|
|
64
|
+
description: `Creates a Named Credential for making authenticated callouts to external systems from Apex or Flows. Named Credentials store the endpoint URL and authentication details securely, so developers don't hardcode credentials. Supports NoAuthentication, Basic (username/password), OAuth, and more. Use with sf_create_remote_site_setting to also whitelist the URL.`,
|
|
65
|
+
inputSchema: CreateNamedCredentialSchema,
|
|
66
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
67
|
+
}, async (params) => {
|
|
68
|
+
const auth = await getAuth();
|
|
69
|
+
const result = await createNamedCredential(auth, {
|
|
70
|
+
fullName: params.fullName,
|
|
71
|
+
label: params.label,
|
|
72
|
+
endpoint: params.endpoint,
|
|
73
|
+
principalType: params.principalType,
|
|
74
|
+
protocol: params.protocol,
|
|
75
|
+
username: params.username,
|
|
76
|
+
allowFormula: params.allowFormula,
|
|
77
|
+
allowCallout: params.allowCallout,
|
|
78
|
+
});
|
|
79
|
+
return resultContent(result);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/tools/security.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/tools/ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8BzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0OvD"}
|