UNPKG

@advanced-communities/salesforce-mcp-server

Version:

MCP server enabling AI assistants to interact with Salesforce orgs through the Salesforce CLI

73 lines (72 loc) 3.02 kB
#!/usr/bin/env node import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { registerApexTools } from "./tools/apex.js"; import { registerOrgTools } from "./tools/orgs.js"; import { registerOrgTools as registerRecordTools } from "./tools/records.js"; import { registerSObjectTools } from "./tools/sobjects.js"; import { registerQueryTools } from "./tools/query.js"; import { registerAdminTools } from "./tools/admin.js"; import { registerCodeAnalyzerTools } from "./tools/code-analyzer.js"; import { registerScannerTools } from "./tools/scanner.js"; import { registerPackageTools } from "./tools/package.js"; import { registerSchemaTools } from "./tools/schema.js"; import { registerSearchTools } from "./tools/search.js"; import { registerLightningTools } from "./tools/lightning.js"; import { registerProjectTools } from "./tools/project.js"; import { permissions } from "./config/permissions.js"; /** * Builds a dynamic server description based on current permissions and capabilities * @returns Formatted description string with server details */ function buildServerDescription() { const readOnlyMode = permissions.isReadOnly(); const allowedOrgs = permissions.getAllowedOrgs(); const permissionInfo = []; let description = `Salesforce MCP Server v1.5.3 - AI-powered Salesforce automation via CLI integration\n`; description += `Capabilities: Apex execution, SOQL queries, org management, code testing & coverage\n`; if (readOnlyMode) { permissionInfo.push("READ-ONLY mode (Apex execution disabled)"); } if (allowedOrgs !== "ALL") { permissionInfo.push(`Access restricted to: ${allowedOrgs.join(", ")}`); } if (permissionInfo.length > 0) { description += `Security: ${permissionInfo.join(" | ")}`; } else { description += `Security: Full access enabled for all authenticated orgs`; } description += `\nTools: 38 available (apex, query, search, sobject, org management, records, admin, code analyzer, scanner, package, schema, lightning, project deployment)`; return description; } const server = new McpServer({ name: "salesforce-mcp-server", version: "1.5.0", description: buildServerDescription(), capabilities: { tools: {}, }, }); registerApexTools(server); registerOrgTools(server); registerRecordTools(server); registerSObjectTools(server); registerQueryTools(server); registerAdminTools(server); registerCodeAnalyzerTools(server); registerScannerTools(server); registerPackageTools(server); registerSchemaTools(server); registerSearchTools(server); registerLightningTools(server); registerProjectTools(server); async function main() { const transport = new StdioServerTransport(); await server.connect(transport); console.error("Salesforce MCP Server running on stdio"); } main().catch((error) => { console.error("Fatal error in main():", error); process.exit(1); });