Skip to main content
Glama
motionharvest

Replicate Anywhere

README.md
# Replicate Anywhere

An MCP (Model Context Protocol) server that enables AI assistants to search, discover, and run **any model** on [Replicate](https://replicate.com). No hardcoded model lists - just describe what you want and let the AI find and run the right model.

## Features

- πŸ” **Smart Model Search** - Find models by fuzzy name matching (e.g., "flux", "stable diffusion", "nano banana pro")
- πŸ€– **Automatic Model Discovery** - AI searches first, asks questions later
- πŸ“‹ **Parameter Detection** - Automatically retrieves and understands model input schemas
- πŸ–ΌοΈ **Inline Image Display** - Image outputs are formatted as markdown for inline display
- ⏱️ **Async Prediction Handling** - Long-running predictions return status URLs instead of timing out
- βœ… **Prediction Status Checking** - Check on running predictions that haven't completed yet

## Installation

### Prerequisites

- Node.js 18+
- A [Replicate API token](https://replicate.com/account/api-tokens)

### NPM (Global)

```bash
npm install -g replicate-anywhere
```

### From Source

```bash
git clone https://github.com/fifthseason-ai/replicate-anywhere.git
cd replicate-anywhere
npm install
npm run build
```

## Configuration

### Environment Variables

| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `REPLICATE_API_TOKEN` | Yes | - | Your Replicate API token |
| `MAX_POLL_TIME` | No | `300000` | Maximum time (ms) to wait for predictions before returning async status |

### MCP Client Configuration

#### Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "replicate-anywhere": {
      "command": "npx",
      "args": ["-y", "replicate-anywhere"],
      "env": {
        "REPLICATE_API_TOKEN": "r8_your_token_here"
      }
    }
  }
}
```

#### LibreChat

Add to your `librechat.yaml`:

```yaml
mcpServers:
  replicate-anywhere:
    type: stdio
    command: npx
    args:
      - -y
      - replicate-anywhere
    env:
      REPLICATE_API_TOKEN: "${REPLICATE_API_TOKEN}"
```

#### Docker

```yaml
services:
  replicate-anywhere:
    build:
      context: ./replicate-anywhere
    environment:
      REPLICATE_API_TOKEN: ${REPLICATE_API_TOKEN}
```

## Tools

### `search-models`

Search for AI models on Replicate by name or description. **This tool is designed to be called first** when a user mentions any model name.

```json
{
  "query": "flux pro"
}
```

### `get-model-info`

Get detailed information about a specific model, including its input parameters schema.

```json
{
  "owner": "black-forest-labs",
  "name": "flux-pro"
}
```

### `run-model`

Run a prediction on any Replicate model.

```json
{
  "model": "black-forest-labs/flux-pro",
  "input": {
    "prompt": "A beautiful sunset over mountains",
    "aspect_ratio": "16:9"
  }
}
```

### `list-models`

List public models on Replicate (paginated).

```json
{
  "cursor": "optional_pagination_cursor"
}
```

### `check-prediction`

Check the status of a running prediction.

```json
{
  "prediction_id": "abc123xyz"
}
```

## Usage Examples

### Generate an Image

> **User:** "Generate an image of a cat wearing a space helmet using flux"

The AI will:
1. Call `search-models` with query "flux"
2. Call `get-model-info` to get parameters for the best match
3. Call `run-model` with appropriate parameters
4. Return the image inline (markdown formatted)

### Use a Specific Model

> **User:** "Use stable diffusion xl to create a cyberpunk cityscape"

The AI will search for "stable diffusion xl", find `stability-ai/sdxl`, and run it.

### Check a Long-Running Prediction

> **User:** "Check on my prediction abc123"

The AI will call `check-prediction` to get the current status and output if complete.

## Output Formatting

### Images

When a model returns image URLs, the output is automatically formatted as markdown:

```markdown
**Generated Image:**

![Generated Image](https://replicate.delivery/...)

**Direct link:** https://replicate.delivery/...
```

### Other Outputs

Non-image outputs are returned as JSON.

## Development

```bash
# Install dependencies
npm install

# Build
npm run build

# Watch mode
npm run dev

# Run locally
REPLICATE_API_TOKEN=your_token npm start
```

## Architecture

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   AI Assistant  │────▢│ replicate-anywhere│────▢│  Replicate API  β”‚
β”‚  (Claude, etc.) │◀────│    MCP Server    │◀────│                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

The server acts as a bridge between MCP-compatible AI assistants and the Replicate API, providing:
- Tool definitions that guide the AI on how to search and run models
- Smart response formatting for different output types
- Timeout handling for long-running predictions

## License

MIT

## Contributing

Contributions are welcome! Please open an issue or submit a pull request.

## Credits

Built by [Aaron Sherrill](https://github.com/motionharvest)

TDQS

A4.2/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a distinct role in the model-running workflow: search vs browse, get info, run, and check status. There is no overlap between search-models and list-models because the former is for specific queries and the latter for browsing.

Naming Consistency5/5

All tool names use a consistent verb_noun pattern in snake_case: search-models, get-model-info, run-model, list-models, check-prediction. This makes the API predictable and easy to navigate.

Tool Count5/5

With 5 tools, the server is well-scoped for its purpose of running Replicate models. Each tool covers a necessary step in the workflow without unnecessary bloat.

Completeness4/5

The core lifecycle of searching, inspecting, running, and checking predictions is fully covered. A minor gap is the lack of a cancel-prediction tool, but this is not essential for the primary workflow.

Maintenance

ActivityInactive
ResponsivenessNo issues