Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Dakota Marketplace MCP ServerFind private equity fund managers in New York with over $1B AUM"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Dakota Marketplace MCP Server
External-facing MCP (Model Context Protocol) server that allows customers to query Dakota Marketplace data from any MCP-compatible AI client. Every query runs as the authenticated customer using their Salesforce OAuth token — Salesforce sharing rules and field-level security are enforced natively.
Architecture
AI Client (Claude/ChatGPT/Cursor)
↓ MCP Protocol
Dakota MCP Server (Node.js + Express)
├─ OAuth 2.0 + PKCE → Salesforce Connected App
├─ Redis → Session storage, cache, rate limiting
└─ Salesforce REST/Composite API → Per-user queriesMCP Tools
Tool | Description |
| Search by name, AUM, strategy, geography |
| Full profile + funds + contacts (Composite API) |
| Search by type, AUM, location |
| Full allocator profile + contacts |
| Search by strategy, vintage year, status, manager |
| Full fund details + manager info |
| Contacts for a manager or allocator |
| Free-text search across all entities (SOSL) |
Setup
1. Salesforce Connected App
In Salesforce Setup → App Manager → New Connected App
Enable OAuth Settings:
Callback URL:
https://your-app.herokuapp.com/auth/callbackOAuth Scopes:
api,refresh_token
Enable PKCE: check "Require Proof Key for Code Exchange (PKCE)"
Set "Permitted Users" to "All users may self-authorize"
Note the Consumer Key and Consumer Secret
2. Environment Variables
Copy .env.example to .env and fill in:
cp .env.example .envVariable | Description |
| Connected App Consumer Key |
| Connected App Consumer Secret |
| e.g., |
| e.g., |
| Redis connection string |
| Random secret for session signing |
| Server port (Heroku sets automatically) |
3. Install & Run
npm install
npm start4. Deploy to Heroku
heroku create dakota-mcp-server
heroku addons:create heroku-redis:mini
heroku config:set SALESFORCE_CLIENT_ID=... SALESFORCE_CLIENT_SECRET=... ...
git push heroku mainAuthentication Flow
Customer opens
GET /auth/login— redirects to Salesforce OAuthAfter login, Salesforce redirects to
/auth/callbackwith authorization codeServer exchanges code for access + refresh tokens (PKCE verified)
Tokens stored in Redis keyed by session ID
Session ID returned to client for use in MCP tool calls
Token refresh happens automatically before expiry
Rate Limits
Standard tier: 100 requests/hour
Premium tier: 500 requests/hour
Sliding window tracked in Redis
Clear error with retry guidance when exceeded
Cache Strategy
Search results: 120s TTL
Profile lookups: 300s TTL
Strictly isolated by user ID — no cross-customer data leakage
Key format:
cache:{user_id}:{tool_name}:{query_hash}
Customizing SOQL Queries
All Salesforce field names are centralized in the tool files under src/tools/. Update the SOQL queries there to match your actual Salesforce object and field API names. The Composite API request builders are in src/salesforce/composite.js.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.