MCP (Model Context Protocol) servers extend agent capabilities by providing external tools through a standardized protocol. MCP servers appear as “virtual capabilities” alongside built-in capabilities.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/everruns/everruns/llms.txt
Use this file to discover all available pages before exploring further.
Overview
MCP integration enables:- External tools - Agents can use tools from remote MCP servers
- Virtual capabilities - MCP servers appear in the capability selector
- Tool discovery - Automatic caching of available tools (24h TTL)
- HTTP transport - Streamable HTTP protocol support
Supported Transport
Currently supported:- HTTP - Streamable HTTP transport (JSON-RPC over HTTP)
stdio- Local process communicationwebsocket- WebSocket-based transport
Adding an MCP Server
Create MCP server configuration
name- Unique server name (used as tool prefix, snake_case recommended)url- Server endpoint URLtransport_type-"http"(only supported type)api_key- Optional API key for authenticationheaders- Additional HTTP headers
Enable on agent
MCP servers appear as capabilities with ID format The agent can now use tools from the MCP server.
mcp:{server_uuid}:Tool Discovery
MCP servers expose tools via thetools/list JSON-RPC method:
Request:
Tool Caching
Tools are cached with a hybrid strategy:- TTL: 24 hours
- On-demand refresh: Fetched on first access or when stale
- Background refresh: For frequently used servers
- Force refresh: Available via API
Tool Name Format
MCP tools use a double-underscore separator to avoid conflicts:| Server | Tool | Full Tool Name |
|---|---|---|
github | search_repos | mcp_github__search_repos |
microsoft_learn | search | mcp_microsoft_learn__search |
atlassian_jira | create_issue | mcp_atlassian_jira__create_issue |
Why double underscore? Server names can contain underscores (e.g.,
microsoft_learn), so a single underscore would be ambiguous.Tool Execution
Tools are executed via thetools/call JSON-RPC method:
Request:
Content Types
MCP tool results can contain:| Type | Fields | Description |
|---|---|---|
text | text | Plain text content |
image | data, mime_type | Base64-encoded image |
resource | uri, mime_type, text | External resource reference |
Image Handling
Images returned by MCP tools are:- Extracted from the JSON response
- Converted to
ToolResultImage - Sent to the LLM as native image content blocks
Authentication
API Key
For API key authentication:- Encrypted at rest (AES-256-GCM)
- Never exposed in API responses (
api_key_set: trueindicator only) - Sent as
Authorization: Bearer <key>header
Custom Headers
For custom authentication schemes:MCP as Virtual Capabilities
MCP servers integrate into the capability system: Capability properties:- ID:
mcp:{server_uuid}(e.g.,mcp:01933b5a-0000-7000-8000-000000000501) - Name: Server name
- Description: Server description
- Icon:
plug(hardcoded) - Category:
MCP Servers - Badge: “MCP” badge in UI
| Aspect | Built-in | MCP |
|---|---|---|
| Source | Rust code | Remote server |
| ID format | snake_case | mcp:{uuid} |
| Tool prefix | None | mcp_{server}__ |
| Discovery | Compile-time | Runtime (cached, 24h TTL) |
| Execution | In-process | HTTP JSON-RPC |
| Dependencies | Supported | Not supported |
Pre-configured Servers
Everruns seeds the following MCP server:- Microsoft Learn
Name:
microsoft_learnURL: https://learn.microsoft.com/api/mcpDescription: Microsoft Learn documentation serverTools:search- Search Microsoft Learn documentation
Server Status
Servers can be:- Active - Tools are available for use
- Disabled - Server is hidden, tools unavailable
Error Handling
| Scenario | Response |
|---|---|
| Invalid tool name format | 400 Bad Request |
| MCP server not found | 404 Not Found |
| MCP server unreachable | 502 Bad Gateway (timeout after 60s) |
| MCP tool returns error | Success with {"error": "message"} in result |
| JSON-RPC error | Error propagated with code and message |
Validation Limits
| Field | Max Size | Notes |
|---|---|---|
name | 255 chars | Must be unique, non-empty |
description | 10 KB | Optional |
url | 2 KB | Valid HTTP/HTTPS URL |
headers | 100 entries | Maximum header count |
LLM Provider Compatibility
Anthropic
- Text content blocks must be non-empty (API rejects empty strings)
- Assistant messages with tool calls but empty text are valid
- Empty text blocks are automatically filtered
OpenAI
- Empty text content is allowed
- No special filtering required
Security Considerations
- API Key Encryption: API keys encrypted at rest (TM-LLM-001)
- HTTPS Required: All MCP communication over HTTPS (TM-LLM-006)
- Prompt Injection: Tool descriptions fed to LLM can influence behavior (TM-AGENT-003, accepted risk)
- Tool Results: Results use
tool_resultrole, but LLM may still follow adversarial content (TM-AGENT-002, accepted risk)
Next Steps
- Build an MCP server - Official MCP documentation
- Create agents - Use MCP tools in your agents
- Tool execution - How tools are executed