- Configure MCP (Model Context Protocol) servers to extend the agent with additional tools.
- MCP servers can provide custom tools, data sources, and integrations.
+ Configure remote MCP (Model Context Protocol) servers to extend the agent with additional tools.
+ Only HTTP/HTTPS servers are supported. Add authentication via headers or query parameters.
- {/* Server list */}
+ {/* Server list — horizontal cards */}
- {servers.length === 0 && editingIndex === null && (
+ {servers.length === 0 && !modalOpen && (
No MCP servers configured. Add one to extend the agent's capabilities.
)}
-
+
{servers.map((server, index) => (
- editingIndex === index ? null : (
-
+ {/* Status dot */}
+
-
-
- {server.name}
-
- {server.transport.toUpperCase()}
-
-
- {server.enabled ? 'Enabled' : 'Disabled'}
-
-
-
-
-
-
-
+ title={server.enabled ? 'Enabled' : 'Disabled'}
+ />
+
+ {/* Server info */}
+
+
+ {server.url}
-
- {server.transport === 'http' && server.url}
- {server.transport === 'stdio' && `${server.command} ${(server.args || []).join(' ')}`}
+
+ {server.name}
+ {server.headers && Object.keys(server.headers).length > 0 && (
+
+ Auth
+
+ )}
- )
+
+ {/* Actions */}
+
+
+
+
+
+
))}
+
+
+
- {/* Edit/Add form */}
- {editingIndex !== null && (
-
-
- {editingIndex === -1 ? 'Add MCP Server' : 'Edit MCP Server'}
-
-
-
+ {/* Help section */}
+
+
Popular MCP Servers
+
+ - Composio:
https://mcp.composio.dev/...
+ - Zapier MCP:
https://actions.zapier.com/mcp/...
+ - Browserbase:
https://mcp.browserbase.com
+
+
+ Learn more at{' '}
+
+ modelcontextprotocol.io
+
+
+
+
+ {/* Add/Edit Modal */}
+ {modalOpen && (
+
- )}
-
-
- {editingIndex === null && (
-
- + Add MCP Server
-
+
)}
-
- {/* Help section */}
-
-
Popular MCP Servers
-
- - Filesystem:
npx -y @modelcontextprotocol/server-filesystem /path
- - GitHub:
npx -y @modelcontextprotocol/server-github
- - Brave Search:
npx -y @modelcontextprotocol/server-brave-search
- - Postgres:
npx -y @modelcontextprotocol/server-postgres postgres://...
-
-
- Learn more at{' '}
-
- modelcontextprotocol.io
-
-
-
);
}
diff --git a/frontend/src/index.css b/frontend/src/index.css
index 88e1401..f4c6fcc 100644
--- a/frontend/src/index.css
+++ b/frontend/src/index.css
@@ -132,6 +132,11 @@
to { opacity: 1; transform: translateX(0); }
}
+@keyframes slide-in-left {
+ from { opacity: 0; transform: translateX(-100%); }
+ to { opacity: 1; transform: translateX(0); }
+}
+
/* ============ Base Styles ============ */
@layer base {
*, *::before, *::after {
@@ -289,6 +294,13 @@
}
}
+/* ============ Mobile Layout ============ */
+@media (max-width: 1023px) {
+ .main-content-area {
+ padding-right: 0 !important;
+ }
+}
+
/* ============ Form Element Resets ============ */
@layer base {
button, input, select, textarea {
diff --git a/frontend/src/types.ts b/frontend/src/types.ts
index c0dc579..7a39794 100644
--- a/frontend/src/types.ts
+++ b/frontend/src/types.ts
@@ -151,6 +151,15 @@ export interface SearchBudget {
max: number;
}
+// ── MCP Servers ─────────────────────────────────────────
+
+export interface McpServerStatus {
+ name: string;
+ url: string;
+ enabled: boolean;
+ connected: boolean;
+}
+
// ── Background Jobs ─────────────────────────────────────
export interface AgentJob {
diff --git a/site/docs/configuration.md b/site/docs/configuration.md
index 3e497ed..fd85f14 100644
--- a/site/docs/configuration.md
+++ b/site/docs/configuration.md
@@ -200,35 +200,84 @@ Controls how the agent executes code.
## MCP Servers
-OpenMLR supports the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) for connecting external tools. Configure MCP servers in **Settings > MCP Servers**.
+OpenMLR supports the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) for connecting remote tool servers. Only HTTP/HTTPS MCP servers are supported. Configure them in **Settings > MCP Servers**.
### Adding an MCP Server
1. Go to **Settings > MCP Servers**
-2. Click **Add Server**
-3. Enter a unique server name
-4. Configure the transport:
- - **HTTP**: Enter the server URL (e.g., `http://localhost:8080/mcp`)
- - **stdio**: Enter the command and arguments (e.g., `npx -y @anthropic/mcp-server-filesystem /path/to/dir`)
-
-### Example Configuration
-
-**HTTP server:**
+2. Click **Add MCP Server**
+3. In the modal, enter:
+ - **Server Name** — A unique identifier (e.g., `my-tools`)
+ - **Server URL** — The HTTP/HTTPS endpoint (e.g., `https://mcp.example.com/mcp`)
+ - **Configuration (JSON)** — Optional authentication headers and query parameters
+4. Click **Test Connection** to verify the server is reachable and discover available tools
+5. Click **Save**
+
+Connected servers appear as horizontal cards showing the URL, name, authentication status, and enable/disable controls.
+
+### Authentication
+
+Add authentication to MCP servers via the JSON configuration field. Supported patterns:
+
+**Bearer token:**
+```json
+{
+ "headers": {
+ "Authorization": "Bearer your-token-here"
+ }
+}
```
-Name: my-tools
-Transport: HTTP
-URL: http://localhost:3001/mcp
+
+**API key in header:**
+```json
+{
+ "headers": {
+ "X-API-Key": "your-api-key"
+ }
+}
```
-**stdio server (filesystem access):**
+**API key in query parameters:**
+```json
+{
+ "params": {
+ "api_key": "your-api-key"
+ }
+}
```
-Name: filesystem
-Transport: stdio
-Command: npx
-Arguments: -y, @anthropic/mcp-server-filesystem, /Users/me/projects
+
+**Combined headers and params:**
+```json
+{
+ "headers": {
+ "Authorization": "Bearer your-token"
+ },
+ "params": {
+ "workspace": "my-workspace"
+ }
+}
```
-MCP servers are connected when you start a new session. Tools from connected servers appear alongside built-in tools.
+### Transport Detection
+
+OpenMLR automatically selects the correct MCP transport based on the URL:
+
+- URLs ending in `/sse` use **SSE transport** (legacy, GET-based)
+- All other URLs use **Streamable HTTP transport** (current standard, POST-based)
+
+### Example Servers
+
+| Server | URL |
+|--------|-----|
+| Composio | `https://mcp.composio.dev/...` |
+| Zapier MCP | `https://actions.zapier.com/mcp/...` |
+| Browserbase | `https://mcp.browserbase.com` |
+
+### Status in Right Panel
+
+Connected MCP servers are displayed in the right panel under the **MCP Servers** section, showing each server's name, URL, and connection status (connected/enabled/disabled).
+
+MCP servers are connected when you start a new agent session. Tools from connected servers appear alongside built-in tools and are indistinguishable from the agent's perspective.
---
diff --git a/site/docs/index.md b/site/docs/index.md
index 8d9b302..0062cf7 100644
--- a/site/docs/index.md
+++ b/site/docs/index.md
@@ -18,6 +18,8 @@ features:
details: Ask clarifying questions, gather context, break tasks into structured plans. No execution until you're ready.
- title: Execute
details: Research papers, write drafts, run code. All tools available. Follows the plan you built in Plan mode.
+ - title: MCP Servers
+ details: Connect remote MCP servers with custom authentication. Test connections before saving. Monitor status in the right panel.
---
## Quick Start
@@ -59,7 +61,7 @@ Switch modes with the **P/E button** in the input area or press **Cmd+M** (Mac)
- **Paper research** — OpenAlex, Semantic Scholar, arXiv, CrossRef, Papers With Code. Full paper reading, citation graphs.
- **Paper writing** — Section-by-section drafting with auto-save. Preview + export (Markdown/LaTeX) in the Paper tab.
-- **MCP servers** — Connect external tools via the Model Context Protocol (Settings > MCP Servers).
+- **MCP servers** — Connect remote HTTP/HTTPS MCP servers with custom auth (Bearer, API key, headers). Test and monitor connections from the UI.
- **Sub-agent streaming** — Research tool spawns independent agents with nested tool call visibility.
- **Background jobs** — Celery + Redis. Close the browser, come back later.
- **Per-conversation parallelism** — Multiple conversations process simultaneously.