MCP Server - Connect with you LLM
Overview: MCP server
The MCP server exposes CxPlanner tools over streamable HTTP using the same authentication model as the REST API, which is used when you want an LLM or automation client to call structured tools instead of raw REST endpoints. CxPlanner runs a separate MCP endpoint per data region - see the endpoints below.
For creating API credentials, see Set up API access.
- Your role must be company Admin to configure or test MCP connections.
- Use the endpoint that matches the region your CxPlanner project is hosted in - see the table below.
- This lets clients call MCP tools. It does not change project data unless a tool performs a write action allowed by your token.
MCP server endpoints
Region | Endpoint |
|---|---|
EU | https://mcp.cxplanner.com (also reachable at |
US |
Authentication uses the same Bearer token and projectID rules as the REST API. Rate limits match REST. A Mcp-Session-Id is issued on initialize and must be echoed by the client. Project-aware tools may require a projectID parameter.
How to connect to the MCP server
- Set the base endpoint to your region's MCP endpoint (see the table above).
- Authenticate with the same Bearer token and projectID used for REST.
- Call
initializeand capture theMcp-Session-Id. - Call
tools/listto confirm available tools. - Call a tool with
tools/call. - Test with
pingand arguments{ "message": "hello" }.
Examples:
- Global API tool:
get_users_on_platform(no parameters) - Project API tool:
get_users(requiresprojectID)
Results: MCP tools
Tool | Purpose |
|---|---|
initialize | Starts a session and returns a session ID |
tools/list | Lists available tools |
tools/call | Executes a specific tool |
ping | Tests connectivity with a message response |
Troubleshooting: MCP server
Problem | Cause | Solution |
|---|---|---|
401 Unauthorized | Missing or invalid Bearer token | Check the token, include projectID when required, and retry |
Tool not found | Incorrect tool name | Call |
Request rate limited | Same REST rate limit applied to MCP | Slow down calls or batch requests |
No session ID returned |
| Run |
Example code
const endpoint = 'https://mcp.cxplanner.com'; // EU. For a US-hosted project, use https://origin-us-mcp.cxplanner.com
async function mcp(method, params = {}, id = String(Date.now())) {
const res = await fetch(endpoint, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
method,
params,
id,
}),
});
if (!res.ok) {
const text = await res.text().catch(() => '');
throw new Error(`HTTP ${res.status} ${res.statusText}: ${text}`);
}
return res.json();
}
// Example: initialize
(async () => {
try {
const resp = await mcp('initialize');
console.log('initialize →', resp);
} catch (err) {
console.error(err);
}
})();
// Example: list tools
(async () => {
try {
const resp = await mcp('tools/list');
console.log('tools/list →', resp);
} catch (err) {
console.error(err);
}
})();
// Example: call tool
(async () => {
try {
const resp = await mcp('tools/call', { name: 'get_users_on_platform', arguments: { bearerToken: 'xxxxx' } });
console.log('tools/call →', resp);
} catch (err) {
console.error(err);
}
})();
Updated on: 09/17/2026
Thank you!