RavensPort

MCP Funnel

A funnel is a local MCP endpoint at http://127.0.0.1:5559/mcp/<slug> that pools several MCP servers and exposes a subset of what they offer. Point one funnel at each agent.

Off by default — enable it with Enable MCP funnel on the MCP Funnel tab. While off, every path under /mcp returns 404.

1. Add sources#

A source is one MCP server the funnel can draw from:

Kind What it is
Route (credentialed) An MCP server reached through one of your routes. The OAuth token is attached automatically.
API bridge One of your own API to MCP bridges. Its tools join the funnel like any other source's, and the credential is attached one hop further along, by the route the bridge calls.
URL (no auth) Any MCP server needing no credential.

An API bridge source needs both switches on: the funnel's, and Enable API bridges on the API to MCP tab.

Press Refresh on a source to connect and read what it offers. The status column reports the result, or the reason it could not be reached.

2. Create a funnel#

Give it a name and an endpoint slug. The full URL appears in the grid, selectable and ready to paste.

3. Choose what it exposes#

Select the funnel, tick the sources it pools, then per source and per kind (tools, resources, prompts):

Mode Behaviour
All Everything, including whatever the server gains later.
Include Only what is ticked. A tool added upstream later stays hidden until you pick it.
Exclude Everything except what is ticked. A tool added later is exposed immediately.

Use Include to grant a known set, Exclude to revoke a few from an otherwise trusted server.

Edits apply on the agent's next call — no reconnect, no restart.

Tool naming#

Every name is prefixed with its source's alias: create_issue from a source aliased gh reaches the agent as gh__create_issue. Resources are rewritten to funnel://gh/<original-uri> and mapped back on read.

Prefixing is unconditional by design. Prefixing only on collision would rename a tool the day you add an unrelated source, breaking every agent prompt that referenced it.

Pointing an agent at a funnel#

{
  "servers": {
    "my-agent": {
      "url": "http://127.0.0.1:5559/mcp/my-agent",
      "headers": { "X-Proxy-Key": "<this-funnel's-key>" }
    }
  }
}

Each funnel has its own proxy key — no route's key opens it, and no other funnel's does. Select the funnel to copy its key.

The key must go in the X-Proxy-Key header. An MCP client that cannot set request headers cannot reach a funnel — see Calling the proxy.

Behaviour#

Limits#


Edit this page on the wiki Request support · Report vulnerabilities privately