fanfou-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FANFOU_MCP_KV | No | memory = in-process KV for local dev (single process, lost on restart) | |
| FANFOU_API_KEY | Yes | Consumer key of an approved Fanfou app | |
| MCP_AUTH_TOKEN | No | Admin / owner bearer token (Authorization: Bearer <token>); acts as the env account. Required for the HTTP server. | |
| KV_REST_API_URL | No | Vercel KV / Upstash Redis REST URL. Setting it enables multi-user mode. Alternative: UPSTASH_REDIS_REST_URL | |
| FANFOU_API_SECRET | Yes | Consumer secret | |
| KV_REST_API_TOKEN | No | Vercel KV / Upstash Redis REST token. Alternative: UPSTASH_REDIS_REST_TOKEN | |
| FANFOU_OAUTH_TOKEN | No | User access token (owner account; optional in multi-user mode) | |
| FANFOU_MCP_READONLY | No | 1 = don't register write tools. Default 0 for stdio, 1 for HTTP | |
| FANFOU_MCP_PUBLIC_URL | No | Public 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_URL | No | Alternative to KV_REST_API_URL | |
| FANFOU_MCP_ALLOW_NOAUTH | No | 1 = allow HTTP requests without bearer when MCP_AUTH_TOKEN is unset. Local dev only — never in production | |
| UPSTASH_REDIS_REST_TOKEN | No | Alternative to KV_REST_API_TOKEN | |
| FANFOU_OAUTH_TOKEN_SECRET | No | User 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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
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.
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.
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.
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.