Skip to main content
Glama
README.md
# fal MCP Server

A Model Context Protocol (MCP) server for interacting with fal.ai models and services. This project was inspired by [am0y's MCP server](https://github.com/am0y), but updated to use the latest streaming MCP support.

## Features

- List all available fal.ai models
- Search for specific models by keywords
- Get model schemas
- Generate content using any fal.ai model
- Support for both direct and queued model execution
- Queue management (status checking, getting results, cancelling requests)
- File upload to fal.ai CDN
- Full streaming support via HTTP transport

## Requirements

- Python 3.12+
- fastmcp
- httpx
- aiofiles
- A fal.ai API key

## Installation

1. Clone this repository:
```bash
git clone https://github.com/derekalia/fal.git
cd fal
```

2. Install the required packages:
```bash
# Using uv (recommended)
uv sync

# Or using pip
pip install fastmcp httpx aiofiles
```

## Usage

### Running the Server Locally

1. Get your fal.ai API key from [fal.ai](https://fal.ai)

2. Start the MCP server with HTTP transport:
```bash
./run_http.sh YOUR_FAL_API_KEY
```

The server will start and display connection information in your terminal.

3. Connect to it from your LLM IDE (Claude Code or Cursor) by adding to your configuration:

```json
{
  "Fal": {
    "url": "http://127.0.0.1:6274/mcp/"
  }
}
```

### Development Mode (with MCP Inspector)

For testing and debugging, you can run the server in development mode:

```bash
fastmcp dev main.py
```

This will:
- Start the server on a random port
- Launch the MCP Inspector web interface in your browser
- Allow you to test all tools interactively with a web UI

The Inspector URL will be displayed in the terminal (typically `http://localhost:PORT`).

### Environment Variables

The `run_http.sh` script automatically handles all environment variables for you. If you need to customize:

- `PORT`: Server port for HTTP transport (default: 6274)

#### Setting API Key Permanently

If you prefer to set your API key permanently instead of passing it each time:

1. Create a `.env` file in the project root:
```bash
echo 'FAL_KEY="YOUR_FAL_API_KEY_HERE"' > .env
```

2. Then run the server without the API key argument:
```bash
./run_http.sh
```

For manual setup:
- `FAL_KEY`: Your fal.ai API key (required)
- `MCP_TRANSPORT`: Transport mode - `stdio` (default) or `http`

## Available Tools

- `models(page=None, total=None)` - List available models with optional pagination
- `search(keywords)` - Search for models by keywords
- `schema(model_id)` - Get OpenAPI schema for a specific model
- `generate(model, parameters, queue=False)` - Generate content using a model
- `result(url)` - Get result from a queued request
- `status(url)` - Check status of a queued request
- `cancel(url)` - Cancel a queued request
- `upload(path)` - Upload a file to fal.ai CDN

## License

[MIT](LICENSE)

TDQS

A3.5/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between 'models' and 'search' as both retrieve model information, which could cause confusion. However, their specific functions (listing vs. keyword-based searching) are clarified in descriptions, preventing major misselection.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with clear, single-word verbs (e.g., cancel, generate, models, result). This uniformity makes the tool set predictable and easy to navigate, with no deviations in style.

Tool Count5/5

With 8 tools, the server is well-scoped for interacting with fal.ai's API, covering key operations like content generation, model management, and file handling. Each tool serves a specific function without unnecessary bloat.

Completeness4/5

The tool set covers core workflows for AI model interaction, including generation, queuing, model discovery, and file uploads. A minor gap exists in lacking tools for direct model management (e.g., updating or deleting models), but agents can work effectively with the provided operations.

Maintenance

ActivityInactive
ResponsivenessNo issues