Skip to main content
Glama
navidmoazzez

mastodon-mcp

by navidmoazzez

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MASTODON_URLNoYour instance, e.g. https://mastodon.social
MASTODON_ACCOUNTSNoJSON array, for several accounts across instances
MASTODON_MCP_HOMENoWhere the account store lives
MASTODON_AUDIT_LOGNoAppend-only log of every attempted write
MASTODON_HTTP_HOSTNoFor --http
MASTODON_HTTP_PORTNoFor --http
MASTODON_READ_ONLYNoHide every write from the tool list
MASTODON_HTTP_TOKENNoBearer token required by --http
MASTODON_LOGIN_PORTNoLoopback port for the OAuth redirect
MASTODON_MAX_RETRIESNoRetries on 429 and 5xx
MASTODON_ACCESS_TOKENNoAn access token for it
MASTODON_DEFAULT_ACCOUNTNoWhich handle acts when a tool names none
MASTODON_ALLOW_DESTRUCTIVENo0 blocks posting, editing and deleting
MASTODON_REQUEST_TIMEOUT_MSNoPer-request deadline
MASTODON_MIN_REQUEST_INTERVAL_MSNoSpacing between requests

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": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_accountsA

Every Mastodon account this server can act as, and which instance each lives on. Mastodon is federated, so an account is a token plus an instance: the same handle on two servers is two different people. Use the handle from here as the account argument on any other tool.

whoamiA

Authenticate against the instance and return the live profile. Use this to confirm a token still works, or when the user says 'me' or 'my' and you need their handle.

get_instance_infoA

What this instance actually allows: the character limit, how many attachments and poll options, media size ceilings, the software version, and the server rules. Worth reading before drafting anything long, because the character limit is per instance and ranges from 500 to 11,000.

update_profileA

Change your display name, bio, or the four metadata fields on your profile. Only the arguments you pass are changed. Public the moment it runs, so it needs confirm: true.

post_statusA

Publish a status. Handles text, media with alt text, a content warning, a poll, a reply, visibility, and native scheduling. The character limit is per instance, so check get_instance_info before drafting anything long: it ranges from 500 to 11,000. Public the moment it runs, so it needs confirm: true.

post_threadA

Publish several statuses as one thread, each replying to the last. Every part is checked against this instance's character limit before anything is posted, so a thread never half-publishes because part four was too long. Media, a poll and the content warning apply to the first part. Public the moment it runs, so it needs confirm: true.

edit_statusA

Change the text, content warning, media alt text or poll of a status that is already published. Mastodon keeps a public revision history and the post keeps its boosts, replies and favourites, which is why editing beats delete-and-repost. Call get_status_source first to get the exact text you are editing. Public the moment it runs, so it needs confirm: true.

get_status_sourceA

The plain-text source of one of your own statuses, exactly as it was typed, plus its content warning. This is what to edit from: the rendered content is HTML with links rewritten, so editing that back would mangle every link in the post.

get_status_historyA

Every published version of a status, oldest first. Mastodon keeps edits public, so this works for anyone's post, not only your own.

delete_statusA

Delete one of your own statuses. This cannot be undone and it discards every boost, reply and favourite it had. To fix a mistake, prefer edit_status, which keeps all of that. Needs confirm: true.

get_statusA

A single status by id, with its media, poll, link preview and engagement counts.

get_threadA

A status together with everything above and below it, nested into the real reply tree. Mastodon returns two flat lists and leaves the structure to you; this rebuilds it. Read this before replying, so the reply lands with context.

list_scheduled_statusesA

Statuses queued with scheduled_at that have not published yet.

reschedule_statusA

Change when a scheduled status will publish. Minimum five minutes ahead.

cancel_scheduled_statusB

Cancel a status that was scheduled but has not published.

get_favouritesA

Statuses a connected account has favourited, newest first.

get_bookmarksA

Statuses a connected account has bookmarked. Unlike favourites, bookmarks are private.

favourite_statusC

Favourite a status.

unfavourite_statusC

Remove your favourite from a status.

boost_statusA

Boost a status to your followers. To add a comment instead, post a status quoting its URL: Mastodon has no native quote post.

unboost_statusB

Undo a boost.

bookmark_statusA

Bookmark a status. Bookmarks are private, unlike favourites, which the author can see.

unbookmark_statusC

Remove a bookmark.

pin_statusC

Pin one of your own statuses to the top of your profile.

unpin_statusA

Unpin a status from your profile.

mute_conversationA

Stop being notified about replies to this thread, without leaving it. The tool nobody reaches for until a post goes unexpectedly wide.

unmute_conversationB

Start being notified about this thread again.

vote_pollA

Vote in a poll by option index, counting from zero. A vote cannot be changed or taken back, so it needs confirm: true.

translate_statusA

Translate a status into your language using the instance's translation backend. Only works on instances that have configured one, which is a minority, so a 404 here means the feature is off rather than that the status is missing.

get_favourited_byB

The accounts that favourited a status. Federation means this is only who your instance knows about, not necessarily everyone.

get_boosted_byB

The accounts that boosted a status, as far as your instance knows.

reportA

Report an account, optionally with specific statuses, to your instance's moderators. Optionally forwards to the account's home instance. This reaches human moderators, so it needs confirm: true.

get_home_timelineA

Statuses from the accounts and hashtags you follow, newest first. Pass since_hours to read a time window rather than a fixed count.

get_local_timelineA

Everything public posted by accounts on your own instance. On a small themed instance this is the most useful timeline there is; on mastodon.social it is a firehose.

get_federated_timelineA

Everything public your instance has federated in from the rest of the network. Large and unfiltered: use search or a hashtag timeline if you are looking for something specific.

get_hashtag_timelineA

Public statuses carrying a hashtag. Hashtags are how discovery works on Mastodon, since there is no algorithmic feed, so this is the main way to find a conversation.

get_list_timelineA

Statuses from the accounts on one of your lists. Find list ids with get_lists.

get_account_statusesA

Statuses by one account, newest first. Use exclude_replies when studying how someone writes, so replies do not dominate the sample.

searchA

Search for accounts, statuses or hashtags. Pasting a URL here with resolve on is also how you pull in a remote post or profile your instance has never seen. Note that most instances do not full-text search public statuses: a thin result set is usually the instance's policy rather than a bad query.

get_trendsA

What is trending on this instance right now: hashtags, statuses, or links. Trends are per instance, not network-wide, so a small themed server shows something completely different from mastodon.social.

get_followed_hashtagsB

Hashtags you follow. Following a hashtag puts every public post carrying it into your home timeline, which is how you build a feed on a network with no algorithm. Neither existing Mastodon MCP server exposes this.

follow_hashtagA

Follow a hashtag, so every public post carrying it appears in your home timeline. The main way to build a feed on Mastodon.

unfollow_hashtagB

Stop a hashtag's posts appearing in your home timeline.

browse_directoryA

Accounts that have opted into being discoverable, newest or most recently active first. Scoped to your own instance unless you ask for the wider network. A way to find people on a network with no recommendation engine.

get_suggested_followsA

Accounts the instance suggests you follow, with the reason for each suggestion.

get_conversationsA

Direct conversations, newest first, each with its participants and last message. Mastodon direct messages are statuses with visibility 'direct', not a separate inbox, so anyone mentioned in one can see it. Neither existing Mastodon MCP server exposes conversations at all.

get_accountA

Full profile for any account: bio, counts, the metadata fields with their verification state, and whether you follow each other. Accepts @user@instance, a bare local username, or a numeric id. Resolves accounts your instance has never seen before.

get_followersA

Accounts that follow a given account. Pages automatically past the 40-per-request ceiling.

get_followingA

Accounts a given account follows. Pages automatically.

get_relationshipsA

For each account named, whether you follow them, whether they follow you, and whether either of you has muted or blocked the other. One call for a whole list: use this before a bulk follow or unfollow rather than reading each profile.

follow_accountA

Follow an account. On a locked account this sends a follow request instead.

unfollow_accountC

Stop following an account.

mute_accountA

Hide an account from your timelines without them knowing. Private and reversible; unlike a block, they can still see and reply to you.

unmute_accountC

Stop hiding an account.

block_accountA

Block an account. This is visible to them, removes any follow in either direction, and hides your posts from them. Reversible, but the follows do not come back. Needs confirm: true.

unblock_accountA

Remove a block. Any follows the block severed do not come back; both sides have to follow again.

block_domainA

Hide every account on an entire instance and remove their followers. This is the blunt instrument for a server that is a persistent problem rather than one account. Needs confirm: true.

unblock_domainA

Lift a domain block. Followers removed by the block are not restored.

get_mutesC

Accounts you have muted.

get_blocksC

Accounts you have blocked.

get_endorsementsB

Accounts you feature on your own profile.

get_blocked_domainsC

Whole instances you have blocked.

get_follow_requestsA

Accounts waiting for you to approve their follow. Only meaningful on a locked account.

answer_follow_requestA

Approve or reject a pending follow request. Rejecting is silent; they are not told.

get_notificationsA

Mentions, boosts, favourites, follows, poll results and edits to posts you interacted with. Filter by type to get only the ones that need an answer: 'mention' is the one a person actually has to deal with.

get_read_positionA

The last notification and home-timeline entry you marked read, shared across every client on this account. Pass the returned id as since_id to fetch only what is new.

mark_readA

Record how far you have read, so the next get_notifications with since_id returns only what is new. Syncs to the web app and every other client. Affects only your own view.

dismiss_notificationB

Remove a single notification from the list. This is not undoable.

clear_notificationsA

Delete all notifications permanently. This is not the same as marking them read, and there is no undo. Needs confirm: true.

get_listsC

Your curated lists. Pass a list id to get_list_timeline to read it, which is the closest thing Mastodon has to a custom feed.

create_listB

Create a curated list. Add accounts to it with add_to_list.

delete_listA

Delete a list. The accounts on it are not affected, only the list. Needs confirm: true.

get_list_membersC

The accounts on one of your lists.

add_to_listA

Add accounts to a list. You have to already follow an account before you can put it on a list, which is the error people hit here.

remove_from_listA

Remove accounts from a list. They are not unfollowed.

get_announcementsA

Announcements from the people who run your instance: downtime, rule changes, moderation decisions. Worth checking when something stops working.

Prompts

Interactive templates invoked by user choice

NameDescription
catch-upSummarise what happened while you were away
draft-threadTurn an idea into a thread, without posting it
find-my-peopleFind accounts worth following on a topic

Resources

Contextual data attached and managed by the client

NameDescription
mastodon-accounts
mastodon-concepts
mastodon-output-format

Latest Blog Posts

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/navidmoazzez/mastodon-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server