Skip to main content
Glama
AkhrHysd

PokeAPI MCP Server

by AkhrHysd
README.md
# mcp-pokeapi-server

POKEAPI と連携し、MCP(Model Context Protocol)仕様でポケモン情報を取得できるサーバーです。

## 概要

- MCP プロトコル(JSON-RPC 2.0 over stdio)で、LLM アプリや MCP クライアントからポケモン情報取得ツールを提供します。
- POKEAPI(https://pokeapi.co/)を利用。
- スキーマバリデーションには[zod](https://zod.dev/)を使用。

## セットアップ

```sh
npm install
```

## ビルド

```sh
npx tsc
```

## 開発用起動(ts-node)

```sh
npx ts-node src/index.ts
```

## MCP クライアントからの利用例

MCP クライアントや LLM アプリから、標準入力/出力で JSON-RPC リクエストを送信します。

### 1. ツール一覧取得(list_tools)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "list_tools"
}
```

#### レスポンス例

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      {
        "name": "getPokemonInfo",
        "description": "ポケモン名またはIDから、POKEAPIでポケモン情報を取得します。",
        "input_schema": { ... },
        "output_schema": { ... }
      }
    ]
  }
}
```

### 2. ポケモン情報取得(call_tool)

```json
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "call_tool",
  "params": {
    "name": "getPokemonInfo",
    "arguments": {
      "nameOrId": "pikachu"
    }
  }
}
```

#### レスポンス例

```json
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "json",
        "data": {
          "name": "pikachu",
          "id": 25,
          "height": 4,
          "weight": 60,
          "types": ["electric"]
        }
      }
    ]
  }
}
```

## テスト

```sh
npm test
```

---

### 参考

- [MCP 公式ドキュメント](https://www.anthropic.com/news/model-context-protocol)
- [POKEAPI 公式](https://pokeapi.co/)
- [Zenn: MCP 入門](https://zenn.dev/kazuwombat/articles/d8789724f10092)