@esaio/esa-mcp-server
Official MCP server for esa.io - STDIO transport version
Versions
0.13.0latest0.12.00.11.00.10.10.10.0+ show 23 moreshow less
0.9.20.9.10.9.00.8.10.8.00.7.50.7.40.7.10.7.00.6.10.6.00.5.10.5.00.4.00.3.10.2.70.2.60.2.50.2.30.2.20.2.10.2.00.1.0Tools 28
esa_get_teams Retrieves a list of esa teams that the user has access to.
esa_get_team_stats Retrieves team statistics including member count, posts count (total/WIP/shipped), comments, stars, watches, and daily/weekly/monthly active users
esa_get_team_tags Retrieves all tags used in posts within a team, along with the count of posts for each tag
esa_get_team_members Retrieves all members of a team with their roles and profile information
esa_get_post Retrieves a specific post from an esa team by post number. The response always includes backlinks_count (the number of posts referencing this one). To list the referencing posts themselves, use esa_get_post_backlinks. To fetch comments, use esa_get_post_comments.
esa_search_posts Search for posts in esa.io
esa_create_post Creates a new post in an esa team with optional tags, category, and WIP status.
esa_update_post Updates an existing post in an esa team by post number. You can update the title, content, tags, category, and WIP status. To ship a post (mark as complete), set wip to false - this is preferred over using esa_ship_post when updating other fields simultaneously. To only add content to the start or end of the body, use esa_append_post or esa_prepend_post instead.
esa_append_post Appends Markdown content to the end of an existing post's body, saving it as a new revision. Unlike esa_update_post, this does not require fetching the current body first, making it ideal for adding to a post (e.g. log entries, meeting notes). Optionally set wip to change the WIP state.
esa_prepend_post Prepends Markdown content to the beginning of an existing post's body, saving it as a new revision. Unlike esa_update_post, this does not require fetching the current body first. Behaves the same as esa_append_post except content is inserted at the start of the body. Optionally set wip to change the WIP state.
esa_get_comment Retrieves a specific comment by comment ID, with optional stargazers included.
esa_create_comment Creates a new comment on an existing post in an esa team.
esa_update_comment Updates an existing comment in an esa team by comment ID.
esa_delete_comment Deletes a comment from an esa team by comment ID.
esa_get_post_backlinks Retrieves a paginated list of posts that reference (link back to) the specified post. Archived posts and WIP posts are excluded. Results are ordered by backlink registration date (newest references first).
esa_get_post_comments Retrieves a list of comments for a specific post with pagination support.
esa_get_team_comments Retrieves a list of comments in a team with pagination support.
esa_get_categories Retrieves category information and subcategories for a specific category path, with optional posts and parent categories included
esa_get_top_categories Retrieves all top-level categories for a team
esa_get_all_category_paths Retrieves category paths in a team to understand the overall category structure. Perfect for category organization, cleanup, migration planning, or finding similar categories. Returns a paginated list of paths with post counts, sorted in lexicographic order. Supports filtering (prefix/suffix/match/exact_match) to find categories by pattern.
esa_archive_post Archives a post by moving it to the Archived/ category. If the post is in 'dev/docs', it becomes 'Archived/dev/docs'. Posts without category go to 'Archived'.
esa_ship_post Ships a post by setting wip to false. This marks the post as complete and ready to be published. Use this only when you need to ship without making other changes - if you're also updating title, content, or other fields, use esa_update_post with wip: false instead.
esa_duplicate_post Duplicates a post by creating a new WIP post with the same name and body_md as the source post. By default the duplicate is created in the source team; specify targetTeamName to duplicate into a different team.
esa_rollback_post_revision Rolls back a post to the specified revision, saving the restored content as a new revision.
esa_get_search_options_help Get esa search syntax documentation when you need to construct complex search queries. Use this BEFORE esa_search_posts if you're unsure how to translate user's search requirements into proper esa query syntax (e.g., date ranges, tag filters, category searches, advanced operators).
esa_get_markdown_syntax_help Get esa Markdown and formatting documentation when unsure about syntax. Use this BEFORE using any tools with *_md parameters (like esa_create_post, esa_update_post, esa_create_comment, esa_update_comment) if you need clarification on Markdown syntax, esa-specific extensions, or formatting options.
esa_search_help Search esa documentation for features, terminology, and specifications. Use this when users mention esa-specific terms, ask about esa functionality, or request help with esa workflows that you're not familiar with.
esa_get_attachment Retrieves an attachment file from esa with signed URLs. For supported images (JPEG, PNG, GIF, WebP) under 30MB, returns base64-encoded data. For other file types, larger images, or when forceSignedUrl is true, returns signed URLs.
Permissions 2
network medium env_vars low