user_get_infoLABSCO SUMMARY
Six operations, and the write half is the point.
Read-only documentation servers are common; this one creates and updates posts, which is what makes it useful for the actual job — writing the notes up after the work, not just looking them up. That also sets the stakes: the token carries write and delete, so it can change and remove team documentation, and where you store it is a real decision. The Inspector step is a good habit here, since it lets you see exactly what a create or update does before an assistant does it unattended.
What it is
A Python MCP server for the esa.io API. It covers the full lifecycle of a post — finding it, reading it, writing it, changing it and removing it — plus the account lookup, so team documentation can be worked on from the assistant rather than the web editor.
What you get
- The authenticated user's information —
user_get_info - Posts listed from the team —
posts_get_list - One post read in full —
posts_get_detail - A new post created —
posts_create - An existing post updated —
posts_update - A post deleted —
posts_delete - A way to try each call before wiring up a client:
uv run mcp run main.pyprints a URL that opens the MCP Inspector, where the tools can be exercised by hand
Requirements
An esa.io team and a personal access token generated from your user settings under external app integration. The token needs read for posts, write for creating, updating and deleting, and read_user for the account lookup, which is usually enabled automatically. Two values configure it: your team name and the token, set as ESA_TEAM_NAME and ESA_TOKEN in a .env file beside the server, or in the env block of your client config — and if you use the config block, keep that file out of version control. uv is required; uv sync installs dependencies and the client entry runs uv with --directory pointing at the absolute project path and main.py as the target. The pyproject name is mcp-esa-server (0.1.0), MIT licensed. esa.io offers a two-month free trial, which is enough to get a test team and token.
Setup effort
Follow the published steps — Prerequisites: an already-issued esa.io API token, a working uv, and an internet connection
USE CASES
Writing up what you just worked out
Create the post from the conversation where the thinking happened, instead of retyping it in the editor.
Finding and reading team documentation
List posts and open the one you need without switching to the web app.
Keeping a document current
Read the existing post, update the part that changed, and leave the rest alone.
Checking a call before you trust it
Run the Inspector, exercise create or update by hand, and see what actually happens to the post.
6 tools
Listed in project docs. Your client may show a different list.
posts_get_listposts_get_detailposts_createposts_updateposts_deleteBEFORE YOU INSTALL
What to know first
Tools you get
6 tools named in the project's documentation. posts_create, posts_update and posts_delete write to esa.io. read_user is a token scope, not a tool, and localhost:6274 is the MCP Inspector's port, not an endpoint to connect to.
Requires
ESA_TOKEN in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
Prerequisites: an already-issued esa.io API token, a working uv, and an internet connection
Issue the esa.io token: on your team's esa.io page open SETTINGS, then ユーザー設定 (User settings) > 外部アプリ連携 (External app integration) > Personal access tokens > Generate new token, with scopes read, write and read_user; copy it (shown only once)
Clone the repository: git clone https://github.com/scnsh/mcp-esa-server-python && cd mcp-esa-server-python
Initialise the project:
uv syncCreate a .env next to .env.example in the directory you will run the server from, containing ESA_TEAM_NAME and ESA_TOKEN
Run: uv run mcp run main.py (uv run mcp dev main.py for dev mode)
To use it from Cursor instead, write the mcpServers block into the project root or ~/.cursor/mcp.json and start the MCP server from Cursor
MCP Clients
Cursor
{
"mcpServers": {
"mcp-esa-server": {
"command": "uv",
"args": [
"--directory",
"<YOUR_CLONE>",
"run",
"main.py"
],
"env": {
"ESA_TEAM_NAME": "<YOUR_ESA_TEAM_NAME>",
"ESA_TOKEN": "<YOUR_ESA_TOKEN>"
}
}
}
}The project root or ~/.cursor/mcp.json