MCP

Connect your AI tools to sfp using MCP. Claude, GitHub Copilot, Cursor, and OpenCode can fetch Jira work items, manage review environments, and query pool configurations directly from your sfp instance — enabling end-to-end AI-assisted Salesforce development.

Endpoint

Your MCP endpoint is your sfp instance URL with /sfp/api/mcp appended:

https://your-company.flxbl.io/sfp/api/mcp
Method
Path
Purpose

POST

/sfp/api/mcp

JSON-RPC 2.0 — tool calls, initialize

GET

/sfp/api/mcp

SSE stream for notifications

DELETE

/sfp/api/mcp

Close session

GET

/sfp/api/mcp/tools

REST — list available tools

Property
Value

Transport

Streamable HTTP

Protocol

MCP 2025-06-18

Auth

Authorization: Bearer <application-token>

Content-Type

application/json

Accept

application/json, text/event-stream

Quick Start

1. Create an application token

Generate a dedicated token for your MCP clients:

circle-exclamation

2. Configure your AI client

Pick your editor and add the configuration below. Replace the URL with your sfp instance and paste your token.

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

circle-info

Claude Desktop requires mcp-remotearrow-up-right to connect to HTTP servers. The npx -y command installs it automatically.

3. Verify

Ask your AI assistant: "List the available sandbox pools." If it returns pool data, you're connected.

Authentication

All MCP requests require a bearer token:

Application tokens authenticate with the Application role. Owner and Member JWT tokens also work. Rotate tokens regularly — use short expiration times (30-90 days) for CI/CD environments.

Available Tools

pools

List sandbox and scratch org pool configurations.

Parameter
Required
Description

action

Yes

Must be list_pools

repositoryIdentifier

No

Repository in owner/repo format

poolType

No

SANDBOX or SCRATCH_ORG

hasAssignmentRules

No

Filter by assignment rules (boolean)

review_envs

Fetch and release review environments for PRs, issues, or users.

Parameter
Required
Description

action

Yes

fetch_review_env or release_review_env

assignmentType

Yes (fetch)

pr, issue, user, or custom

assignmentId

Yes (fetch)

PR number, issue key, or username

repositoryIdentifier

Yes (fetch)

Repository in owner/repo format

poolTag

No

Specific pool tag

branch

No

Branch name for pool resolution

domains

No

Array of domains

domain

No

Single domain

expirationHours

No

1-720

isImmortal

No

boolean

metadata

No

object

override

No

boolean

work_items

Get or list work items from your connected issue tracker (Jira, GitHub Issues).

Parameter
Required
Description

action

Yes

get_work_item or list_work_items

projectIdentifier

No

owner/repo (platform derived from config)

id

No

Work item ID (for get_work_item)

status

No

Filter by status

assignee

No

Filter by assignee

type

No

Filter by type

maxResults

No

1-100 (default 50)

Debugging

Verify auth with curl

Test the MCP protocol handshake

Expected response:

MCP Inspector

The MCP Inspectorarrow-up-right provides a visual interface for testing tools:

Open http://localhost:6274 and enter your application token in the Bearer Token field.

Common Errors

Error
Cause
Fix

401 Unauthorized

Missing or expired token

Create a new token with sfp server application-token create

Not Acceptable

Missing Accept header

Include Accept: application/json, text/event-stream (both required)

Connection refused

Instance unreachable from your network

Verify the URL and check that your network can reach your sfp instance

isError: true in tool response

Tool-level error (e.g., pool not found)

Check the error message; call list_pools to discover valid pools

Example Workflows

Implementing a Jira Issue

You: "Implement DP-6"

Agent:

  1. work_itemsget_work_item(id="DP-6") — reads acceptance criteria

  2. review_envsfetch_review_env(assignmentId="DP-6", ...) — gets a sandbox

  3. Implements changes, deploys, and validates

Pool Discovery

You: "What pools are available for flxbl-io/sf-core?"

Agent:

  1. poolslist_pools(repositoryIdentifier="flxbl-io/sf-core")

Last updated