esa MCP Server

by kajirita2002
Verified
# esa MCP サーバー ## 概要 このサーバーは、[Model Context Protocol (MCP)](https://github.com/anthropics/anthropic-cookbook/tree/main/model_context_protocol)を使用して、Claude AIが[esa API](https://docs.esa.io/posts/102)と対話できるようにするためのインターフェースです。 このMCPサーバーによって、Claude AIはesaのドキュメントの検索、作成、更新などの操作を行えるようになります。 ## リポジトリについて このリポジトリは、esa MCPサーバーの独立した実装を提供します。Claude AIとesaを統合し、ドキュメント管理を効率化します。 ## セットアップ ### 前提条件 - Node.js 18以上 - esaのAPIアクセストークン - esaのチーム名 ### インストール ```bash # 必要なパッケージをインストール npm install ``` ### 環境変数の設定 ```bash # 環境変数の設定 export ESA_ACCESS_TOKEN="your_esa_access_token" export ESA_TEAM="your_team_name" ``` ### サーバーの起動 ```bash # サーバーを起動 npm start ``` ## 利用可能なツール このMCPサーバーは以下のツールを提供します: ### 記事関連 1. `esa_list_posts` - チーム内の記事リストを取得します - 入力: - `q` (string, optional): 検索クエリ - `include` (string, optional): レスポンスに含める関連データ (例: 'comments,stargazers') - `sort` (string, optional): ソート方法 (updated, created, number, stars, watches, comments, best_match) - `order` (string, optional): ソート順 (desc, asc) - `per_page` (number, optional): 1ページあたりの結果数 (最大: 100) - `page` (number, optional): 取得するページ番号 2. `esa_get_post` - 特定の記事の詳細情報を取得します - 入力: - `post_number` (number, required): 取得する記事番号 - `include` (string, optional): レスポンスに含める関連データ (例: 'comments,stargazers') 3. `esa_create_post` - 新しい記事を作成します - 入力: - `name` (string, required): 記事のタイトル - `body_md` (string, optional): 記事の本文 (Markdown形式) - `tags` (array of string, optional): 記事に付けるタグのリスト - `category` (string, optional): 記事のカテゴリ - `wip` (boolean, optional, default: true): WIP (作業中) としてマークするかどうか - `message` (string, optional): 変更メッセージ - `user` (string, optional): 投稿者のscreen_name (チームオーナーのみ指定可能) - `template_post_id` (number, optional): テンプレートとして使用する記事のID 4. `esa_update_post` - 既存の記事を更新します - 入力: - `post_number` (number, required): 更新する記事番号 - `name` (string, optional): 記事の新しいタイトル - `body_md` (string, optional): 記事の新しい本文 (Markdown形式) - `tags` (array of string, optional): 記事の新しいタグのリスト - `category` (string, optional): 記事の新しいカテゴリ - `wip` (boolean, optional): WIP (作業中) としてマークするかどうか - `message` (string, optional): 変更メッセージ - `created_by` (string, optional): 投稿者のscreen_name (チームオーナーのみ指定可能) - `original_revision` (string, optional): 更新の基準となるリビジョン ### コメント関連 1. `esa_list_comments` - 記事のコメント一覧を取得します - 入力: - `post_number` (number, required): コメントを取得する記事番号 - `page` (number, optional): 取得するページ番号 - `per_page` (number, optional): 1ページあたりの結果数 (最大: 100) 2. `esa_get_comment` - 特定のコメントを取得します - 入力: - `comment_id` (number, required): 取得するコメントのID - `include` (string, optional): レスポンスに含める関連データ (例: 'stargazers') 3. `esa_create_comment` - 記事にコメントを投稿します - 入力: - `post_number` (number, required): コメントを投稿する記事番号 - `body_md` (string, required): コメントの本文 (Markdown形式) - `user` (string, optional): 投稿者のscreen_name (チームオーナーのみ指定可能) ### メンバー関連 1. `esa_get_members` - チームのメンバー一覧を取得します - 入力: - `page` (number, optional): 取得するページ番号 - `per_page` (number, optional): 1ページあたりの結果数 (最大: 100) 2. `esa_get_member` - 特定のチームメンバーの情報を取得します - 入力: - `screen_name_or_email` (string, required): 取得するメンバーのスクリーンネームまたはメールアドレス ## 使用例 以下はClaudeがこのMCPサーバーを使ってesaの記事を作成する例です: ``` 【Claude】esaに新しい記事を作成してください。タイトルは「プロジェクトXの進捗報告」、本文には「# 今週の進捗\n\n- 機能Aの実装完了\n- 機能Bのテスト開始\n\n## 次週の予定\n\n- 機能Cの実装開始」という内容を含めてください。 【MCP Server】esa_create_post ツールを使用して新しい記事を作成します。 【実行結果】 { "number": 123, "name": "プロジェクトXの進捗報告", "body_md": "# 今週の進捗\n\n- 機能Aの実装完了\n- 機能Bのテスト開始\n\n## 次週の予定\n\n- 機能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】記事の作成が完了しました。記事番号は123で、以下のURLからアクセスできます: https://your-team.esa.io/posts/123 ``` ## トラブルシューティング ### アクセストークンの問題 ``` Error: Request failed with status code 401 ``` このエラーが表示される場合、esaのアクセストークンが無効であるか期限切れの可能性があります。esaの設定画面で新しいアクセストークンを発行し、環境変数を更新してください。 ### 権限の問題 ``` Error: Request failed with status code 403 ``` このエラーが表示される場合、現在のアクセストークンに必要な権限がありません。esaの設定画面でアクセストークンの権限を確認し、必要に応じて新しいトークンを発行してください。 ## ライセンス MITライセンスの下で提供されています。