D360 MCP Server
No description available
Ask AI about D360 MCP Server
Powered by Claude Β· Grounded in docs
I know everything about D360 MCP Server. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Data 360 MCP Server
A Model Context Protocol server that exposes the Salesforce Data 360 Connect API to MCP-compatible clients such as Claude Code, Cursor, and any other host that speaks MCP over STDIO.
Built on Spring AI.
Developer Preview
The Data 360 MCP server is provided as a developer preview running in a single user/org context per process. We strongly encourage use only via STDIO instead of making this server network-accessible.
The generally available version of this MCP server is slated to be provided as a hosted and managed Salesforce Platform MCP server, alongside other existing Product Integration MCP servers.
During the developer preview please share feature requests, issues, success stories, or other feedback via github issues on this repo, the R&D team will be actively reviewing these on a regular basis. We're especially interested in feedback about how effective the fascade tools approach works across use cases and clients.
How it works
Data 360 exposes ~190 distinct REST operations. Rather than registering one MCP tool per endpoint (which quickly overwhelms an LLM's tool list and context window), this server consolidates everything behind three facade tools:
| Tool | Purpose |
|---|---|
search | Discover tools by intent, keyword, or family |
payload_examples | Fetch working JSON payloads for complex tools |
execute | Run any underlying tool by name with parameters |
Typical workflow: search β payload_examples β execute.
Under the hood, 187 operations are organized into 21 tool families:
| Family | Tools | Description |
|---|---|---|
| DLO | 5 | Data Lake Object CRUD |
| DMO | 5 | Data Model Object CRUD |
| Data Streams | 9 | Ingestion pipelines β generic, SFDC CRM, Snowflake, AWS S3 |
| Mappings | 7 | DLO-to-DMO field mappings |
| Data Transforms | 9 | SQL transforms β CRUD, run, validate, schedule |
| Identity Resolution | 8 | IR rulesets β create, run, publish |
| Calculated Insights | 10 | CI CRUD, run, validate, query |
| Segment | 6 | Segment CRUD + publish |
| Dataspace | 8 | Dataspace + member management |
| Connection | 11 | Connector metadata, connection CRUD, Snowflake connections |
| Query | 16 | SQL, profile, datagraph, and metadata queries |
| Activation | 10 | Activation + target CRUD |
| SDM | 38 | Semantic Data Models β dimensions, measures, relationships, queries |
| Retriever | 10 | RAG retriever + configuration CRUD |
| DataKit | 9 | Bundle deploy / undeploy |
| Data Action | 8 | Action + target CRUD |
| Search Index | 7 | Vector / hybrid search index lifecycle |
| Smart Tools | 4 | AI-assisted mapping suggestions, event-date recommendations |
| Standard Mappings | 2 | Pre-configured mapping bundles |
| Eventing | 2 | Single + batch event publish |
| GDPR | 3 | Data subject read / delete requests |
Requirements
- Java 17+
- Maven 3.9+
- A Salesforce Data 360 org with Connect API access
- (Optional) An OpenAI API key β only
needed if you opt into
vectororhybridtool-search strategies
Build
mvn clean package -DskipTests
This produces target/data360-mcp-server-1.0.0.jar.
Authentication
The server auto-detects an auth flow from environment variables. Priority:
access_token β client_credentials.
Getting credentials
The server needs credentials for a Salesforce org with Data 360 enabled. You have two options, in order of convenience:
- Access token β the quickest way to try the server. Run
sf org login web(or the equivalent in your org tooling) and grab the access token from your session. Tokens expire; for anything beyond experimentation, use the option below. - External Client App with client credentials β create an External Client
App in Setup, enable the Client Credentials flow, grant the
api,cdp_apiandcdp_query_apiscopes, and use the resulting Consumer Key / Secret. The server will refresh tokens automatically. See EXTERNAL_CLIENT_APP_SETUP.md for a step-by-step walkthrough.
Configuring the server
The default search strategy is keyword, which needs no extra configuration.
To enable semantic search, see
Optional: enable semantic tool search
below.
Access token (default):
export DATA360_INSTANCE_URL="https://your-instance.my.salesforce.com"
export DATA360_ACCESS_TOKEN="your_access_token"
If you're using the sf cli you can initialize these automatically and create a session for a specific org connection with a command like:
eval "$(
sf org display --target-org target-org-alias --json \
| jq -r '.result | "export DATA360_INSTANCE_URL=\(.instanceUrl)\nexport DATA360_ACCESS_TOKEN=\(.accessToken)"'
)"
Replacing target-org-alias with the sf cli's alias for your connected org.
Client credentials (auto-refreshing):
This requires you to create an External Client Application to obtain a client id and client secret to support OAuth based refreshing of credentials as needed.
- Enable OAuth, set https://login.salesforce.com (this is unused but required in this flow).
- Add scopes: cdp_api, cdp_query_api, api.
- Under Flow Enablement, Enable Client Credentials Flow.
export DATA360_CLIENT_ID="your_client_id"
export DATA360_CLIENT_SECRET="your_client_secret"
export DATA360_AUTH_FLOW="client_credentials"
# Defaults to the production login endpoint; change only for sandboxes
# or My Domain logins (e.g. https://test.salesforce.com).
export DATA360_LOGIN_URL="https://login.salesforce.com"
Optional:
DATA360_API_VERSIONβ defaults to66.0DATA360_LOGIN_URLβ defaults tohttps://login.salesforce.comDATA360_SEARCH_STRATEGYβkeyword(default),vector, orhybrid.vectorandhybridalso requireOPENAI_API_KEYandSPRING_AI_MODEL_EMBEDDING=openai.OPENAI_API_KEYβ only used byvector/hybridSPRING_AI_MODEL_EMBEDDINGβ set toopenaito enablevector/hybrid; leave unset otherwise
Optional: enable semantic tool search
keyword search is the default and works with no extra config. To use
OpenAI-backed semantic search instead, set all three of:
export DATA360_SEARCH_STRATEGY="vector" # or "hybrid"
export SPRING_AI_MODEL_EMBEDDING="openai"
export OPENAI_API_KEY="your_openai_api_key"
Running
STDIO mode (default β for Claude Code, Cursor, etc.)
java -jar target/data360-mcp-server-1.0.0.jar
Example MCP client configuration
Ready-to-paste configs for common clients live in examples/.
A minimal Claude Code / Cursor config:
{
"mcpServers": {
"data360": {
"command": "java",
"args": [
"-jar", "/path/to/data360-mcp-server-1.0.0.jar"
],
"env": {
"DATA360_INSTANCE_URL": "https://your-instance.my.salesforce.com",
"DATA360_ACCESS_TOKEN": "YOUR_TOKEN"
}
}
}
}
Architecture
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MCP Client (Claude Code / Cursor / etc.) β
β sees only: search, payload_examples, execute β
ββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββ
β STDIO
ββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββ
β Data360RuntimeConfiguration β registers 3 facade tools β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β search β FamilyCatalog (21 families) β
β payload_examples β payload-examples.json β
β execute β ToolCallbackRegistry β
β β β
β 28 concrete @McpTool classes β
β (187 underlying tools) β
β β β
β Service Layer (Query, Smart, β
β MappingLookup) β
β β β
β Data360Client β
β β β
β Auth (AuthService, TokenCache) β
β adds Bearer token β
β β β
β Salesforce Data 360 REST API β
β /ssot/*, /cdp/*, /a360/*, /connect/*, etc. β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Project layout
src/main/java/com/salesforce/data360/mcp/
βββ Application.java
βββ config/ # Spring config, MCP tool registration
βββ runtime/ # Tool catalog, registry, search strategies
βββ service/ # Query, smart-mapping, mapping lookup
βββ auth/ # Auth flows, token cache
βββ client/ # Data360Client β HTTP client
βββ tools/ # 25 @McpTool domain classes + 3 facade tools
β βββ datastream/ # Connector-specific data stream tools
βββ model/ # Typed request/response DTOs
βββ util/ # Helpers (JSON, tool utilities)
src/main/resources/
βββ application.yml
βββ mappings/ # 500+ standard DLO-to-DMO mapping XMLs
βββ metadata/payload-examples.json # Curated example payloads
Testing
mvn test
The test suite covers core tool dispatch, services, and request/response behavior.
Contributing
Contributions are welcome! See CONTRIBUTING.md for the process, CODE_OF_CONDUCT.md for community guidelines, and the Salesforce CLA.
License
Apache License 2.0. See LICENSE.txt for the full text.
Security
Please report security issues per SECURITY.md β do not open a public GitHub issue for security reports.
