# Salesforce Documentation MCP Server
[](https://modelcontextprotocol.io/)
[](https://nodejs.org/)
[](https://opensource.org/licenses/MIT)
A **local-first** Model Context Protocol (MCP) server for searching Salesforce Developer Documentation. Search across 360 official Salesforce PDF documents directly from VS Code, Claude Desktop, or any MCP-compatible client.
## โจ Features
- ๐ฏ **Intent-Based Search** - Automatically detects query topic (Apex, REST API, LWC, etc.) and searches in relevant docs
- ๐ **360 Documents** - 291 developer guides + 69 release notes (Apex, LWC, REST API, Metadata API, and more)
- ๐ **100% Local** - All data stays on your machine, works offline
- โก **Fast** - Sub-second query latency with intelligent filtering + LRU caching
- ๐ **Smart Fallback** - Expands search if topic-filtered results are sparse
- ๐ฆ **Packageable** - Pure JavaScript (sql.js), no native dependencies
- ๐ **Secure** - Parameterized queries, input validation with zod
## ๐ Quick Start
### Prerequisites
- Node.js 18 or higher
- npm or yarn
- VS Code with GitHub Copilot or Claude Desktop
### Installation
```bash
# Clone the repository
git clone https://github.com/SalesforceDiariesBySanket/salesforce-docs-mcp.git
cd salesforce-docs-mcp
# Install dependencies
npm install
# Build the TypeScript
npm run build
# Build the search index (parses all PDFs - takes 5-10 minutes)
npm run build-index
```
### Configure VS Code
Add to your VS Code MCP configuration (`%APPDATA%\Code\User\mcp.json` on Windows):
```json
{
"servers": {
"salesforce-docs": {
"type": "stdio",
"command": "node",
"args": ["C:\\path\\to\\salesforce-docs-mcp\\dist\\index.js"]
}
}
}
```
### Configure Claude Desktop
Add to your Claude Desktop configuration (`%APPDATA%\Claude\claude_desktop_config.json`):
```json
{
"mcpServers": {
"salesforce-docs": {
"command": "node",
"args": ["C:\\path\\to\\salesforce-docs-mcp\\dist\\index.js"]
}
}
}
```
## ๐ ๏ธ Available Tools
### `search_salesforce_docs`
Search across all Salesforce documentation with natural language queries.
```
Example: "How to create an Apex trigger on Account"
Example: "REST API authentication with OAuth 2.0"
Example: "Lightning Web Component wire service"
```
### `get_api_reference`
Get specific Salesforce API reference documentation.
```
Example: API name "REST API", endpoint "/services/data"
Example: API name "Bulk API 2.0", endpoint "jobs"
```
### `get_release_notes`
Get Salesforce release notes for specific releases or features.
```
Example: release "Winter 26"
Example: feature "Dynamic Forms"
```
### `get_code_example`
Get code examples from Salesforce documentation.
```
Example: topic "trigger on Account", language "apex"
```
### `list_doc_categories`
List all documentation categories with document counts.
### `get_document`
Get full content of a specific document by ID or filename.
## ๐ฏ Intent-Based Search
The MCP server automatically detects the topic of your query and searches in the most relevant documentation:
| Query | Detected Intent | Searches In |
|-------|-----------------|-------------|
| "How to create an Apex trigger" | Apex Development | ~15 Apex docs |
| "REST API OAuth authentication" | REST API | ~10 REST API docs |
| "LWC wire decorator" | Lightning/LWC | ~12 Lightning docs |
| "Bulk API 2.0 job" | Bulk API | ~5 Bulk API docs |
| "sharing rules permission set" | Security | 12 Security docs |
| "SOQL query limits" | SOQL/SOSL | ~5 SOQL docs |
**Benefits:**
- ๐ฏ **More relevant results** - Searches in topic-specific docs first
- โก **Faster queries** - Scans ~15 docs instead of 357
- ๐ **Smart fallback** - Expands search if too few results found
**Override:** You can always specify `category` or `subcategory` to search in a specific area.
## ๐ Documentation Categories
| Category | Description |
|----------|-------------|
| `core_platform` | Apex, LWC, Visualforce, SOQL/SOSL, Formulas |
| `apis` | REST, SOAP, Metadata, Bulk, Tooling APIs |
| `dev_tools` | Salesforce CLI, VS Code, Packaging |
| `clouds` | Sales, Service, Experience, Industry Clouds |
| `security` | Authentication, Authorization, Sharing |
| `integration` | Integration Patterns, Connectors |
| `best_practices` | Limits, Performance, Cheatsheets |
| `release_notes` | Winter '15 to present |
## ๐๏ธ Project Structure
```
salesforce-docs-mcp/
โโโ src/
โ โโโ index.ts # MCP server entry point
โ โโโ types.ts # TypeScript type definitions
โ โโโ db/
โ โ โโโ database.ts # SQLite connection (sql.js)
โ โ โโโ queries.ts # Search queries with intent detection
โ โโโ utils/
โ โโโ formatter.ts # Result formatting
โ โโโ intent.ts # Intent detection patterns
โ โโโ classifier.ts # Document classification
โ โโโ chunker.ts # PDF text chunking
โโโ scripts/
โ โโโ build-index.ts # PDF parsing and indexing
โ โโโ test-search.ts # Search testing (114 tests)
โ โโโ test-llm-judge.ts # LLM-as-judge evaluation
โ โโโ postinstall.js # Post-install setup
โโโ docs/
โ โโโ pdfs/ # 291 Salesforce developer PDFs
โ โโโ release-notes/ # 69 release notes PDFs
โโโ data/
โ โโโ salesforce-docs.db # SQLite search index (357 docs)
โโโ package.json
โโโ tsconfig.json
โโโ README.md
```
## ๐ฅ Adding Documentation
Download Salesforce PDFs to `docs/pdfs/` then rebuild the index:
```bash
npm run build-index
```
PDFs can be downloaded from:
```
https://resources.docs.salesforce.com/{version}/latest/en-us/sfdc/pdf/{name}.pdf
```
Current version: **258** (Winter '26, API v65.0)
## ๐ง Development
```bash
# Run in development mode
npm run dev
# Build TypeScript
npm run build
# Test search functionality
npm run test-search
```
## โก Performance
| Metric | Value |
|--------|--------|
| PDF Documents | 360 (291 + 69 release notes) |
| Documents indexed | 357 |
| Search chunks | ~156,000 |
| Database size | ~520 MB |
| Intent-filtered query | < 50ms (scoped search) |
| Unfiltered query | < 500ms (full corpus) |
| Cached query | < 10ms |
### How Intent-Based Search Improves Performance
```
Traditional Search:
"Apex trigger" โ Scan all 156K chunks โ Filter โ Rank โ ~500ms
Intent-Based Search:
"Apex trigger" โ Detect: Apex (high confidence)
โ Filter to apex subcategory (~15 docs, ~6,000 chunks)
โ Scan โ Rank โ ~50ms
```
> **Note:** Uses sql.js (pure JavaScript SQLite) with LIKE-based text search. Intent detection reduces search scope by 90%+ for topic-specific queries.
## ๐ Security
- **100% Local**: No data leaves your machine
- **No API Keys**: Works completely offline
- **stdio Transport**: No exposed HTTP endpoints
- **Parameterized Queries**: Protection against SQL injection
- **Input Validation**: All tool inputs validated with zod schemas
## ๐ License
MIT License - see [LICENSE](LICENSE) for details.
## โ ๏ธ Disclaimer
**Salesforce Documentation:** The Salesforce documentation PDF files included in this repository are the property of Salesforce, Inc. and are provided for convenience only. These documents are subject to Salesforce's own terms of use and copyright.
**Trademark Notice:** The trademarks and product names of Salesforceยฎ, including the mark Salesforceยฎ, are the property of Salesforce, Inc. This project is **not affiliated with, sponsored by, or endorsed by Salesforce, Inc.** The use of the Salesforceยฎ trademark and Salesforce documentation in this project does not indicate an endorsement, recommendation, or business relationship between Salesforce, Inc. and the project maintainers.
**Official Documentation:** For official Salesforce documentation, please visit [developer.salesforce.com/docs](https://developer.salesforce.com/docs).
---
ยฉ 2026 Sanket (SalesforceDiariesBySanket) | Salesforce documentation ยฉ Salesforce, Inc.