Skip to main content
Glama
README.md
# mediaarts-db-mcp

メディア芸術データベースで漫画雑誌の号を探し、掲載作品・話タイトル・開始ページを確認できます。マンガ・アニメ・ゲームの作品やシリーズをタイトルで探すこともできます。

## 利用前に

[uv](https://docs.astral.sh/uv/) と Git が必要です。Python 3.12以上に対応しています。APIキーは不要です。

## MCPクライアントに登録する

公開GitHubリポジトリから `uvx` で起動します。初回は依存関係の準備に時間がかかることがあります。

### Codex

```sh
codex mcp add mediaarts-db-mcp -- uvx --python 3.12 --from git+https://github.com/koizumikento/mediaarts-db-mcp.git@main mediaarts-db-mcp
codex mcp list
```

新しいセッションで `/mcp` を開くと、接続を確認できます。デスクトップ版では設定の「MCP servers」で、下のJSON例と同じコマンド・引数を指定できます。[Codexの公式設定ガイド](https://learn.chatgpt.com/docs/extend/mcp?surface=cli)

### Claude Desktop / Cursor

- Claude Desktop(Windows) `%APPDATA%/Claude/claude_desktop_config.json`
- Claude Desktop(macOS) `~/Library/Application Support/Claude/claude_desktop_config.json`
- Cursor `.cursor/mcp.json`(プロジェクト内)

設定ファイルの `mcpServers` に項目を追加して、クライアントを再起動してください。`uvx` が見つからない場合は、実行ファイルの絶対パスを指定します。

```json
{
  "mcpServers": {
    "mediaarts-db-mcp": {
      "command": "uvx",
      "args": ["--python", "3.12", "--from", "git+https://github.com/koizumikento/mediaarts-db-mcp.git@main", "mediaarts-db-mcp"]
    }
  }
}
```

登録後の質問例

> 『週刊少年マガジン』2011年の24号を探して、その号の目次を開始ページ順に10件出して。

> ゲーム作品名に「スーパーマリオブラザーズ」を含むものを5件、データベースの詳細ページ付きで出して。

## MCPツール

各ツールで `limit` は1〜50件、`start` は1から始まる取得位置です。次のページがある場合は、返された `next_start` を次回の `start` に指定します。`start` の上限は10001です。

### `search_manga_issues`

`query` に雑誌名の一部を指定します。必要に応じて `year`(西暦)、`volume_number`(巻)、`issue_number`(号)で絞り込みます。巻と号は文字列で完全一致します。号は誌面表記を優先し、誌面表記が未収録の場合はデータベースの号番号を使います。返された `issue_id` を `get_manga_issue_contents` に渡せます。

### `get_manga_issue_contents`

`issue_id` に `M` から始まる雑誌号IDを指定します。`start_page` はデータベースの表記のまま返します。目次が未収録の号では結果が空になることがあります。

### `search_works`

`query` にタイトルの一部、`medium` に `manga`、`anime`、`game` のいずれかを指定します。結果には作品・シリーズのID、タイトル、データベース上の分類、詳細ページが含まれます。

| `medium` | 検索対象 |
| --- | --- |
| `manga` | マンガ単行本シリーズ、マンガ雑誌の刊行物 |
| `anime` | TVレギュラー、TVスペシャル、劇場アニメのシリーズ |
| `game` | ゲーム作品 |

検索はデータベースのタイトル表記に対する部分一致です。巻、話、ゲームの機種別パッケージなどの個別資料は、詳細ページから確認してください。

## CLIで使う

結果は標準出力にUTF-8のJSONで返ります。

```sh
uvx --python 3.12 --from git+https://github.com/koizumikento/mediaarts-db-mcp.git@main mediaarts-db-mcp search-manga-issues --query '週刊少年マガジン' --year 2011 --issue-number 24
uvx --python 3.12 --from git+https://github.com/koizumikento/mediaarts-db-mcp.git@main mediaarts-db-mcp get-manga-issue-contents --issue-id M535428 --limit 5
uvx --python 3.12 --from git+https://github.com/koizumikento/mediaarts-db-mcp.git@main mediaarts-db-mcp search-works --medium game --query 'スーパーマリオブラザーズ' --limit 5
```

## Pythonから呼び出す

```sh
git clone https://github.com/koizumikento/mediaarts-db-mcp.git
cd mediaarts-db-mcp
uv sync --locked
```

```python
import asyncio

from mediaarts_db_mcp import get_manga_issue_contents, search_manga_issues, search_works


async def main() -> None:
    issues = await search_manga_issues("週刊少年マガジン", issue_number="24", year=2011)
    for issue in issues["items"]:
        print(await get_manga_issue_contents(issue["issue_id"], limit=5))
        break

    print(await search_works("スーパーマリオブラザーズ", medium="game", limit=5))


asyncio.run(main())
```

すでにイベントループがある場合は、関数を直接 `await` してください。

## 出典と利用条件

コードはMIT Licenseです。メディア芸術データベースの公開SPARQLサービスを使用します。取得した情報の利用条件は配布元に従ってください。[公式SPARQL仕様](https://mediag.bunka.go.jp/madb_lab/lod/howto/) · [データセットとライセンス](https://github.com/mediaarts-db/dataset) · [MADB Lab 利用規約](https://mediag.bunka.go.jp/madb_lab/user_terms/)

## 開発

```sh
uv sync --locked
uv run ruff check .
uv run ty check
uv run pytest
uv build
```