Skip to main content
Glama
Anthonyeef

fanfou-mcp

by Anthonyeef

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FANFOU_MCP_KVNomemory = in-process KV for local dev (single process, lost on restart)
FANFOU_API_KEYYesConsumer key of an approved Fanfou app
MCP_AUTH_TOKENNoAdmin / owner bearer token (Authorization: Bearer <token>); acts as the env account. Required for the HTTP server.
KV_REST_API_URLNoVercel KV / Upstash Redis REST URL. Setting it enables multi-user mode. Alternative: UPSTASH_REDIS_REST_URL
FANFOU_API_SECRETYesConsumer secret
KV_REST_API_TOKENNoVercel KV / Upstash Redis REST token. Alternative: UPSTASH_REDIS_REST_TOKEN
FANFOU_OAUTH_TOKENNoUser access token (owner account; optional in multi-user mode)
FANFOU_MCP_READONLYNo1 = don't register write tools. Default 0 for stdio, 1 for HTTP
FANFOU_MCP_PUBLIC_URLNoPublic origin used to build the OAuth callback, e.g. https://<your-project>.vercel.app. Required in multi-user mode (falls back to the request's Host header).
UPSTASH_REDIS_REST_URLNoAlternative to KV_REST_API_URL
FANFOU_MCP_ALLOW_NOAUTHNo1 = allow HTTP requests without bearer when MCP_AUTH_TOKEN is unset. Local dev only — never in production
UPSTASH_REDIS_REST_TOKENNoAlternative to KV_REST_API_TOKEN
FANFOU_OAUTH_TOKEN_SECRETNoUser access token secret

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
verify_credentialsA

Return the authenticated Fanfou account (read-only).

home_timelineC

Read the authenticated user's home timeline (statuses from people they follow). count 1-60.

user_timelineB

Read a user's statuses. user_id empty = the authenticated user. count 1-60.

mentionsB

Read statuses that mention the authenticated user. count 1-60.

public_timelineC

Read the latest public statuses on Fanfou. count 1-60.

search_public_timelineC

Search public statuses by keyword (supports 'a b' AND and 'a|b' OR).

search_user_timelineB

Search within one user's statuses (user_id empty = the authenticated user).

get_statusC

Get one status by id.

get_contextC

Get the conversation context (reply chain) of a status.

get_userA

Get a user's profile by id (empty = the authenticated user).

favoritesC

Read a user's favorited statuses (empty = the authenticated user).

post_statusA

Post a new status (发饭). Optional in_reply_to_status_id / repost_status_id. WRITE ACTION: only call after the user has explicitly confirmed this exact action and content in chat. Requires confirm=true.

delete_statusA

Delete one of the user's own statuses. WRITE ACTION: only call after the user has explicitly confirmed this exact action and content in chat. Requires confirm=true.

favoriteA

Favorite (action='create') or unfavorite (action='destroy') a status. WRITE ACTION: only call after the user has explicitly confirmed this exact action and content in chat. Requires confirm=true.

friendshipA

Follow (action='create') or unfollow (action='destroy') a user. WRITE ACTION: only call after the user has explicitly confirmed this exact action and content in chat. Requires confirm=true.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.3/5.0

Scored across 15 tools

Disambiguation4/5

Most tools have clearly distinct resource+scope (home_timeline vs user_timeline vs public_timeline vs mentions are separated by audience, not confused). The one real overlap is verify_credentials versus get_user with an empty id, which both return the authenticated user, and the two search_* variants could be momentarily confused. Otherwise boundaries are clean.

Naming Consistency3/5

The set mixes verb_noun (get_user, get_status, post_status, delete_status) with bare-noun reads (home_timeline, user_timeline, mentions, favorites) and bare-noun writes (favorite, friendship). The convention is readable and mostly predictable, but the inconsistent use of get_/search_ prefixes across reads keeps it from being fully uniform.

Tool Count4/5

15 tools is at the upper edge of the well-scoped band but each one maps to a distinct Fanfou operation (timelines, search, status lifecycle, favorites, follow, context). Nothing feels redundant enough to cut. Slightly heavy but justified by the surface.

Completeness4/5

Core lifecycle is covered: read/search timelines, get status and reply context, post/delete, favorite/unfavorite, follow/unfollow. Gaps exist (no follower/following lists, no direct messages, no user search), but these are minor for the primary microblogging workflows an agent would run.

Maintenance

ActivityMaintained
ResponsivenessNo issues