Labsco
esaio logo

esa MCP Server

β˜… 58

from esaio

Official Model Context Protocol (MCP) server for esa.io - STDIO transport version.

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedAccount requiredNeeds API keys

esa MCP Server

ζ—₯本θͺž | English

Official Model Context Protocol (MCP) server for esa.io - STDIO transport version.

Overview

This MCP server provides seamless integration between AI assistants and esa.io, a collaborative documentation platform. It enables AI assistants to read, create, update, and manage esa documents directly through the Model Context Protocol.

Available Tools

Team Management

  • esa_get_teams - Get user's accessible esa teams

  • esa_get_team_stats - Get team statistics (members, posts, comments, stars, watches, active users)

  • esa_get_team_tags - Get all tags used in team posts with count

  • esa_get_team_members - Get team members with roles and profile information

Post Management

  • esa_search_posts - Search for posts in esa.io

  • esa_get_post - Get a specific post by post number (includes backlinks_count and body_md_stats with the body's character and line counts)

  • esa_get_post_backlinks - List posts that reference a specific post with pagination

  • esa_create_post - Create a new post with tags, category, and WIP status

  • esa_update_post - Update existing post (title, content, tags, category, WIP status)

  • esa_append_post - Append content to the end of a post's body (no need to fetch the current body; saved as a new revision)

  • esa_prepend_post - Prepend content to the beginning of a post's body (no need to fetch the current body; saved as a new revision)

Post Actions

  • esa_archive_post - Archive a post by moving to Archived/ category

  • esa_ship_post - Ship a post (mark as complete by setting wip to false)

  • esa_duplicate_post - Duplicate a post (create a new WIP post with the same title and body; cross-team duplication is also supported)

Comment Management

  • esa_get_comment - Get a specific comment by ID

  • esa_create_comment - Create a new comment on a post

  • esa_update_comment - Update an existing comment

  • esa_delete_comment - Delete a comment

  • esa_get_post_comments - Get comments for a specific post with pagination

  • esa_get_team_comments - Get team comments with pagination

Category Management

  • esa_get_categories - Get categories and subcategories for a specific path

  • esa_get_top_categories - Get all top-level categories for a team

  • esa_get_all_category_paths - Get all category paths in a team (with post counts, supports filtering)

  • Perfect for understanding category structure, organization planning, and cleanup

  • Filter examples: prefix: "dev" for development-related, match: "api" for API-related categories

Attachments

  • esa_get_attachment - Retrieve an attachment file from esa posts and comments

  • Returns base64-encoded data for supported images (JPEG, PNG, GIF, WebP) under 30MB

  • Returns signed URLs (valid for 5 minutes) for other file types, larger images, or when forceSignedUrl is specified

Help & Documentation

  • esa_get_search_options_help - Get esa search syntax documentation

  • esa_get_markdown_syntax_help - Get esa Markdown syntax documentation

  • esa_search_help - Search esa documentation for features and terminology

Available Resources

  • esa_recent_posts - Fetch recent updated posts from esa team

  • Template: esa://teams/{teamName}/posts/recent

  • Returns: JSON list of recently updated posts

Available Prompts

  • esa_summarize_post - Summarize an esa post content

  • Input: Team name and post number

  • Output: Structured summary of the post content

Registry

This package ships registry.json at the package root, exposing registered tools, resources, and prompts. It can be consumed programmatically without spawning the server:

import registry from "@esaio/esa-mcp-server/registry.json" with { type: "json" };

Schema:

{
 "tools": [{ "name": "esa_get_teams" }, "..."],
 "resources": [
 { "name": "esa_recent_posts", "uriTemplate": "esa://teams/{teamName}/posts/recent" }
 ],
 "prompts": [{ "name": "esa_summarize_post" }]
}

The file is regenerated by npm run build:registry and a CI check enforces that it stays in sync with the registered set.

Links

Support

Made with ❀️ by the esa team