Farcaster MCP Server
The Farcaster MCP Server enables interaction with the Farcaster network by allowing you to:
Retrieve casts from a specific Farcaster user by their FID (Farcaster ID)
Retrieve casts from a specific Farcaster user by their username
Retrieve casts from a specific Farcaster channel by its name or URL
Allows to fetch casts (posts) from users and channels on the Farcaster network, search channels, and analyze content.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Farcaster MCP Servershow me the latest casts from username 'vitalik.eth'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Farcaster MCP Server
An MCP server that provides tools to interact with the Farcaster network (farcaster.xyz), allowing AI models to fetch casts, search channels, and analyze content.
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
Related MCP server: Lens Protocol MCP Server
Installation
# Clone the repository
git clone https://github.com/manimohans/farcaster-mcp.git
cd farcaster-mcp
# Install dependencies
npm install
# Build the project
npm run buildUsage
Running the server
npm startUsing with MCP Inspector
npx @modelcontextprotocol/inspector node ./build/index.jsUsing with Claude for Desktop
Install Claude for Desktop
Open your Claude for Desktop App configuration at:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Add the following configuration:
{
"mcpServers": {
"farcaster": {
"command": "node",
"args": ["/absolute/path/to/farcaster-mcp/build/index.js"]
}
}
}Restart Claude for Desktop
Using with Smithery
This project includes Smithery configuration files for easy deployment:
# 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 claudeAvailable 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
# Run in development mode
npm run devLicense
MIT
Available Tools
3 toolsget-channel-castsC
Get casts from a specific Farcaster channel
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | Channel name (e.g., 'aichannel') or URL | |
| limit | No | Maximum number of casts to return (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't describe behavioral traits such as whether it's read-only, has rate limits, authentication needs, pagination behavior, or what the return format looks like. This leaves significant gaps for a tool that presumably fetches data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with every part contributing to understanding the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a data-fetching tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral aspects like safety, response format, or error handling, which are crucial for an agent to use the tool effectively in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description doesn't add any parameter-specific information beyond what's already in the input schema, which has 100% schema description coverage. It mentions 'specific Farcaster channel' but doesn't elaborate on the 'channel' parameter's semantics or the 'limit' parameter's implications. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get casts') and target resource ('from a specific Farcaster channel'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'get-user-casts' or 'get-username-casts', which would require mentioning channel-specific versus user-specific retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like the sibling tools 'get-user-casts' or 'get-username-casts'. It lacks any context about use cases, prerequisites, or exclusions, leaving the agent to infer usage based on the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-user-castsB
Get casts from a specific Farcaster user by FID
| Name | Required | Description | Default |
|---|---|---|---|
| fid | Yes | Farcaster user ID (FID) | |
| limit | No | Maximum number of casts to return (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but lacks details on permissions, rate limits, error handling, or return format. For a read operation with no annotations, this leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero waste. It is front-loaded with the core purpose and efficiently conveys the essential information without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 parameters, no output schema, no annotations), the description is minimally adequate but incomplete. It lacks details on behavioral aspects like pagination, error cases, or output structure, which are important for a read operation without annotations to guide the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (fid and limit) adequately. The description adds no additional meaning beyond what the schema provides, such as parameter interactions or usage examples, which aligns with the baseline score when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get casts') and specifies the resource ('from a specific Farcaster user by FID'), making the purpose explicit. It distinguishes from sibling tools like 'get-channel-casts' and 'get-username-casts' by focusing on user ID rather than channel or username.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get-username-casts' or 'get-channel-casts'. It does not mention prerequisites, exclusions, or contextual factors that would help an agent choose between these sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-username-castsC
Get casts from a specific Farcaster username
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Farcaster username | |
| limit | No | Maximum number of casts to return (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but lacks details on traits like whether it's read-only, requires authentication, has rate limits, returns paginated results, or handles errors. For a retrieval tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse. Every word earns its place, achieving optimal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (data retrieval with parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'casts' entail (e.g., content, metadata), return format, error handling, or behavioral constraints. For a tool with these contextual gaps, the description should provide more completeness to aid the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for both parameters ('username' as Farcaster username and 'limit' with default). The description adds no additional parameter semantics beyond what the schema provides, such as format examples for usernames or constraints on limit values. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'casts from a specific Farcaster username', making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get-channel-casts' and 'get-user-casts', which likely retrieve casts by different criteria. The description is specific but lacks sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get-channel-casts' and 'get-user-casts' available, there's no indication of when this username-based retrieval is preferred, such as for public profiles or specific user identification. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
- First observed
get-channel-casts - First observed
get-user-casts - First observed
get-username-casts
TDQS
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.
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.
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.
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Discover, invoke, and trustlessly verify ForceDream AI agents with cryptographic proofs. 17 tools.
Give your agent live data from Twitter, Reddit, the web and GitHub. No API keys, no scraping stack.
Collaboration layer for AI agents. Publish assets, send messages, manage threads and contacts.
Discover, inspect and run 63,000+ agent tools from one balance. Pay per call, no subscriptions.
1
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that allows Claude to interact with Warpcast accounts, enabling actions like posting casts, reading content, searching by keywords, and managing channel interactions through natural language.3MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI tools to interact with the Lens Protocol decentralized social network ecosystem. Supports fetching profiles, posts, followers, searching content, and accessing social graph data through standardized MCP interfaces.3-
- AlicenseNot gradedqualityNot gradedmaintenanceEnables interaction with Warpcast (Farcaster) through Claude, allowing users to post casts, search and read content, get trending posts, and manage channel subscriptions using natural language.-
- AlicenseNot gradedqualityDmaintenanceProvides tools for AI assistants to query the Canton Network for data on contracts, governance, validators, and party transactions through the Lighthouse Explorer API. It enables seamless interaction with blockchain statistics, price history, and name services without requiring an API key.127MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/manimohans/farcaster-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server