esa MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LANG | No | UI language setting (e.g., 'ja' for Japanese) | ja |
| ESA_ACCESS_TOKEN | Yes | Personal access token for esa.io with scopes: read write or admin:comment read:post write:post read:category read:tag read:attachment read:team read:member |
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": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| esa_get_teamsA | Retrieves a list of esa teams that the user has access to. |
| esa_get_team_statsA | Retrieves team statistics including member count, posts count (total/WIP/shipped), comments, stars, watches, and daily/weekly/monthly active users |
| esa_get_team_tagsA | Retrieves all tags used in posts within a team, along with the count of posts for each tag |
| esa_get_team_membersB | Retrieves all members of a team with their roles and profile information |
| esa_get_postA | 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_postsA | Search for posts in esa.io |
| esa_create_postB | Creates a new post in an esa team with optional tags, category, and WIP status. |
| esa_update_postA | 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_postA | 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_postA | 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_commentA | Retrieves a specific comment by comment ID, with optional stargazers included. |
| esa_create_commentC | Creates a new comment on an existing post in an esa team. |
| esa_update_commentB | Updates an existing comment in an esa team by comment ID. |
| esa_delete_commentA | Deletes a comment from an esa team by comment ID. |
| esa_get_post_backlinksA | 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_commentsA | Retrieves a list of comments for a specific post with pagination support. |
| esa_get_team_commentsB | Retrieves a list of comments in a team with pagination support. |
| esa_get_categoriesA | Retrieves category information and subcategories for a specific category path, with optional posts and parent categories included |
| esa_get_top_categoriesC | Retrieves all top-level categories for a team |
| esa_get_all_category_pathsA | 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_postA | 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_postA | 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_postA | 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_revisionB | Rolls back a post to the specified revision, saving the restored content as a new revision. |
| esa_get_search_options_helpA | 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_helpA | 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_helpA | 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_attachmentA | 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| esa_summarize_post | Summarize an esa post |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/esaio/esa-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server