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.
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.
- 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.py` prints a URL that opens the MCP Inspector, where the tools can be exercised by hand
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.
