Skip to main content

A restricted TinyFish MCP gateway for free search and fetch capabilities.

Project description

🐟 microfish

中文

PyPI Docker License: MIT

Free-only MCP gateway for TinyFish — exposes just Search & Fetch, nothing else.

Why microfish?

Official MCP microfish
Search & Fetch (free)
Agent / Browser / Batch (paid) ✅ exposed ❌ stripped
Agent accidentally calls paid tools ⚠️ possible 🚫 impossible
API key pool ✅ built-in
Rate limit single key pooled, higher throughput
  • 🔒 Free-only by design — Only search, fetch_content, get_search_usage, and list_fetch_usage are registered. Paid APIs are never exposed, so agents can't see or invoke them — no accidental charges, no wasted tokens.
  • ⚡ Built-in key pool — Supply multiple TinyFish API keys and microfish round-robins across them. If one key fails, it automatically falls back to the next (up to 3 retries), effectively bypassing single-key rate limits.

Quick Start

Get a free API key → https://agent.tinyfish.ai/api-keys

stdio (recommended)

Claude Code:

TINYFISH_KEYS=<KEY> \
  claude mcp add microfish --env TINYFISH_KEYS -- uvx microfish

Cursor / other MCP clients:

{
  "mcpServers": {
    "microfish": {
      "command": "uvx",
      "args": ["microfish"],
      "env": { "TINYFISH_KEYS": "<KEY>" }
    }
  }
}

HTTP

MICROFISH_TRANSPORT=http TINYFISH_KEYS=<KEY> uvx microfish
# endpoint: http://localhost:8000/mcp

Tools

✅ Available

Tool Description
search Web search (free)
fetch_content Fetch & extract page content (free)
get_search_usage Search usage stats
list_fetch_usage Fetch usage stats

🚫 Blocked

Agent automation · Batch automation · Browser sessions · Run lifecycle

Authentication

1. Client-owned key — Leave TINYFISH_KEYS unset. Each client passes its own key via Authorization: Bearer.

2. Server-managed single key — Set TINYFISH_KEYS=<key>. Optionally set MCP_AUTH_TOKEN to protect the endpoint.

3. Server-managed key pool ⚡ — Set TINYFISH_KEYS=k1,k2,k3. Requests are distributed in order; failures automatically fall back to the next key (up to 3 retries).

Configuration

Variable Default Description
TINYFISH_KEYS Comma-separated API keys; enables server-managed mode
MCP_AUTH_TOKEN Bearer token required from clients (server-managed mode)
MICROFISH_TRANSPORT stdio stdio or http
MICROFISH_HOST 0.0.0.0 Bind host (HTTP mode)
MICROFISH_PORT 8000 Bind port (HTTP mode)
MICROFISH_MCP_PATH /mcp MCP endpoint path (HTTP mode)

Client Examples

  • Claude Code

    HTTP:

    # Without auth
    claude mcp add --transport http microfish http://localhost:8000/mcp
    
    # With auth
    claude mcp add --transport http microfish http://localhost:8000/mcp \
      --header "Authorization: Bearer <YOUR_MCP_OR_TINYFISH_TOKEN>"
    

    stdio:

    TINYFISH_KEYS=<KEY> \
      claude mcp add microfish --env TINYFISH_KEYS -- uvx microfish
    
  • Codex

    HTTP:

    [mcp_servers.microfish]
    url = "http://localhost:8000/mcp"
    bearer_token_env_var = "MICROFISH_MCP_BEARER"
    

    Set MICROFISH_MCP_BEARER to your TinyFish API key (client-owned) or MCP auth token (server-managed).

    stdio:

    [mcp_servers.microfish]
    command = "uvx"
    args = ["microfish"]
    env = { TINYFISH_KEYS = "<KEY>" }
    
  • Cursor

    HTTP:

    {
      "mcpServers": {
        "microfish": {
          "url": "http://localhost:8000/mcp",
          "headers": {
            "Authorization": "Bearer ${env:MICROFISH_MCP_BEARER}"
          }
        }
      }
    }
    

    Drop the headers block if no auth is required.

    stdio:

    {
      "mcpServers": {
        "microfish": {
          "command": "uvx",
          "args": ["microfish"],
          "env": { "TINYFISH_KEYS": "<KEY>" }
        }
      }
    }
    

Deployment

Local

uvx microfish              # run directly, no clone needed

Docker

docker compose up -d       # pulls ghcr.io/vvtommy/microfish:latest
  • docker-compose.yml — pulls the published image
  • docker-compose_build.yml — builds from local Dockerfile

Contributing

PRs and issues are welcome. Please open an issue first for major changes.

Releasing

Push a vX.Y.Z tag to trigger: PyPI publish + GHCR image publish.

License

MIT

Readme(中文)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

microfish-1.1.2b2.tar.gz (340.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

microfish-1.1.2b2-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

Details for the file microfish-1.1.2b2.tar.gz.

File metadata

  • Download URL: microfish-1.1.2b2.tar.gz
  • Upload date:
  • Size: 340.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for microfish-1.1.2b2.tar.gz
Algorithm Hash digest
SHA256 260c15e74bbb4a6ccbd06780589aaec7e0253c0248409fce3d00c956a038ec2f
MD5 6b914a1db40d3b7a18a431a65bcf5b84
BLAKE2b-256 9cea0bcfeba7316dab3015fd21e1333059fb8777b5caa7d9f9370193e2ca6702

See more details on using hashes here.

Provenance

The following attestation bundles were made for microfish-1.1.2b2.tar.gz:

Publisher: pypi.yml on vvtommy/microfish

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file microfish-1.1.2b2-py3-none-any.whl.

File metadata

  • Download URL: microfish-1.1.2b2-py3-none-any.whl
  • Upload date:
  • Size: 13.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for microfish-1.1.2b2-py3-none-any.whl
Algorithm Hash digest
SHA256 ac3bdf1cfe7bf25f2073bd805a61bec01f3f8a5de36aeabe166f8a071cd4eb06
MD5 4644ed820053a73aece93c7894b812fb
BLAKE2b-256 ab98d3ba438942c5aaa8456a435c445f58e3d4090ba9c4ff992dad889c0560c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for microfish-1.1.2b2-py3-none-any.whl:

Publisher: pypi.yml on vvtommy/microfish

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page