# MCPサーバー: esa.io 操作ガイド

## 1. 概要

このMCPサーバーは、esa.io API と連携し、記事の取得・作成・更新・削除などをAIツールから操作できます。

## 2. 環境設定

- プロジェクトルート（サーバーを起動するディレクトリ）に`.env`を配置し、ESA_TOKEN/ESA_TEAM_NAMEを設定

例 (`.env`):
```
ESA_TOKEN=your_esa_api_token_here
ESA_TEAM_NAME=your_team_name
```

## 3. 提供ツール一覧

### user_get_info()
- **説明:** 現在認証されているesa.ioユーザーの情報を取得します。
- **引数:** なし
- **戻り値:** ユーザー情報を含む辞書（例: `{ "id": ..., "name": ... }`）

### posts_get_list(q: str | None = None, page: int | None = None, per_page: int | None = None)
- **説明:** 記事の一覧を取得します。検索クエリやページネーションによる絞り込みが可能です。
- **引数:**
    - `q` (オプション): 検索クエリ文字列
    - `page` (オプション): 取得するページ番号
    - `per_page` (オプション): 1ページあたりの記事数
- **戻り値:** 記事一覧とページネーション情報を含む辞書（例: `{ "posts": [...], "meta": {...} }`）

### posts_get_detail(post_number: int)
- **説明:** 指定された記事番号の記事詳細を取得します。
- **引数:** `post_number`（記事番号）
- **戻り値:** 記事詳細情報を含む辞書（例: `{ "post": {...} }`）

### posts_create(name: str, body_md: str, tags: list[str] = [], category: str = "", wip: bool = True, message: str = "")
- **説明:** 新しい記事を作成します。
- **引数:** `name`, `body_md`, `tags`, `category`, `wip`, `message`
- **戻り値:** 作成された記事の情報（例: `{ "post": {...} }`）

### posts_update(post_number: int, name: str | None = None, body_md: str | None = None, tags: list[str] | None = None, category: str | None = None, wip: bool | None = None, message: str | None = None)
- **説明:** 既存の記事を更新します。更新したい項目のみ引数で指定します。
- **引数:** `post_number`, `name`, `body_md`, `tags`, `category`, `wip`, `message`
- **戻り値:** 更新された記事の情報（例: `{ "post": {...} }`）

### posts_delete(post_number: int)
- **説明:** 指定された記事番号の記事を削除します。
- **引数:** `post_number`
- **戻り値:** 成功時は空の辞書 `{}`

## 4. サーバーの起動

```bash
uv run mcp run src/mcp_esa_server/server.py
```
または開発モード
```bash
uv run mcp dev src/mcp_esa_server/server.py
```

サーバーはデフォルトで `http://localhost:6274` で起動し、MCPエンドポイントは `/mcp` です。
MCPクライアント（Cursorなど）から上記ツールを呼び出すことができます。
**ポート番号が実際に異なる可能性はあるので、表示されるログを確認してください。**

## 5. テストの実行

- テスト構成や実行方法の詳細は docs/api_client_spec.md を参照してください。

## 6. 備考

- サーバー全体の設計・開発まとめは docs/20250504/mcp_esa_development_summary.md を参照