The esa MCP Server allows Claude AI to interact with the esa API, enabling operations like searching, creating, and updating esa documents through the Model Context Protocol (MCP).
You can install the package globally:
# Install globally
npm install -g @kajirita2002/esa-mcp-server
Or use it directly with npx:
# Use directly with npx
npx @kajirita2002/esa-mcp-server
Set up the required environment variables:
# Set environment variables
export ESA_ACCESS_TOKEN="your_esa_access_token"
export ESA_TEAM="your_team_name"
Add the following configuration to your mcp_config.json
file:
"esa": {
"command": "npx",
"args": ["-y", "@kajirita2002/esa-mcp-server"],
"env": {
"ESA_ACCESS_TOKEN": "your_esa_access_token",
"ESA_TEAM": "your_team_name"
}
}
# Start the server
npm start
The esa_list_posts
tool retrieves a list of posts from your team.
Parameters:
q
(string, optional): Search queryinclude
(string, optional): Related data to include (e.g. 'comments,stargazers')sort
(string, optional): Sort method (updated, created, number, stars, watches, comments, best_match)order
(string, optional): Sort order (desc, asc)per_page
(number, optional): Number of results per page (max: 100)page
(number, optional): Page number to retrieveThe esa_get_post
tool retrieves detailed information about a specific post.
Parameters:
post_number
(number, required): Post number to retrieveinclude
(string, optional): Related data to include (e.g. 'comments,stargazers')The esa_create_post
tool creates a new post.
Parameters:
name
(string, required): Post titlebody_md
(string, optional): Post body (Markdown format)tags
(array of string, optional): List of tags for the postcategory
(string, optional): Post categorywip
(boolean, optional, default: true): Whether to mark as WIP (Work In Progress)message
(string, optional): Change messageuser
(string, optional): Poster's screen_name (only team owners can specify)template_post_id
(number, optional): ID of the post to use as a templateThe esa_update_post
tool updates an existing post.
Parameters:
post_number
(number, required): Post number to updatename
(string, optional): New title for the postbody_md
(string, optional): New body for the post (Markdown format)tags
(array of string, optional): New list of tags for the postcategory
(string, optional): New category for the postwip
(boolean, optional): Whether to mark as WIP (Work In Progress)message
(string, optional): Change messagecreated_by
(string, optional): Poster's screen_name (only team owners can specify)original_revision
(string, optional): Revision to base the update onThe esa_list_comments
tool retrieves comments for a specific post.
Parameters:
post_number
(number, required): Post number to get comments forpage
(number, optional): Page number to retrieveper_page
(number, optional): Number of results per page (max: 100)The esa_get_comment
tool retrieves details for a specific comment.
Parameters:
comment_id
(number, required): ID of the comment to retrieveinclude
(string, optional): Related data to include (e.g. 'stargazers')The esa_create_comment
tool posts a comment to an article.
Parameters:
post_number
(number, required): Post number to comment onbody_md
(string, required): Comment body (Markdown format)user
(string, optional): Poster's screen_name (only team owners can specify)The esa_get_members
tool retrieves a list of team members.
Parameters:
page
(number, optional): Page number to retrieveper_page
(number, optional): Number of results per page (max: 100)The esa_get_member
tool retrieves information about a specific team member.
Parameters:
screen_name_or_email
(string, required): Screen name or email of the member to retrieveHere's an example of creating a new post in esa:
[Claude] Please create a new post in esa. The title should be "Project X Progress Report" and the body should include "# This Week's Progress\n\n- Implementation of Feature A completed\n- Testing of Feature B started\n\n## Next Week's Plan\n\n- Start implementation of Feature C".
[MCP Server] Using the esa_create_post tool to create a new post.
[Result]
{
"number": 123,
"name": "Project X Progress Report",
"body_md": "# This Week's Progress\n\n- Implementation of Feature A completed\n- Testing of Feature B started\n\n## Next Week's Plan\n\n- Start implementation of Feature C",
"wip": false,
"created_at": "2023-06-01T12:34:56+09:00",
"updated_at": "2023-06-01T12:34:56+09:00",
"url": "https://your-team.esa.io/posts/123"
}
[Claude] The post has been created successfully. The post number is 123, and you can access it at the following URL:
https://your-team.esa.io/posts/123
If you encounter this error:
Error: Request failed with status code 401
Your esa access token may be invalid or expired. Generate a new access token from the esa settings screen and update your environment variable.
If you encounter this error:
Error: Request failed with status code 403
The current access token doesn't have the necessary permissions. Check the permissions for your access token in the esa settings screen and issue a new token if needed.
There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json
file so that it is available in all of your projects.
If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json
file.
To add a global MCP server go to Cursor Settings > MCP and click "Add new global MCP server".
When you click that button the ~/.cursor/mcp.json
file will be opened and you can add your server like this:
{
"mcpServers": {
"cursor-rules-mcp": {
"command": "npx",
"args": [
"-y",
"cursor-rules-mcp"
]
}
}
}
To add an MCP server to a project you can create a new .cursor/mcp.json
file or add it to the existing one. This will look exactly the same as the global MCP server example above.
Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.
The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.
You can also explictly ask the agent to use the tool by mentioning the tool name and describing what the function does.