esa-mcp-server
ESA MCP Server is a server utilizing Model Context Protocol to interact with the esa.io API, offering operations like user info retrieval and article management. Built with Deno and JSR, it provides seamless deployment without local setup.
ESA MCP Server
esa.io API と連携するための Model Context Protocol (MCP) サーバーです。 Deno と JSR を使用して公開されています。
機能
現在、以下の基本的な esa.io API 操作を MCP ツールとして提供しています:
- ユーザー情報の取得
- 記事一覧の取得
- 記事詳細の取得
- 記事の作成
- 記事の更新
- 記事の削除
使い方 (JSR からの実行)
JSR (JavaScript Registry) に公開されているため、ローカルにリポジトリをクローンすることなく、直接 MCP サーバーを実行できます。
前提条件 (Prerequisites)
- Deno v2.0 以降がインストールされていること。(Deno v2.0 or later installed.)
- インターネット接続。(Internet connection.)
セットアップ (Setup)
-
環境変数の設定 (Set up environment variables): サーバーを実行したいディレクトリ(通常はプロジェクトのワークスペースルート)に
.env
ファイルを作成し、以下の内容を記述します。(Create a.env
file in the directory where you want to run the server (usually the project workspace root) and add the following content:)# .env ESA_TEAM_NAME="YOUR_ESA_TEAM_NAME" # Replace with your esa.io team name ESA_TOKEN="YOUR_ESA_API_TOKEN" # Replace with your esa.io API access token
YOUR_ESA_TEAM_NAME
とYOUR_ESA_API_TOKEN
を実際の値に置き換えてください。(ReplaceYOUR_ESA_TEAM_NAME
andYOUR_ESA_API_TOKEN
with your actual values.)esa.io API トークンの発行方法:
- あなたの esa.io チームのページにアクセスします (例:
https://<your-team-name>.esa.io/
)。 - 右上の自分のアイコンをクリックし、「設定 (Settings)」>「アプリケーション」を選択します。
- 「個人用アクセストークン (Personal access tokens)」セクションで、「新しいトークンを発行する (Generate new token)」をクリックします。
- トークン名 (例:
mcp-server
) を入力し、必要な権限スコープを選択します。この MCP サーバーには少なくとも以下の権限が必要です:read
(記事の読み取り)write
(記事の作成・更新・削除)read_user
(ユーザー情報の取得)
- 「発行する (Generate token)」をクリックします。
- 表示されたトークンを必ずコピーして安全な場所に保管してください。このトークンは一度しか表示されません。
- コピーしたトークンを、上記
.env
ファイルのESA_TOKEN
の値として貼り付けます。
- あなたの esa.io チームのページにアクセスします (例:
実行 (Running)
以下のコマンドを実行します。(Run the following command:)
# 最新版を使う場合 (推奨)
deno run --allow-env --allow-net=api.esa.io --allow-read jsr:@masseater/esa-mcp-server
# 特定バージョン (例: 0.1.0) を使う場合
# deno run --allow-env --allow-net=api.esa.io --allow-read jsr:@masseater/esa-mcp-server@0.1.0
--allow-env
: 環境変数へのアクセスを許可します。(依存ライブラリ (npm:debug
) が内部的に環境変数全体を読み込もうとするため、特定の変数 (ESA_TOKEN
,ESA_TEAM_NAME
) のみを許可する--allow-env=...
ではエラーが発生します。)--allow-net=api.esa.io
: 必要な esa.io API (api.esa.io
) へのネットワークアクセスのみを許可します。--allow-read
: Deno が内部で利用する npm パッケージ等のキャッシュや、(もし使用する場合の).env
ファイルへの読み込みアクセスを許可します。- 注記: 本来はアクセス許可を最小限に絞るべきですが、Deno のキャッシュディレクトリの場所は環境によって異なるため、特定パスへの限定が困難です。そのため、ここでは利便性を考慮して
--allow-read
を使用しています。これにより、ファイルシステムへの広範な読み取りアクセスが許可される点にご注意ください。初回実行時などに Deno のキャッシュディレクトリ等へのアクセス許可を求めるプロンプトが表示される場合があります。
- 注記: 本来はアクセス許可を最小限に絞るべきですが、Deno のキャッシュディレクトリの場所は環境によって異なるため、特定パスへの限定が困難です。そのため、ここでは利便性を考慮して
jsr:@masseater/esa-mcp-server
: 実行する JSR パッケージを指定します。バージョンを省略すると常に最新バージョンが使用されます(推奨)。特定のバージョンを使用したい場合は@<バージョン>
(例:@0.1.0
) やバージョン範囲 (@^0.1.0
など) を追記できます。
正常に起動すると、以下のような JSON-RPC の ping
メッセージが標準出力に繰り返し表示されます。これはサーバーがクライアントからの接続を待機している状態を示します。終了するには Ctrl+C
を押してください。
{\"method\":\"ping\",\"jsonrpc\":\"2.0\",\"id\":0}
{\"method\":\"ping\",\"jsonrpc\":\"2.0\",\"id\":1}
{\"method\":\"ping\",\"jsonrpc\":\"2.0\",\"id\":2}
...
MCPサーバーとしての設定 (Usage as MCP Server in Cursor)
Cursor で MCP サーバーとして利用する場合、.cursor/mcp.json
に以下のように設定します。
🚨 警告: 以下の設定例のように API トークン等を直接書き込む方法は、セキュリティリスクを伴います。.cursor
ディレクトリが .gitignore
で無視されていない場合、このファイルをコミットすると機密情報が漏洩します。可能な限り .env
ファイルを使用し、${env:VAR_NAME}
形式で読み込むことを強く推奨します。もし直接書き込む場合は、.cursor/mcp.json
ファイルを絶対にコミットしないでください! 🚨
{
"mcpServers": {
"esa-mcp-server-jsr": {
"command": "deno",
"args": [
"run",
"--allow-env",
"--allow-net=api.esa.io",
"--allow-read",
"jsr:@masseater/esa-mcp-server"
],
"env": {
"ESA_TOKEN": "YOUR_ACTUAL_ESA_API_TOKEN",
"ESA_TEAM_NAME": "YOUR_ACTUAL_ESA_TEAM_NAME"
}
}
}
}
- ポイント:
command
:deno
を指定します。args
:run
と必要なパーミッション (--allow-env
,--allow-net=api.esa.io
,--allow-read
)、そして JSR パッケージの specifier を指定します。(依存ライブラリの都合上、--allow-env
が必要です。)env
: 環境変数を 直接 設定します。この方法を使用する場合、.cursor/mcp.json
のコミットは絶対に避けてください。
開発 (ローカル) (Local Development)
この MCP サーバーの開発に参加したり、ローカルでコードを修正・実行したりする場合は、以下の手順に従ってください。
前提条件 (Prerequisites)
- Deno v2.0 以降がインストールされていること。(Deno v2.0 or later installed.)
- Git がインストールされていること。(Git installed.)
- esa.io の API トークンを持っていること。
セットアップ (Setup)
- リポジトリのクローン (Clone the repository):
git clone https://github.com/masseater/esa-mcp-server.git cd esa-mcp-server
- 環境変数の設定 (Set up environment variables):
.env.example
をコピーして.env
ファイルを作成し、あなたの esa.io API トークンとチーム名を記述します。cp .env.example .env # Edit .env with your actual token and team name
- (推奨) Git フックの有効化 (Enable Git Hooks (Recommended)):
コミット前にコードのチェックを自動的に行うために、以下のコマンドを実行して Git フックをセットアップします。
deno run -A https://deno.land/x/deno_hooks/mod.ts install
ローカルでの実行 (Running Locally)
deno run --allow-env --allow-net --allow-read main.ts
または、ホットリロードを有効にして実行する場合:
deno task dev
チェックとテスト (Checks and Tests)
以下のコマンドで、フォーマット、リント、型チェック、ユニットテストをまとめて実行できます。pre-commit
フックにより、コミット前にも自動実行されます。
deno task check:all
インテグレーションテスト(実際の esa.io API と通信するテスト)は別途実行します。.env
ファイルが正しく設定されている必要があります。
deno task test:integration
JSR への公開 (Publishing to JSR)
新しいバージョンを JSR に公開する手順です。
deno.jsonc
のversion
フィールドを更新します。- 変更内容をコミットします。
- 公開前のチェックを実行します。
deno publish --dry-run
- 問題がなければ公開します。
deno publish
ライセンス (License)
このプロジェクトは の下で公開されています。
(注: LICENSE
ファイルがまだリポジトリにない場合は、別途追加する必要があります。)
その他 (Misc)
生成元 (Generated by)
generated by Cursor (gemini-2.5-pro-exp-03-25)