The slim.to MCP server

slim.to speaks the Model Context Protocol in two forms:

The rest of this page covers the local server; the per-platform how-tos cover connecting the hosted one. Once connected either way, you can say things like:

Tools

Tool Arguments Returns
create_link_from_file file_path (required), title, slug, password, domain The tracked short link + file info
create_short_link target_url (required), title, slug, password, expires_at, domain The tracked short link
replace_link_file link (id, slug, or short URL), file_path Swaps the file behind an existing link — same URL, analytics intact
list_links query, page Your links, newest first (20/page)
get_link_analytics link — an id, slug, or full short URL Views, unique viewers, time spent, device/country/referrer breakdowns, recent sessions

Files over 30 MB are handled automatically via the two-step direct-to-storage upload.

Hosted-server tools for large content

The hosted server (https://slim.to/mcp) adds tools that exist because a remote client has to move content through the model itself:

Tool Purpose
source_url (arg on create/replace) slim.to downloads the content itself from a public https URL — fastest path, and impossible to truncate
sha256 / expected_bytes (args) slim.to verifies the received content and publishes nothing on mismatch, so a truncated upload fails loudly instead of going live corrupted
start_content_uploadappend_content_chunkfinish_content_upload Send oversized content in parts; reassembled server-side in order. Missing parts block publication; a bad part can be re-sent
delete_link Permanently remove a link (requires confirm: true)

Publishing something big? In order of preference:

  1. source_url if the content is already at a publicly readable URL — slim.to fetches it anonymously, so a private or login-gated link (including an unshared Claude artifact) will not work.
  2. Otherwise chunk it. Note this makes a large upload reliable, not fast: content that exists only in the assistant's context still has to be written out token by token, which is the real cost for big files.
  3. Pass sha256/expected_bytes only if you computed them programmatically — a guessed digest can never match and will block publication.

Setup

You need:

  1. A personal API keycreate one in Dashboard → Settings → API keys.
  2. Python ≥ 3.10 with uv (recommended) or pip.

The server lives in the mcp/ directory of the slim.to repo (PyPI publication is planned; until then install from the repo path):

# with uv — no install step, runs in an ephemeral env
uvx --from /path/to/slimto/mcp slimto-mcp

# or with pip
pip install /path/to/slimto/mcp   # then the `slimto-mcp` command is on PATH

It speaks MCP over stdio — your MCP client launches it as a subprocess.

Configuration

Env var Required Default
SLIMTO_API_KEY yes
SLIMTO_API_BASE no https://slim.to

The standard client config block (adapt per client — see the how-tos):

{
  "mcpServers": {
    "slimto": {
      "command": "uvx",
      "args": ["--from", "/path/to/slimto/mcp", "slimto-mcp"],
      "env": {
        "SLIMTO_API_KEY": "slim_your_key_here"
      }
    }
  }
}

Client setup guides

Troubleshooting