Skip to main content
Glama
dsouza-anush

Salesforce MCP Server for Heroku

by dsouza-anush
README.md
# Salesforce MCP Server for Heroku

A Model Context Protocol (MCP) server that enables AI agents to interact with Salesforce CRM data.

[![Deploy to Heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/dsouza-anush/mcp-salesforce)

## Features

- **SOQL Queries** - Execute any SOQL query against your Salesforce org
- **Object Metadata** - Discover fields and relationships for any object
- **Record Management** - Create, update, and delete records
- **Heroku Native** - Designed for Heroku deployment with MCP process support

## Available Tools

| Tool | Description |
|------|-------------|
| `query` | Execute SOQL queries |
| `describe_object` | Get object metadata (fields, types, relationships) |
| `create` | Create new records |
| `update` | Update existing records |
| `delete` | Delete records |

## Deployment

### One-Click Deploy

Click the "Deploy to Heroku" button above, then configure your Salesforce credentials.

### Manual Deploy

```bash
git clone https://github.com/dsouza-anush/mcp-salesforce
cd mcp-salesforce
heroku create my-salesforce-mcp
git push heroku main
```

### Configure Credentials

```bash
heroku config:set SF_USERNAME=your-username@example.com
heroku config:set SF_PASSWORD=your-password
heroku config:set SF_SECURITY_TOKEN=your-security-token
heroku config:set SF_LOGIN_URL=https://login.salesforce.com
```

For sandbox orgs, use `https://test.salesforce.com` as the login URL.

## Register with Heroku AI

After deployment, attach your Heroku AI model:

```bash
heroku addons:attach your-main-app::INFERENCE -a my-salesforce-mcp
```

The `mcp-salesforce` process is now available via `/v1/agents/heroku`.

## Usage Example

```python
from openai import OpenAI

client = OpenAI(
    base_url=os.getenv("INFERENCE_URL") + "/v1",
    api_key=os.getenv("INFERENCE_KEY")
)

response = client.chat.completions.create(
    model=os.getenv("INFERENCE_MODEL_ID"),
    messages=[
        {"role": "user", "content": "Find all opportunities closing this quarter"}
    ],
    extra_body={
        "heroku": {
            "mcp_servers": ["mcp-salesforce"]
        }
    }
)
```

## Environment Variables

| Variable | Description | Required |
|----------|-------------|----------|
| `SF_LOGIN_URL` | Salesforce login URL | No (defaults to production) |
| `SF_USERNAME` | Salesforce username | Yes |
| `SF_PASSWORD` | Salesforce password | Yes |
| `SF_SECURITY_TOKEN` | Security token (if required) | No |
| `API_KEY` | API key for web endpoint | No |

## License

MIT