Fish MCP Server
Busca especies de peces utilizando la base de datos FishBase. Admite consultas en lenguaje natural tanto en japonés como en inglés.
Documentación
Fish MCP Server
Servidor MCP de búsqueda de peces compatible con japonés: sistema de búsqueda de información de peces que utiliza la base de datos FishBase
Resumen
Fish MCP Server es un servidor que proporciona funciones de búsqueda de peces a Claude Desktop mediante el Model Context Protocol (MCP). Utiliza datos de más de 35,000 especies de peces y más de 5,000 nombres en japonés de FishBase, y admite búsqueda en lenguaje natural en japonés e inglés.
Funciones principales
- Búsqueda multilingüe: búsqueda de nombres de peces en japonés (hiragana, katakana, kanji) e inglés
- Búsqueda de texto completo: búsqueda rápida de texto completo en japonés mediante SQLite FTS5
- Búsqueda por características: búsqueda por condiciones como tamaño, hábitat, peligrosidad, etc.
- Obtención de imágenes: obtención automática de imágenes de peces mediante la API de iNaturalist
- Datos a gran escala: 35,731 especies de peces + 81,808 datos de nombres obtenidos de FishBase
Requisitos
- Node.js 18.0.0 o superior
- npm o yarn
- Claude Desktop
Instalación
1. Clonación del proyecto y configuración
git clone <repository-url>
cd fish-mcp-server
npm install
2. Compilación de TypeScript
npm run build
3. Preparación de la base de datos
Carga de datos de muestra (para pruebas)
npm run load-sample-data
Carga completa de datos de FishBase (para uso en producción)
npm run load-data
4. Configuración de Claude Desktop
Agregue lo siguiente al archivo de configuración de Claude Desktop (~/.config/claude/claude_desktop_config.json o ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"fish-mcp-server": {
"command": "node",
"args": ["/path/to/fish-mcp-server/dist/index.js"],
"cwd": "/path/to/fish-mcp-server",
"env": {
"FISH_DB_PATH": "/path/to/fish-mcp-server/fish.db"
}
}
}
}
Nota: reemplace /path/to/fish-mcp-server con la ruta real del proyecto.
Configuración mediante variables de entorno
- FISH_DB_PATH: especifica la ruta absoluta del archivo de base de datos (opcional)
- Si no se configura, se buscará automáticamente
fish.dbdesde la raíz del proyecto - Se puede usar como medida de seguridad si cambia la estructura de compilación
- Si no se configura, se buscará automáticamente
5. Reinicio de Claude Desktop
Después de cambiar la configuración, reinicie Claude Desktop para cargar el servidor MCP.
Uso
En Claude Desktop puede hacer preguntas como las siguientes:
Ejemplos de búsqueda por nombre de pez
マグロについて教えて
tunaを検索して
あじの仲間を探して
Ejemplos de búsqueda por características
大きくて危険な海水魚を教えて
30cm以下の淡水魚はどんな種類がいますか?
深海魚を5種類教えて
Ejemplo de búsqueda con imágenes
クマノミの写真も含めて検索して
Herramientas disponibles
search_fish_by_name
Busca peces por nombre (en japonés o inglés).
Parámetros:
query(obligatorio): nombre del pez a buscarlimit(opcional): número máximo de resultados (predeterminado: 10)includeImages(opcional): incluir información de imagen (predeterminado: false)
search_fish_by_features
Busca peces por características.
Parámetros:
minLength(opcional): tamaño mínimo (cm)maxLength(opcional): tamaño máximo (cm)dangerous(opcional): buscar solo peces peligrosossaltwater(opcional): buscar solo peces de agua saladadeepwater(opcional): buscar solo peces de aguas profundascommercial(opcional): buscar solo peces de importancia comerciallimit(opcional): número máximo de resultados (predeterminado: 20)includeImages(opcional): incluir información de imagen (predeterminado: false)
Desarrollo
Scripts de desarrollo
# 開発サーバーの起動
npm run dev
# ビルド
npm run build
# テスト実行
npm run test-search
npm run test-fts5
npm run test-improved
# リント・フォーマット
npm run lint
npm run format
npm run check-all # 開発時のチェック
npm run check-ci # CI用の厳密チェック
Pruebas
# データベース状態確認
npx tsx tests/test-db-status.ts
# 検索機能テスト
npx tsx tests/test-search.ts
# FTS5機能テスト
npx tsx tests/test-fts5-simple.ts
Gestión de datos
# サンプルデータ読み込み
npm run load-sample-data
# FishBase全データ読み込み
npm run load-data
Fuentes de datos
- FishBase: la base de datos de peces más grande del mundo
- Datos de especies: 35,731 especies
- Datos de nombres: 81,808 registros (5,204 en japonés, 76,604 en inglés)
- API de iNaturalist: obtención de imágenes de peces
Stack tecnológico
- Lenguaje: TypeScript
- Runtime: Node.js
- Base de datos: SQLite + FTS5
- Protocolo: Model Context Protocol (MCP)
- Framework: @modelcontextprotocol/sdk
- Procesamiento de datos: parquet-wasm, apache-arrow
- API de imágenes: API de iNaturalist
Arquitectura
src/
├── index.ts # エントリーポイント
├── mcp/
│ ├── server.ts # MCPサーバー実装
│ └── tools.ts # MCP ツール定義
├── database/
│ ├── db-manager.ts # データベース管理
│ ├── data-importer.ts # データ読み込み
│ └── schema.sql # データベーススキーマ
├── services/
│ ├── search-service.ts # 検索ロジック
│ ├── data-loader.ts # FishBaseデータ読み込み
│ └── image-service.ts # 画像取得サービス
└── types/ # 型定義
Solución de problemas
El servidor MCP no se carga
-
Verifique los registros de Claude Desktop:
tail -f ~/Library/Logs/Claude/mcp.log -
Verifique que la ruta sea correcta:
ls -la /path/to/fish-mcp-server/dist/index.js -
Verifique que la compilación se haya completado correctamente:
npm run build
Pocos resultados de búsqueda o no se encuentran resultados
-
Verifique el estado de la base de datos:
npx tsx tests/test-db-status.ts -
Reconstruya el índice FTS5:
# データベースファイルを削除して再構築 rm fish.db npm run load-data
No se pueden obtener imágenes
- Debido a las limitaciones de la API de iNaturalist, es posible que no se puedan obtener imágenes para algunas especies de peces
- Si el nombre científico es incorrecto, la búsqueda de imágenes puede fallar
Habilitación de registros de depuración
Si desea ver registros detallados de obtención de imágenes y búsqueda:
# 全てのデバッグログを有効化
DEBUG=fish-mcp:* npm run dev
# 特定のモジュールのみ
DEBUG=fish-mcp:image-service npm run dev
DEBUG=fish-mcp:search-service npm run dev
Licencia
Licencia ISC
Información para desarrolladores
Prohibición de salida por consola
En el entorno MCP, console.log y console.error están prohibidos porque interfieren con la comunicación JSON-RPC. Se detectan automáticamente mediante reglas de ESLint.
Resolución de rutas
Para evitar dependencias del entorno, todas las rutas de archivos se resuelven dinámicamente usando import.meta.url y fileURLToPath.
Hooks de pre-commit
Mediante Husky + lint-staged, se ejecutan automáticamente lint y formato antes de cada commit.