UplinkCrate

Connect your AI clients to your tools

UplinkCrate

Open-source, self-hosted MCP gateway.

Give compatible AI clients authenticated access to multiple Model Context Protocol (MCP) servers through one gateway. Powered by MCPHub and Caddy, with Streamable HTTP and SSE transports.

View on GitHub

Open source · MIT licensed

Get the book on Amazon

The Self-Hosted AI Builder's Guide Practical guidance for deployment, security, backups, and everyday operation.

AI client → gateway → tools

One connection.
Your permitted tools.

CLIENT ENDPOINT

/mcp · Streamable HTTP

SERVER ROUTES

/mcp/fetch · additional servers you configure

  • MCP
  • Streamable HTTP
  • SSE
  • Bearer auth
Illustrative connection map. A client or agent decides when to call tools; server permissions and external credentials remain your responsibility.

A focused service for your applications

A shared route to your MCP servers.

Connect applications to the tool servers you configure, with gateway authentication and a central place to manage server connections. Keep permissions and approval rules in your client as well.

Images are automatically built and published through public GitHub Actions workflows. Powered by MCPHub, Caddy.

Start with the fetch server

Run a gateway.
Connect a compatible client.

This example binds the gateway to the Docker host. Fetch is enabled by default; additional integrations may need credentials, mounts, or configuration.

  • Docker on a supported Linux host
  • At least 512 MB of available RAM, plus capacity for selected tool servers
  • An MCP client supporting Streamable HTTP and authentication headers

Full setup guide on GitHub

For access from other computers, follow the maintained HTTPS, authentication, and network-exposure instructions.

  1. Start UplinkCrate

    docker run \
      --name mcp \
      --restart=always \
      -v mcp-data:/var/lib/mcp \
      -p 127.0.0.1:3000:3000 \
      -d hwdsl2/mcp-gateway

    Check initial startup with docker logs mcp before retrieving the key.

  2. Retrieve your API key

    uplink_api_key="$(docker exec mcp mcp_manage --getkey)"

    Fresh starts generate a Bearer key and save it in persistent data. Keep this key private.

  3. Initialize an MCP connection

    curl http://127.0.0.1:3000/mcp \
      -H "Authorization: Bearer $uplink_api_key" \
      -H "Content-Type: application/json" \
      -H "Accept: application/json, text/event-stream" \
      -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"quickstart","version":"1.0"}}}'

    This is an authenticated protocol check. For actual tool use, configure your MCP client with this endpoint and Bearer header and follow its session-handling instructions.

Part of a larger toolkit

Build your Self-Hosted AI Stack

UplinkCrate is also available as part of Self-Hosted AI Stack. Deploy local models, chat, document processing, voice, and AI tools together, or choose a smaller configuration for your needs.

Explore Self-Hosted AI Stack

Connect the services you need

Connect model routing and tools

GatewayCrate can route model requests and connect compatible model workflows to MCP tools. Configure both services and keep tool permissions explicit.

Explore GatewayCrate

Before you deploy

Is UplinkCrate free to use?

The UplinkCrate project is open source under the MIT License. You provide hardware or cloud hosting and pay associated costs. Models, dependencies, and external providers retain their own licenses and terms.

Is UplinkCrate an autonomous agent?

No. It connects MCP clients to tool servers. A client or agent runtime supplies the model, decides which tools to call, and enforces its own approvals and stopping rules.

Which tools work immediately?

The fetch server is enabled by default. Other packaged integrations require the relevant configuration, credentials, or mounted paths. Availability does not grant permission to access arbitrary files or accounts.

Does self-hosting keep every tool request local?

No. Fetch, search, GitHub, databases, and other integrations can contact external systems. Check destinations, credentials, and permissions for each server and client.

How should I grant filesystem access?

Mount only the paths a tool needs, use read-only access when appropriate, and restrict the server’s allowed directories. Avoid exposing your whole host filesystem.

Can I open the dashboard in a browser?

The dashboard sits behind gateway Bearer authentication and has its own administrator credentials. Follow the documented authentication setup rather than assuming a plain browser visit is sufficient.

The image includes optional aggregate usage counts. See the usage-count documentation; set MCP_DISABLE_USAGE_COUNTS=1 to disable them.

Connect the tools you need. Keep their permissions deliberate.

View on GitHub