MCP tools
CKEditor AI can call tools on MCP (Model Context Protocol) servers you connect to an environment. Connect the systems your organization already uses, and CKEditor AI looks up current information in them or acts in them during a conversation. This page covers what connected tools do, where they apply, and how to register a server for an environment.
This page covers the tools a connected MCP server exposes. A server’s resources can be read into a context as files instead. See Load files from an MCP server.
- Draft from current customer data: a sales manager asks for an account review. With the Salesforce MCP server connected, CKEditor AI looks up the account, its open opportunities, and recent cases, and drafts the summary from them.
- Create a Jira issue from the document: a product manager spots a missing requirement and asks for an issue. With the Atlassian MCP server connected, CKEditor AI creates it with the document as context and returns a link.
- Use decisions recorded in Slack: a writer asks for the latest rollout decision to be reflected in the brief. With the Slack MCP server connected, CKEditor AI searches the workspace and edits the section from the discussion it finds.
Chat and Document Processing use the servers you register through the admin API. On-premises, they also use the servers defined in the service configuration. Actions and reviews do not use MCP tools. See Usage.
For a live example, see the CKEditor AI demo connected to Airtable.
Administrators register servers for one environment through the admin REST API. No deployment step is needed. This method works on SaaS and on-premises, and the rest of this page describes it. An on-premises deployment can define servers in the service configuration instead. See MCP tools. A server connected either way behaves the same.
Each environment keeps its own servers, so you can try a server in staging before you register it in production.
The server must be reachable over HTTPS and use the Streamable HTTP transport. The public servers for platforms such as Notion and Slack meet both conditions.
To register a server, send its name, its HTTPS URL, and any headers it expects, such as an Authorization token:
curl -s -X POST "https://ai.cke-cs.com/v1/admin/mcp-servers" \
-H "Authorization: Bearer $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "product-catalog",
"url": "https://mcp.example.com/mcp",
"headers": {
"Authorization": "Bearer <TOKEN>"
}
}'Copy code{
"name": "product-catalog"
}Copy codeThe name identifies the server in later requests and prefixes the names of its tools. Use letters, digits, hyphens, and underscores, and keep it unique within the environment. Names of servers defined in the service configuration are reserved.
Two fields are optional. disabledTools lists the tools CKEditor AI must not call. callToolTimeout sets the timeout of one tool call, in seconds. The default is 60 seconds.
A server authenticates in one of two ways:
- Shared header: a token, usually a bearer token, that CKEditor AI sends with every request to the server. Use it when the server does not need to know which of your users is asking.
- OAuth: each user authorizes the connection with their own account. Use it when the server must act as the signed-in user.
The two are mutually exclusive. Send headers for a shared token or an oauth block for per-user sign-in. You cannot change the method after you register the server. To switch, delete the server and register it again.
Replace headers with oauth:
curl -s -X POST "https://ai.cke-cs.com/v1/admin/mcp-servers" \
-H "Authorization: Bearer $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "support-desk",
"url": "https://mcp.example.com/mcp",
"oauth": {
"callbackUrl": "https://your-app.example.com/oauth/callback",
"clientId": "<CLIENT ID>",
"clientSecret": "<CLIENT SECRET>",
"scopes": ["tickets:read", "tickets:write"]
}
}'Copy codeOnly callbackUrl is required. It is the page in your application that receives the OAuth redirect. Your application completes the flow through the /v1/mcp/oauth/ endpoints. See Authorization flow. Omit clientId and clientSecret for servers that support Dynamic Client Registration, and omit scopes to use the server’s defaults. Secrets are never returned when you read a server back.
Each user then signs in with their own account before the server’s tools are available to them:
- Access is the user’s own: the server applies that user’s permissions in the connected system.
- Actions are attributed: the connected system sees the user who asked.
- Tools appear after sign-in: a user sees the server’s tools only after that user authorizes the server. Other connected servers stay available to the user.
To list the servers of an environment:
curl -s "https://ai.cke-cs.com/v1/admin/mcp-servers" \
-H "Authorization: Bearer $ADMIN_TOKEN"Copy code{
"items": [
{
"name": "product-catalog",
"url": "https://mcp.example.com/mcp",
"createdAt": "2026-06-01T09:12:00.000Z",
"updatedAt": "2026-06-01T09:12:00.000Z"
}
]
}Copy codeThe response includes oauth, disabledTools, and callToolTimeout only when they are set on the server.
If you change a server’s URL or its OAuth settings, every user must authorize the server again. Deleting the server has the same effect.
An update replaces the whole definition. url is required. If you omit disabledTools or callToolTimeout, the update clears them. If you omit headers or oauth, the stored values stay, so you do not need to send secrets again. For example, to move a server and rotate its token:
curl -s -X PUT "https://ai.cke-cs.com/v1/admin/mcp-servers/product-catalog" \
-H "Authorization: Bearer $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://mcp.example.com/mcp-updated",
"headers": {
"Authorization": "Bearer <NEW TOKEN>"
}
}'Copy codeTo delete a server:
curl -s -X DELETE "https://ai.cke-cs.com/v1/admin/mcp-servers/product-catalog" \
-H "Authorization: Bearer $ADMIN_TOKEN"Copy codeTool calls arrive in the streamed reply as events of their own, alongside the text. The CKEditor AI plugin shows tool use in progress by default. If you build your own UI, read those events to show which tools ran. See Streaming protocol for the events.
CKEditor AI calls tools without asking the user. Every tool a connected server exposes can run during a reply unless you disable it. Disable the tools that must not run unattended before you connect the server: disabledTools for a server registered through the admin API, tools.disabled for a server defined in the on-premises configuration.
- MCP tools covers how to define servers in an on-premises deployment: tool filtering, environment allowlists, connection pooling, and the OAuth flow.
- Fetch data from your systems connects a study registry so that writers draft reports from current data.
- Permissions describes the
ai:adminscope you need to manage servers. - MCP Server Admin API reference lists the endpoints with request and response schemas and error codes.