An open API service indexing awesome lists of open source software.

https://github.com/AiondaDotCom/mcp-salesforce

πŸš€ Complete MCP (Model Context Protocol) server for Salesforce integration with Claude Desktop. Provides seamless OAuth authentication, universal CRUD operations on any Salesforce object.
https://github.com/AiondaDotCom/mcp-salesforce

api-integration claude-desktop crm linux macos mcp model-context-protocol nodejs oauth salesforce

Last synced: 29 days ago
JSON representation

πŸš€ Complete MCP (Model Context Protocol) server for Salesforce integration with Claude Desktop. Provides seamless OAuth authentication, universal CRUD operations on any Salesforce object.

Awesome Lists containing this project

README

          

# MCP Salesforce Server

[![CI](https://github.com/AiondaDotCom/mcp-salesforce/actions/workflows/ci.yml/badge.svg)](https://github.com/AiondaDotCom/mcp-salesforce/actions/workflows/ci.yml)

A **Model Context Protocol (MCP) server** that provides seamless integration with Salesforce using OAuth authentication. This server enables AI assistants like Claude to interact with any Salesforce organization through a secure, generic interface.

## ✨ Features

- **🎯 Seamless Authentication** - Claude automatically detects when authentication is needed and handles it transparently
- **πŸš€ Zero Manual Setup** - No need to run terminal commands or manual OAuth flows
- **πŸ” OAuth-Only Authentication** - Secure browser-based setup with automatic token refresh
- **🌐 Universal Salesforce Integration** - Works with any Salesforce org, including custom objects and fields
- **🧠 Smart Installation Learning** - Analyzes your complete Salesforce setup to provide intelligent assistance
- **πŸ” Dynamic Schema Discovery** - Automatically adapts to your Salesforce configuration
- **πŸ”’ Secure Token Storage** - File-based storage with strict permissions for production-grade security
- **🏠 Cross-Platform Home Directory Storage** - Credentials and cache stored in user's home directory
- **πŸ“ Full CRUD Operations** - Query, create, update, and delete any Salesforce records
- **πŸ“Š Schema Inspection** - Get detailed information about objects and fields
- **πŸ’‘ Context-Aware Suggestions** - Provides intelligent field and object name suggestions
- **πŸ’Ύ Comprehensive Backup System** - Complete data and file backup with support for all Salesforce file systems
- **⏰ Time Machine Feature** - Point-in-time data recovery and historical analysis
- **πŸ“ Multi-Format File Support** - Backs up ContentVersions, Attachments, and Documents with proper metadata

## πŸš€ Quick Start

### Prerequisites

- **Node.js 18+**
- **macOS** (required for secure credential storage)
- **Salesforce Connected App** with OAuth configured

### Installation Options

#### 🎯 **Recommended: NPX Usage (No Installation Required)**

Use NPX to run the MCP server without any permanent installation:

```json
{
"mcpServers": {
"salesforce": {
"command": "npx",
"args": ["@aiondadotcom/mcp-salesforce"]
}
}
}
```

**βœ… Benefits of NPX Usage:**
- πŸ”„ **Always Latest**: Automatically uses the latest published version
- πŸ’Ύ **No Disk Space**: No permanent installation required
- πŸ›‘οΈ **No Conflicts**: No global package conflicts
- ⚑ **Easy Updates**: Just restart - gets latest version automatically
- πŸ“‹ **Simple Config**: Copy-paste ready MCP configuration

**NPX Command Line Usage:**
```bash
# Get version
npx -p @aiondadotcom/mcp-salesforce mcp-salesforce --version

# Get help
npx -p @aiondadotcom/mcp-salesforce mcp-salesforce --help

# Run OAuth setup
npx -p @aiondadotcom/mcp-salesforce mcp-salesforce setup
```

#### πŸ”§ **Alternative: Development Setup**

For development or customization:

1. **Clone and install dependencies**:
```bash
git clone https://github.com/AiondaDotCom/mcp-salesforce.git
cd mcp-salesforce
npm install
```

2. **Configure credentials**: Use the `salesforce_setup` tool to configure your credentials when prompted

3. **Add to Claude Desktop** using local path (see [Configuration](#configuration) below)

### 🎯 **Start Using**

That's it! Claude will automatically handle setup and authentication when you first use any Salesforce tool.

**✨ Interactive Setup Process!**
- Use the `salesforce_setup` tool to configure your credentials
- Claude will ask you for your Salesforce Connected App details
- Credentials are stored securely in your home directory
- Seamless OAuth flow directly from Claude Desktop

**🧠 Smart Learning System**
- Use `salesforce_learn` to analyze your complete Salesforce installation
- Claude learns all your custom objects, fields, and relationships
- Provides intelligent suggestions based on your specific setup
- Context-aware assistance for complex Salesforce environments

## πŸ“¦ NPM Package Status

βœ… **Package Successfully Published!**

The package `@aiondadotcom/mcp-salesforce` is now **live on NPM** and ready for use.

### Using the Published Package

NPX usage is now available for all users:

```bash
# Test the published package
npx -p @aiondadotcom/mcp-salesforce mcp-salesforce --version
npx -p @aiondadotcom/mcp-salesforce mcp-salesforce --help

# Run OAuth setup
npx -p @aiondadotcom/mcp-salesforce mcp-salesforce setup
```

### Publication Details

- **Package Name**: `@aiondadotcom/mcp-salesforce`
- **Version**: `1.0.7` (latest)
- **Registry**: NPM Public Registry
- **Organization**: `@aiondadotcom`
- **Access**: Public

**Status**:
- βœ… Package published to NPM
- βœ… NPX compatibility verified
- βœ… Binary wrapper implemented
- βœ… Setup command functional
- βœ… MCP configuration ready
- βœ… **Available for immediate use**

πŸŽ‰ All NPX functionality now works for end users worldwide!

## πŸ”§ Configuration

### Salesforce Connected App Setup

1. In Salesforce Setup, create a new Connected App:
- **App Name**: MCP Salesforce Integration
- **API Name**: mcp_salesforce_integration
- **Contact Email**: Your email
- **Enable OAuth Settings**: βœ… Yes
- **Callback URL**: `http://localhost:8080/callback` (will be auto-generated)
- **Selected OAuth Scopes**:
- Manage user data via APIs (api)
- Perform requests at any time (refresh_token, offline_access)

2. After saving, copy the **Consumer Key** and **Consumer Secret**

### Credential Configuration

Configure your credentials using the `salesforce_setup` tool when you first use the application:

1. **Interactive Setup**: Claude will prompt you for your Salesforce credentials
2. **Client ID**: Your Salesforce Connected App Consumer Key
3. **Client Secret**: Your Salesforce Connected App Consumer Secret
4. **Instance URL**: Your Salesforce organization URL (e.g., `https://mycompany.salesforce.com`)

The tool will validate your input and store credentials securely in `~/.mcp-salesforce.json` with restricted permissions (600).

**πŸ“ File Locations:**
- **Credentials**: `~/.mcp-salesforce.json` (contains OAuth tokens and credentials)
- **Cache**: `~/.mcp-salesforce-cache/` (contains learned Salesforce schema and context)
- **Cross-Platform**: Works on Windows, macOS, and Linux

**Example interaction:**
```
Claude: I need to set up your Salesforce credentials first. Please use the salesforce_setup tool with your credentials.

You: Use the salesforce_setup tool with clientId: "3MVG9...", clientSecret: "1234567890...", instanceUrl: "https://mycompany.salesforce.com"

Claude: βœ… Salesforce credentials configured successfully! You can now use other Salesforce tools.
```

### Claude Desktop Integration

#### 🎯 **NPX Configuration (Recommended)**

Add this to your Claude Desktop MCP configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
"mcpServers": {
"salesforce": {
"command": "npx",
"args": ["@aiondadotcom/mcp-salesforce"]
}
}
}
```

#### πŸ”§ **Development/Local Configuration**

For development or customized installations:

```json
{
"mcpServers": {
"salesforce": {
"command": "node",
"args": ["/path/to/mcp-salesforce/src/index.js"]
}
}
}
```

#### 🌐 **VS Code MCP Configuration**

For VS Code with MCP extension:

```json
{
"servers": {
"salesforce": {
"command": "npx",
"args": ["@aiondadotcom/mcp-salesforce"]
}
}
}
```

## πŸ“Έ Demo Screenshots

Here's a step-by-step walkthrough of the MCP Salesforce Server in action, showing a real-world use case of verifying and updating company address information:

### Step 1: Address Verification Request
![Address Verification](docs/step1.png)
*Claude checking if the Aionda GmbH account in Salesforce has the correct address by comparing it with their current website address*

### Step 2: Address Comparison Results
![Address Analysis](docs/step2.png)
*Claude identifying that the Salesforce address is outdated, showing detailed comparison between the current Salesforce data and the actual address from the company website*

### Step 3: Automated Address Update
![Address Update](docs/step3.png)
*Claude successfully updating the Salesforce account with the correct current address, showing exactly which fields were changed*

### Step 4: Verification in Salesforce
![Salesforce Confirmation](docs/step4.png)
*The updated account record in Salesforce showing the corrected address information is now accurate and up-to-date*

## πŸ› οΈ Available Tools

### `salesforce_learn`
**🧠 Learns your complete Salesforce installation** - Analyzes all objects, fields and customizations once and stores this information locally for intelligent assistance.

```javascript
// One-time analysis of the Salesforce installation
{}

// Force complete re-analysis
{
"force_refresh": true,
"detailed_relationships": true
}
```

**Why important?**
- Claude learns your Custom Objects like "TimeTracking__c", "Project__c", etc.
- Recognizes all Custom Fields and their data types
- Provides intelligent suggestions based on your specific configuration
- Run once, then the AI benefits from it permanently

### `salesforce_installation_info`
**πŸ“Š Overview of your learned Salesforce installation** - Shows available objects, Custom Fields and customizations.

```javascript
// Complete overview of the installation
{}

// Details about a specific object
{
"object_name": "TimeTracking__c"
}

// Search for specific fields
{
"field_search": "email",
"show_custom_only": true
}
```

### `salesforce_query`
Execute SOQL queries against any Salesforce object.

```javascript
// Example: Get recent contacts
{
"query": "SELECT Id, FirstName, LastName, Email FROM Contact WHERE CreatedDate = THIS_MONTH ORDER BY CreatedDate DESC LIMIT 10"
}
```

**🧠 Smart Learning Integration:**
- Automatically warns when installation has not been learned yet
- Suggests available objects and fields
- Helps with correct API names

### `salesforce_create`
Create new records in any Salesforce object.

```javascript
// Example: Create a new contact
{
"sobject": "Contact",
"data": {
"FirstName": "John",
"LastName": "Doe",
"Email": "john.doe@example.com",
"Phone": "555-1234"
}
}
```

**🧠 Smart Context:** Automatically shows required fields for the selected object when the installation has been learned.

### `salesforce_update`
Update existing records.

```javascript
// Example: Update a contact's email
{
"sobject": "Contact",
"id": "003XX000008b6cYAQ",
"data": {
"Email": "new.email@example.com",
"Phone": "555-5678"
}
}
```

**🧠 Smart Context:** Considers field permissions and data types from the learned installation.

### `salesforce_delete`
Delete records (⚠️ permanent action).

```javascript
// Example: Delete a record
{
"sobject": "Contact",
"id": "003XX000008b6cYAQ"
}
```

### `salesforce_describe`
Get schema information for objects and fields.

```javascript
// Example: Get Contact object schema
{
"sobject": "Contact"
}

// Or get list of all available objects
{} // Empty parameters
```

### `salesforce_backup`
**πŸ’Ύ Comprehensive Backup System for Salesforce** - Creates complete backups of all data and files with detailed recovery information.

```javascript
// Create complete backup
{}

// Incremental backup since specific date
{
"backup_type": "incremental",
"since_date": "2025-01-01T00:00:00Z"
}

// Backup with specific options
{
"options": {
"include_files": true,
"include_attachments": true,
"include_documents": true,
"parallel_downloads": 10
}
}
```

**What is backed up:**
- **πŸ“Š All Object Data** - All queryable objects with up to 20 fields per object
- **πŸ“ Modern Files** - ContentVersions with complete metadata
- **πŸ“Ž Legacy Attachments** - Classic attachments with correct file extensions
- **πŸ“„ Documents** - Folder-based documents from the legacy system
- **πŸ—οΈ Schema Information** - Complete object structures and relationships
- **πŸ“‹ Backup Manifest** - Detailed statistics and recovery information

**Backup Structure:**
```
salesforce-backup-2025-06-04T16-16-35-660Z/
β”œβ”€β”€ metadata/ # Schema and object definitions
β”œβ”€β”€ data/ # JSON data of all objects
β”œβ”€β”€ files/
β”‚ β”œβ”€β”€ content-versions/ # Modern files
β”‚ β”œβ”€β”€ attachments/ # Legacy attachments
β”‚ └── documents/ # Legacy documents
└── backup-manifest.json # Backup overview
```

### `salesforce_backup_list`
**πŸ“‹ Show Available Backups** - Overview of all local backups with statistics and metadata.

```javascript
// List all available backups
{}

// Details about a specific backup
{
"backup_name": "salesforce-backup-2025-06-04T16-16-35-660Z"
}
```

### `salesforce_time_machine`
**⏰ Time Travel Through Salesforce Data** - Analyzes data changes between different backup time points and enables targeted recovery.

```javascript
// Compare current state with a backup
{
"backup_timestamp": "2025-06-04T16:16:35.660Z",
"object_name": "Account"
}

// Show all changes since a specific backup
{
"backup_timestamp": "2025-06-04T16:16:35.660Z",
"show_all_changes": true
}

// Detailed analysis for specific records
{
"backup_timestamp": "2025-06-04T16:16:35.660Z",
"object_name": "Contact",
"record_id": "003XX000008b6cYAQ"
}
```

**Time Machine Features:**
- **πŸ“Š Data Comparison** - Shows differences between backup and current state
- **πŸ” Change History** - Which fields were changed when
- **πŸ—‘οΈ Deleted Records** - Finds records that were deleted since the backup
- **πŸ“ˆ Growth Analysis** - Statistical evaluation of data development
- **🎯 Targeted Recovery** - Precise identification of changes

### `salesforce_auth`
Authenticate with Salesforce. Automatically detects if authentication is needed and handles OAuth flow.

```javascript
// Example: Standard authentication (detects if needed)
{}

// Example: Force re-authentication even if tokens appear valid
{
"force": true
}
```

**✨ Key Features:**
- **Automatic Detection**: Claude automatically suggests this tool when authentication is needed
- **No Manual Setup**: Eliminates the need to run `npm run setup` manually
- **Smart Authentication**: Only authenticates when necessary, checks existing tokens first
- **Seamless Integration**: Works transparently in the background

This tool is **automatically suggested** when:
- You try to use Salesforce tools without authentication
- Your tokens have expired
- Authentication errors occur
- First-time setup is needed

## 🧠 Smart Learning System

### Why is Learning Important?

Every Salesforce installation is unique with:
- **Custom Objects** like "TimeTracking__c", "Project__c", "CustomerCare__c"
- **Custom Fields** on standard objects
- **Specific Workflows** and validation rules
- **Individual Data Structures**

The AI's normal training model only knows standard Salesforce objects. Without knowledge of your specific installation, the AI cannot provide intelligent assistance.

### How Does Learning Work?

1. **One-time Analysis**: `salesforce_learn` analyzes your complete installation
2. **Local Documentation**: All objects, fields and relationships are stored locally
3. **Intelligent Support**: Claude can then make precise suggestions and answer complex questions

### Example Workflow:

```
You: "Are there any time tracking entries for July 2025?"

Without Learning:
❌ Claude: "I don't know any object called 'TimeTracking'"

With Learning:
βœ… Claude: "I'm checking the 'TimeTracking__c' object for entries from July 2025..."
Automatically executes the correct SOQL query
```

### When Should You Use Learning?

- **During initial setup** - Once after installation
- **After major changes** - When new Custom Objects are added
- **When having problems** - When Claude doesn't find objects or fields

### What is Learned?

- **All SObjects** (Standard and Custom)
- **All Fields** with data types and permissions
- **Relationships** between objects
- **Picklist Values** and validation rules
- **Required Fields** for better validation

**πŸ’‘ Learning runs only once and then makes all further interactions much more intelligent!**

## πŸ’‘ Usage Examples

### πŸš€ First Steps After Installation

1. **Authentication**: Claude automatically detects when authentication is needed
2. **Start Learning**:
```
You: "Learn my Salesforce installation"
Claude: Automatically uses the salesforce_learn tool
```
3. **Explore Installation**:
```
You: "Show me an overview of my Salesforce installation"
Claude: Uses salesforce_installation_info for a summary
```

### πŸ” Intelligent Queries with Learned Installation

```
You: "Show me all projects from this year"
Claude: Automatically recognizes your "Project__c" Custom Object and creates:
SELECT Id, Name, StartDate__c, Status__c FROM Project__c WHERE CALENDAR_YEAR(CreatedDate) = 2025
```

```
You: "Are there any time tracking entries for July 2025?"
Claude: Finds your "TimeTracking__c" object and queries:
SELECT Id, Name, Month__c, Hours__c FROM TimeTracking__c WHERE Month__c = 'July 2025'
```

### Query Examples

```soql
-- Get all accounts in the technology industry
SELECT Id, Name, Industry, Website FROM Account WHERE Industry = 'Technology'

-- Find contacts created this week
SELECT Id, Name, Email, CreatedDate FROM Contact WHERE CreatedDate = THIS_WEEK

-- Get opportunities closing this quarter
SELECT Id, Name, Amount, CloseDate FROM Opportunity WHERE CloseDate = THIS_QUARTER
```

### Working with Custom Objects

The server automatically discovers custom objects:

```javascript
// Describe a custom object
{
"sobject": "CustomProject__c"
}

// Query custom object
{
"query": "SELECT Id, Name, CustomField__c FROM CustomProject__c LIMIT 10"
}

// Create custom object record
{
"sobject": "CustomProject__c",
"data": {
"Name": "New Project",
"CustomField__c": "Custom Value"
}
}
```

## πŸ’Ύ Backup & Time Machine Features

### πŸš€ Salesforce Backup System

The MCP Salesforce Server offers a **professional backup system** that can secure your complete Salesforce installation:

#### What Makes the Backup System Special?

- **🎯 Complete Coverage**: Backs up all three Salesforce file systems
- **Modern Files** (ContentDocument/ContentVersion)
- **Legacy Attachments** (classic attachments)
- **Documents** (folder-based legacy documents)

- **πŸ“Š Intelligent Data Collection**:
- All queryable objects (Standard + Custom)
- Up to 20 fields per object for comprehensive data backup
- Automatic filtering of binary fields

- **⚑ High Performance**:
- Parallel downloads with configurable concurrency
- Retry logic with exponential backoff
- Batch processing for large data volumes

#### Creating a Backup

```
You: "Create a backup of my Salesforce data"
Claude: Automatically starts the salesforce_backup tool
```

**Backup Result:**
```
βœ… Backup successfully created!
πŸ“Š Statistics:
- 7 objects backed up
- 1,247 records exported
- 6 files downloaded
- 4.07 MB total size
- Duration: 23 seconds

πŸ“ Location: /backups/salesforce-backup-2025-06-04T16-16-35-660Z/
```

#### Backup Structure

```
salesforce-backup-2025-06-04T16-16-35-660Z/
β”œβ”€β”€ backup-manifest.json # Backup overview with statistics
β”œβ”€β”€ metadata/
β”‚ β”œβ”€β”€ objects-schema.json # All object definitions
β”‚ └── file-manifest.json # File download protocol
β”œβ”€β”€ data/ # JSON data of all objects
β”‚ β”œβ”€β”€ Account.json # Account records
β”‚ β”œβ”€β”€ Contact.json # Contact records
β”‚ β”œβ”€β”€ Opportunity.json # Opportunity records
β”‚ └── CustomObject__c.json # Custom Object data
└── files/ # All Salesforce files
β”œβ”€β”€ content-versions/ # Modern files (.pdf, .docx, etc.)
β”œβ”€β”€ attachments/ # Legacy attachments
└── documents/ # Legacy documents
```

### ⏰ Time Machine Feature

The **Time Machine** enables you to travel through time and analyze data changes:

#### Main Features

- **πŸ” Data Comparison**: Compares current state with historical backups
- **πŸ“Š Change Analysis**: Shows exactly which fields have changed
- **πŸ—‘οΈ Deleted Records**: Finds records that were deleted since the backup
- **πŸ“ˆ Trend Analysis**: Statistical evaluation of data development

#### Using Time Machine

```
You: "Compare the current Account data with the backup from June 4th"
Claude: Uses salesforce_time_machine for detailed analysis
```

**Example Result:**
```
⏰ Time Machine Analysis - Account Object
πŸ“… Backup: 2025-06-04T16:16:35.660Z vs. Current

πŸ“Š Changes found:
β€’ Modified records: 3
β€’ New records: 2
β€’ Deleted records: 1

πŸ” Details:
Account "Aionda GmbH" (001XX000003DHPF):
- BillingStreet: "Alte Straße 1" β†’ "KΓΆnigstraße 10a"
- BillingCity: "MΓΌnchen" β†’ "Stuttgart"
- LastModifiedDate: 2025-06-04 β†’ 2025-06-04

Account "TechCorp Ltd" (001XX000003DHPG):
- Status: Active β†’ Inactive
- LastModifiedDate: 2025-06-03 β†’ 2025-06-04
```

#### Practical Use Cases

1. **πŸ“‹ Compliance & Audit**: Evidence of data changes
2. **πŸ”§ Error Analysis**: "What was different before the problem?"
3. **πŸ“Š Data Quality**: Monitoring data integrity
4. **🚨 Change Management**: Control over critical changes
5. **πŸ’‘ Business Intelligence**: Trend analysis over time

### 🎯 Recommended Backup Workflow

```
1. Initial Setup:
You: "Learn my Salesforce installation"
β†’ Claude analyzes your complete org

2. Regular Backups:
You: "Create a backup"
β†’ Claude backs up all data and files

3. Monitoring:
You: "Show me all available backups"
β†’ Claude lists backup history

4. Analysis:
You: "What has changed since the last backup?"
β†’ Claude uses Time Machine for comparison
```

**πŸ’‘ Pro Tip**: Combine Learning + Backup + Time Machine for maximum Salesforce control!

## πŸ”’ Security

- **Token Storage**: Refresh tokens stored securely in `cache/salesforce-tokens.json` with restricted file permissions (600)
- **No Plaintext Secrets**: Access tokens kept in memory only
- **Automatic Refresh**: Tokens refreshed automatically before expiration
- **Secure Cleanup**: Tokens removed from memory after use
- **Input Validation**: All inputs validated and sanitized
- **Migration**: File-based token storage with 600 permissions for secure credential management

## πŸ§ͺ Testing

```bash
# Run tests
npm test

# Test authentication
npm run setup -- --test

# Validate configuration
npm run setup -- --validate
```

## πŸ› Troubleshooting

### Authentication Issues

**🎯 Automatic Authentication**: Claude automatically detects authentication issues and suggests the `salesforce_auth` tool. No manual troubleshooting needed!

**Common Scenarios:**
1. **First-time use**: Claude will automatically suggest authentication when you first try to use Salesforce tools
2. **Token expiration**: When tokens expire, Claude detects this and prompts for re-authentication
3. **Invalid credentials**: Clear error messages guide you to fix configuration issues
4. **Session expired**: Automatic detection with friendly prompts to re-authenticate

### Token Security

**πŸ”’ Secure Token Storage**: Authentication tokens are stored securely in the local file system with strict permissions.

**Security Features:**
- **File Permissions**: Token files are created with `0600` permissions (readable/writable only by owner)
- **Location**: Tokens stored in `cache/salesforce-tokens.json` (excluded from git)
- **Automatic Security**: Permission verification and automatic fixing if needed
- **No Network Exposure**: Tokens never leave your local machine
- **File-based Security**: Secure token storage with strict file permissions for credential protection

**Security Verification:**
```bash
# Check token file security
ls -la cache/salesforce-tokens.json
# Should show: -rw------- (600 permissions)

# Run security test
node test-token-security.js
```

**What this means:**
- Other users on your system **cannot** read your Salesforce tokens
- Only your user account has access to the authentication data
- Prevents unauthorized access to your Salesforce organization
- Complies with security best practices for credential storage

### Quick Fix in Claude Desktop
If you get authentication errors, simply tell Claude:
```
Authenticate with Salesforce
```
Or Claude will automatically suggest: `Use the salesforce_auth tool to authenticate with Salesforce`

**✨ No more manual terminal setup!** Everything happens seamlessly through Claude Desktop.

### Connection Issues

1. **"Cannot connect to Salesforce"**: Verify your Instance URL
2. **"Insufficient permissions"**: Check user permissions in Salesforce
3. **"CORS errors"**: Ensure Connected App callback URL is correct

### Common SOQL Errors

1. **Field not found**: Use API names, not field labels
2. **Object not found**: Check spelling and API name of objects
3. **Syntax errors**: Ensure proper SOQL syntax with single quotes

## πŸ“š Documentation

- [OAuth Setup Guide](docs/oauth-guide.md) - Detailed Connected App configuration
- [Setup Instructions](docs/setup.md) - Step-by-step setup process
- [Usage Examples](docs/examples.md) - Comprehensive usage examples
- [Architecture Plan](mcp-salesforce-architecture.md) - Technical architecture details

## 🀝 Contributing

1. Fork the repository
2. Create a feature branch: `git checkout -b feature-name`
3. Make your changes and test thoroughly
4. Submit a pull request with detailed description

## πŸ“„ License

MIT License - see [LICENSE](LICENSE) file for details.

## πŸ†˜ Support

- **Issues**: Report bugs and feature requests via GitHub Issues
- **Documentation**: Check the `docs/` folder for detailed guides
- **Community**: Join discussions in GitHub Discussions

---

**Made with ❀️ for the MCP ecosystem**