Skip to main content
Glama
manimohans

Farcaster MCP Server

by manimohans
README.md
# Farcaster MCP Server

An MCP server that provides tools to interact with the Farcaster network ([farcaster.xyz](https://www.farcaster.xyz)), allowing AI models to fetch casts, search channels, and analyze content.

<a href="https://glama.ai/mcp/servers/koo5epnlc7">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/koo5epnlc7/badge" alt="Farcaster Server MCP server" />
</a>

## Features

- **Get User Casts**: Retrieve casts from a specific Farcaster user by FID
- **Get Username Casts**: Retrieve casts from a specific Farcaster user by username
- **Get Channel Casts**: Retrieve casts from a specific Farcaster channel
- **Get User Profile**: Get detailed profile information (bio, display name, pfp, etc.)
- **Get Cast Reactions**: Get likes and recasts for a specific cast
- **List Channels**: Browse and search Farcaster channels
- **Get User Following**: See who a user follows
- **Get User Followers**: See who follows a user

## Installation

```bash
# Clone the repository
git clone https://github.com/manimohans/farcaster-mcp.git
cd farcaster-mcp

# Install dependencies
npm install

# Build the project
npm run build
```

## Usage

### Running the server

```bash
npm start
```

### Using with MCP Inspector

```bash
npx @modelcontextprotocol/inspector node ./build/index.js
```

### Using with Claude for Desktop

1. Install [Claude for Desktop](https://claude.ai/download)
2. Open your Claude for Desktop App configuration at:
   - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
   - Windows: `%APPDATA%\Claude\claude_desktop_config.json`

3. Add the following configuration:

```json
{
  "mcpServers": {
    "farcaster": {
      "command": "node",
      "args": ["/absolute/path/to/farcaster-mcp/build/index.js"]
    }
  }
}
```

4. Restart Claude for Desktop

### Using with Smithery

This project includes Smithery configuration files for easy deployment:

```bash
# Install Smithery CLI
npm install -g @smithery/cli

# Deploy to Smithery (specify the client, e.g., claude, cline, windsurf, etc.)
npx @smithery/cli install @manimohans/farcaster-mcp --client claude
```

Available client options: claude, cline, windsurf, roo-cline, witsy, enconvo

### Available Tools

#### get-user-casts

Retrieves casts from a specific Farcaster user by their FID (Farcaster ID).

Parameters:
- `fid`: Farcaster user ID (number)
- `limit` (optional): Maximum number of casts to return (default: 10)

Example query: "Show me the latest casts from FID 6846."

#### get-username-casts

Retrieves casts from a specific Farcaster user by their username.

Parameters:
- `username`: Farcaster username (string)
- `limit` (optional): Maximum number of casts to return (default: 10)

Example query: "Show me the latest casts from username 'mani'."

#### get-channel-casts

Retrieves casts from a specific Farcaster channel.

Parameters:
- `channel`: Channel name or URL (string)
- `limit` (optional): Maximum number of casts to return (default: 10)

Example query: "Show me the latest casts from the 'aichannel' channel."

#### get-user-profile

Gets detailed profile information for a Farcaster user.

Parameters:
- `fid` (optional): Farcaster user ID (number)
- `username` (optional): Farcaster username (string)

Example query: "Get the profile for username 'dwr.eth'."

#### get-cast-reactions

Gets likes and recasts for a specific cast.

Parameters:
- `fid`: FID of the cast author (number)
- `hash`: Hash of the cast (string)
- `type` (optional): Type of reactions - "likes", "recasts", or "all" (default: "all")

Example query: "How many likes does cast 0x1cb62ca3... by FID 6846 have?"

#### list-channels

Lists Farcaster channels with optional search filtering.

Parameters:
- `limit` (optional): Maximum number of channels to return (default: 20)
- `search` (optional): Search term to filter channels by name or ID

Example query: "List the top 10 channels about AI."

#### get-user-following

Gets the list of users that a Farcaster user follows.

Parameters:
- `fid`: Farcaster user ID (number)
- `limit` (optional): Maximum number of results (default: 25)

Example query: "Who does FID 3 follow?"

#### get-user-followers

Gets the list of users who follow a Farcaster user.

Parameters:
- `fid`: Farcaster user ID (number)
- `limit` (optional): Maximum number of results (default: 25)

Example query: "Who follows FID 3?"

## API Details

This implementation uses the Farcaster Hubble API to fetch data.

## Development

```bash
# Run in development mode
npm run dev
```

## License

MIT

TDQS

C2.9/5.0

Scored across 3 tools

Disambiguation3/5

The three tools all retrieve casts but from different sources (channel, user by FID, username), which provides some distinction. However, the overlap in purpose (getting casts) and the potential confusion between user-based tools (FID vs. username) create moderate ambiguity, as an agent might struggle to choose the right one without clear context about the available identifier.

Naming Consistency5/5

All tool names follow a consistent verb-noun pattern with hyphens (get-channel-casts, get-user-casts, get-username-casts). This uniformity makes the set predictable and easy to understand, with no deviations in naming style or structure.

Tool Count2/5

With only 3 tools, the server feels thin for a Farcaster domain, which likely involves more operations like posting casts, interacting with content, or accessing user profiles. This limited set may hinder agents from performing comprehensive tasks, indicating an under-scoped tool surface.

Completeness1/5

The tool set is severely incomplete for a Farcaster server, covering only read operations for casts from specific sources. It lacks essential CRUD operations such as creating or deleting casts, user management, channel interactions, or broader API features, leaving significant gaps that will cause agent failures in typical workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues