MCP Integration
MCP connects Elowen to external tool servers. Manage them on the MCP page, which is in the main navigation at /p/mcp. The server list is paged; search and the ownership and status filters narrow it, and Sort orders it by name or by tool count, while the default order keeps personal and instance servers grouped. See Plugins for plugin administration.
Add an external MCP server
On MCP, select Add server, enter a unique Name, choose a Transport and Ownership, add an optional Server description, then select Save. The description appears in the server list and can be searched or edited later. Names are 1–40 characters: letters, numbers, underscores or dashes, starting with a letter or number. Leave Enabled on to make tools available; turn it off to save the server without connecting it. Enabled servers are checked and their tools discovered when saved. A server requiring OAuth sign-in remains configured with Sign-in needed until you authorize it.
Choose one transport:
- stdio runs a command as a local process.
- Streamable HTTP connects to an HTTP or HTTPS MCP endpoint.
For stdio, provide the Command, one argument per line under Arguments, and environment variables under Environment variables as NAME=value, one per line. This runs a local process, so only Elowen administrators can manage or start stdio servers, regardless of ownership. Add only commands you trust. A stdio server created while a managed Project is selected is bound to that Project: its binding cannot change, and its tools are available only from that Project.
For Streamable HTTP, provide the URL of the server. A linked account can keep these remote servers in its personal scope. In an authorized chat, AddMcpServer, ListMcpServers, ReconnectMcpServer, and RemoveMcpServer provide the same server-management actions subject to the same access rules.
Choose server ownership
- Personal servers belong to the linked account that created them. Only that account can manage or use them; in shared conversations, they are available only on that account's turns. Removing the account removes its personal servers.
- Instance servers are shared across eligible conversations. Only Elowen administrators can manage them.
A conversation can use instance servers and the current account's personal servers. Names must be unique within each scope visible to that account. Remote HTTP servers can be moved between instance and the acting account's personal scope. A move cannot transfer ownership to another account. stdio servers cannot be moved; create one again in the target scope.
Personal servers connect when first used, while instance servers connect when the MCP plugin starts. A personal server needs a successful tool discovery before its tools can be used. Use Reconnect after fixing a failed or disconnected server; this closes its current connection and discovers its tools again. The MCP page shows Connected, Disconnected, Error, or Disabled, with the last error when available. Removing a server with Remove server deletes its configuration, stops its connection, and makes its bridged tools unavailable. For example, if a server shows Error, fix its URL or credentials before selecting Reconnect.
Sign in to a server
Open the server's detail. Its authentication status is separate from its connection status: No sign-in required, Signed in, Sign-in needed, Sign-in error, or Unsupported transport.
When sign-in is needed or has failed, select Sign in. Elowen opens the server's authorization page in a new tab. Complete authorization there, then return to Elowen to refresh the status. A sign-in request expires after 10 minutes; start a new one if it has expired. If the browser blocks the new tab, allow it for Elowen and try again. Opening the authorization page alone does not mean you are signed in. Requested permissions appear in the detail under Permissions when reported by the server.
After authorization, the provider returns to the MCP callback page. Elowen removes the authorization code from the address bar immediately, confirms the result once through its authenticated API, and replaces the callback entry in browser history with the MCP page. A missing or invalid request, expired request, denied authorization, or failed confirmation shows a specific message and Back to MCP. Start a new sign-in instead of reloading or resubmitting a failed callback.
If you are signed out of Elowen when returning, sign in with the same account that started authorization. Password login keeps the callback address; successful Microsoft SSO returns to that address. The server still checks the account and the one-time request before accepting authorization.
Select Sign out to remove the stored authorization. The buttons are disabled while the request is pending, and a refused request stays visible in the detail. Credentials remain in the server's ownership scope and are never shown in the browser.
Legacy SSE servers remain visible as Unsupported transport but cannot be enabled or reconnected. Elowen does not silently migrate their URL. Open the detail, explicitly select Streamable HTTP, enter the server's streamable HTTP endpoint, and save. Until a supported transport is selected, Save remains disabled.
Manage server tools
Each discovered tool appears as mcp__<server>__<tool>, for example mcp__github__create_issue. Names are normalized to lowercase words separated by underscores, and each part is cut to 40 characters. The server defines the tool and its input fields; you can inspect, but not edit, those definitions on the MCP page.
The MCP plugin also provides ListMcpResources and ReadMcpResource for servers that publish resources. These are loaded on demand and follow the same visibility rules as server tools.
Load deferred MCP tools
Tool deferral is enabled by default under Tool loading. It applies when a conversation has more than 10 tools without an explicit choice, MCP tools and plugin tools alike. Then only the core tools (Bash, Read, Edit, Grep and Write) stay fully loaded; every other tool is loaded on demand. Smaller toolsets stay available immediately, except tools that their plugin marks for deferred loading, such as ListMcpResources and ReadMcpResource, which are always loaded on demand.
When deferral applies without code mode or provider-hosted search, ToolSearch loads tools through PI's BM25 search over names, descriptions and parameter schemas. English search terms work best with English tool descriptions. A free-text query accepts an optional limit, which defaults to 8. For exact names, select: loads only the listed permitted tools and reports loaded, refused and unknown names; the search limit does not truncate that list.
ToolSearch({"query":"select:mcp__github__create_issue"})
ToolSearch({"query":"create github issue","limit":8})
The result lists loaded tool names. Their schemas become available on the next model call. Local search does not use semantic embeddings or a required-term grammar.
In Code Mode there is no ToolSearch. Deferred tools are omitted from the initial prompt, stay callable from the script, and the model discovers them by filtering the ALL_TOOLS list by name and description before reading the full declaration. With a provider's own tool search (some Claude models, or GPT-5.4 and newer), the core tools are sent in full and the rest are found by the provider.
Deferral reduces prompt size; it does not change server permissions or account access.
Change MCP timeouts
Open the mcp plugin settings in Settings → Plugins. The global Connect timeout defaults to 15 seconds and accepts 5–60 seconds. Tool call timeout defaults to 120 seconds and accepts 30–300 seconds. These limits apply to every configured server.
Use Elowen as an MCP server
Elowen provides its own stateless MCP endpoint at /mcp. An MCP client must authenticate with an Elowen bearer token, and its tools run with that token's account and permissions. The endpoint offers one tool, elowen_request, which calls any Elowen REST endpoint with a method, a path and an optional body. This endpoint is separate from connecting external servers.