create_post
Create a new post in the esa team. Requires a title and optionally accepts content, tags, category, WIP status, and other metadata. Returns the created post information including the assigned post number and URL.
Read, write and comment on your team's esa posts without opening the browser.
No longer maintained. The GitHub repository for this server is archived — no fixes or security updates are expected.
LABSCO SUMMARY
That is worth an approval step before handing this to an agent whose job is tidying. Elsewhere it maps esa's model cleanly: wip is a first-class parameter on create_post and update_post so a draft stays a draft, and update_post takes a message so the revision history stays legible to whoever reads it next. One shape to know before wiring a search loop: get_posts truncates body_md, so get_post is the call that actually returns a post's full text.
An esa client covering posts and their comment threads: search, read, create, update and delete posts, and add, edit or remove the comments on them.
An esa team and a token that can act on it: ESA_TEAM names the team, ESA_ACCESS_TOKEN authorises the calls.
One command plus a key — npx -y @koki-develop/esa-mcp-server@latest, then supply credentials
USE CASES
Create the post from the session you are already in, tag it so it lands in the right category, and edit it as the picture firms up.
Search the team's posts and open the one that matches, without leaving the client.
Read the comments on a post, reply to them, and correct your own reply if you got it wrong.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
create_postCreate a new post in the esa team. Requires a title and optionally accepts content, tags, category, WIP status, and other metadata. Returns the created post information including the assigned post number and URL.
create_post_commentCreate a new comment on an existing post in the esa team. Requires a post number and comment content in Markdown format. Returns the created comment information including ID, content, timestamps, and author details.
delete_commentDelete an existing comment from the esa team. Requires a comment ID. The comment will be permanently deleted and cannot be recovered.
delete_postDelete an existing post from the esa team. Requires a post number. The post will be permanently deleted and cannot be recovered.
get_postRetrieve a specific post from the esa team by post number. Returns complete post details including title, content (markdown), tags, category, author information, revision history, and engagement metrics. Optionally includes comments and stargazers. Supports nested inclusion like 'comments,comments.stargazers'.
get_post_commentsRetrieve a list of comments for a specific post from the esa team. Requires a post number and supports pagination. Returns comment metadata including content, author information, timestamps, and engagement metrics (stars).
get_postsRetrieve a list of posts from the esa team. Supports search queries, filtering, sorting, and pagination. Returns post metadata including title, content, tags, categories, author information, and engagement metrics (comments, stars, watches). Optionally includes comments and stargazers with the include parameter. Supports nested inclusion like 'comments,comments.stargazers'. Note: body_md is truncated to 300 characters with body_truncated field indicating if truncation occurred.
get_tagsGet a list of all tags used in the esa team. Returns tags with their names and the number of posts they are attached to, sorted by post count in descending order. Supports pagination.
update_commentUpdate an existing comment on a post in the esa team. Requires a comment ID and new content in Markdown format. Returns the updated comment information including content, timestamps, and author details.
update_postUpdate an existing post in the esa team. Requires a post number and optionally accepts updated content, tags, category, WIP status, and other metadata. Returns the updated post information.
BEFORE YOU INSTALL
10 tools when we connected. With --readonly only get_posts, get_post, get_tags and get_post_comments remain. delete_post and delete_comment delete permanently.
All 4 documented setups run the server on your machine.
CONTEXT COST
Rated by the size of the 10 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npx -y @koki-develop/esa-mcp-server@latest{
"mcpServers": {
"esa": {
"command": "npx",
"args": [
"-y",
"@koki-develop/esa-mcp-server@latest"
],
"env": {
"ESA_TEAM": "<YOUR_ESA_TEAM>",
"ESA_ACCESS_TOKEN": "<YOUR_ESA_ACCESS_TOKEN>"
}
}
}
}{
"mcpServers": {
"esa": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ESA_TEAM",
"-e",
"ESA_ACCESS_TOKEN",
"ghcr.io/koki-develop/esa-mcp-server:latest"
],
"env": {
"ESA_TEAM": "<YOUR_ESA_TEAM>",
"ESA_ACCESS_TOKEN": "<YOUR_ESA_ACCESS_TOKEN>"
}
}
}
}{
"mcpServers": {
"esa": {
"command": "npx",
"args": [
"-y",
"@koki-develop/esa-mcp-server@latest",
"--readonly"
],
"env": {
"ESA_TEAM": "<YOUR_ESA_TEAM>",
"ESA_ACCESS_TOKEN": "<YOUR_ESA_ACCESS_TOKEN>"
}
}
}
}{
"mcpServers": {
"esa": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ESA_TEAM",
"-e",
"ESA_ACCESS_TOKEN",
"ghcr.io/koki-develop/esa-mcp-server:latest",
"--readonly"
],
"env": {
"ESA_TEAM": "<YOUR_ESA_TEAM>",
"ESA_ACCESS_TOKEN": "<YOUR_ESA_ACCESS_TOKEN>"
}
}
}
}