Skip to main content
Glama
uoparaji

salesforce-mcp

by uoparaji
README.md
# Salesforce MCP Server

A [Model Context Protocol](https://modelcontextprotocol.io/) server that connects AI assistants to Salesforce orgs. Enables querying, searching, creating, updating, and managing Salesforce data through natural language via any MCP-compatible client.

## Setup

### Prerequisites

- Node.js 18+
- A Salesforce org with API access

### Installation

```bash
npm install
```

### Configuration

Copy the example env file and fill in your Salesforce credentials:

```bash
cp .env.example .env
```

| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `SF_USERNAME` | Yes | — | Salesforce username |
| `SF_PASSWORD` | Yes | — | Salesforce password |
| `SF_SECURITY_TOKEN` | No | `""` | Security token (appended to password) |
| `SF_LOGIN_URL` | No | `https://login.salesforce.com` | Login URL (use `https://test.salesforce.com` for sandboxes) |

### Build & Run

```bash
npm run build
npm start
```

## MCP Client Configuration

Add to your MCP client config (e.g. Claude Desktop `claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "salesforce": {
      "command": "node",
      "args": ["/absolute/path/to/salesforce_mcp/dist/index.js"],
      "env": {
        "SF_USERNAME": "your_username",
        "SF_PASSWORD": "your_password",
        "SF_SECURITY_TOKEN": "your_token",
        "SF_LOGIN_URL": "https://login.salesforce.com"
      }
    }
  }
}
```

## Available Tools

### Query & Search
- **salesforce_query** — Execute a SOQL query (first batch, up to 2000 records)
- **salesforce_query_all** — SOQL query with automatic pagination (configurable max records)
- **salesforce_query_more** — Fetch next batch using `nextRecordsUrl`
- **salesforce_search** — Execute a SOSL search

### Object Metadata
- **salesforce_describe_object** — Get fields, relationships, and record types for an sObject
- **salesforce_list_objects** — List all sObjects in the org

### CRUD Operations
- **salesforce_get_record** — Get a record by ID
- **salesforce_create_record** — Create a new record
- **salesforce_update_record** — Update an existing record
- **salesforce_delete_record** — Delete a record by ID

### Reports & Dashboards
- **salesforce_list_reports** — List all reports
- **salesforce_run_report** — Execute a report by ID
- **salesforce_describe_report** — Get report metadata (columns, filters, groupings)
- **salesforce_list_dashboards** — List all dashboards
- **salesforce_get_dashboard** — Get dashboard component data and status

### Tooling API
- **salesforce_tooling_query** — Query Apex classes, triggers, flows, validation rules, etc.
- **salesforce_get_metadata_component** — Retrieve full source of a metadata component
- **salesforce_describe_tooling_object** — Get fields for a Tooling API sObject

### Apex Execution
- **salesforce_execute_apex** — Run anonymous Apex code

### Org Info & REST
- **salesforce_get_org_limits** — View API call limits, storage usage, etc.
- **salesforce_get_org_info** — Org edition, instance, API version, user info
- **salesforce_rest_api** — Generic REST API call for any endpoint

## License

MIT