README.md•1.99 kB
# 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)