Skip to Content
KeuralDocs
Developers

Plugin and MCP server integration

How to connect your own MCP server to Keural and create a plugin package for the desktop app.

Keural plugins are MCP (Model Context Protocol) servers. This document specifies how to connect your own MCP server to Keural, or how to create a plugin package for the desktop app.

Transport methods

PlatformTransportUse
Web and mobileHTTP (Streamable HTTP) · SSERemote MCP servers reachable from the internet
Desktop appSTDIO · HTTPServers that run on this computer, and HTTP servers on your internal network
  • In web conversations, only remote HTTP and SSE servers are used. STDIO servers run in the desktop app.
  • If a server address ends with /mcp, it is usually a Streamable HTTP server, so choose HTTP as the transport method.
  • HTTP in the desktop app is for internal network addresses. Register public internet addresses with HTTP on the web.

Input fields for custom MCP

The input fields under Settings → Plugins → + Add custom MCP are as follows.

FieldContent
NameRequired
DescriptionOptional
TransportSee the table above
CategoryClassification in the list
Server URLRequired for HTTP or SSE. Example: https://example.com/mcp
Run commandRequired for STDIO. Example: npx
ArgumentsSTDIO arguments (JSON array). Example: ["-y", "@scope/server"]
Use this plugin for web searchWhen on, this plugin is used instead of web search.
AuthenticationNone · API key
Header name · API key valueFor API key. Example: header name Authorization, value Bearer …

When you select API key, Keural attaches the <header name>: <value> header to every request.

OAuth authentication servers

A plugin that an organization admin registered with OAuth is connected when the user selects Connect and signs in.

ItemValue
Server discovery/.well-known/oauth-protected-resource (with path → root), then /.well-known/oauth-authorization-server
Client registrationDynamic Client Registration (DCR)
Redirect URIhttps://api.keural.ai/api/user-connectors/oauth/callback
Request headerAuthorization: Bearer <access token>

The sign-in window opens as a pop-up, and the plugin list is refreshed when sign-in finishes.

Tool permissions

Set how each plugin tool runs.

PermissionBehavior
Always allowRuns without confirmation.
Ask firstShows an approval card before running. The card also shows the tool arguments.
BlockThe agent does not use this tool.

Desktop plugin package

The desktop app installs plugins with Plugin ZIP file… or Plugin folder…. The package requires the plugin.json manifest.

{
  "id": "my-plugin",
  "name": "My Plugin",
  "version": "1.0.0",
  "description": "Query internal systems",
  "mcpServers": {
    "my-server": {
      "command": "node",
      "args": ["server.js"],
      "env": { "API_BASE": "https://intranet.example.com" }
    }
  }
}
FieldRequiredContent
idYesLowercase English letters, digits, and hyphens
nameNoDisplay name. If missing, id is used.
versionNoDefault 1.0.0
descriptionNoDescription
minAppVersionNoMinimum app version required
mcpServersNoMCP server definitions. Each server has command, args, and env.
requestsNoRequested permissions (capabilities, commands, connectors, secrets, permissions). Array of strings

To install a STDIO plugin registered on the web, select Install on this PC in the desktop app. After installation, enter the authentication token and environment variables yourself.

On this page