Skip to main content
Glama
AI1379
by AI1379

mihoyo-mcp

Servidor MCP independiente para miHoYo — orientado tanto a 米游社(servidor CN) como a HoYoLAB(servidor internacional), y que depende de seriaati/genshin.py (MIT). Cualquier cliente MCP (nahida-bot, Claude Desktop, Codex...) puede usarlo directamente.

Límites de diseño

El MCP se encarga de «cómo hablar con mihoyo»; el cliente se encarga de «cuándo preguntar y a quién contárselo».

  • Programación (cron), políticas de umbral, envío de mensajes → el cliente (nahida-bot ya tiene Scheduler / Channel)

  • Inicio de sesión, almacenamiento de credenciales, llamadas a la API, deduplicación de alertas → este servicio

  • Las credenciales nunca salen del perímetro de seguridad: las cookies se guardan siempre dentro del servicio (cifrado Fernet); en los resultados de las herramientas solo aparece account_id, y no habrá ningún token en el contexto del agente.

                ┌─────────────────────┐
                │     nahida-bot      │
                │  Cron / Scheduler   │
                │       │             │
                │       ▼             │
                │  MCP Client ───────────────┐
                │       ▼             │     │ MCP (stdio)
                │  QQ Channel         │     ▼
                └─────────────────────┘ ┌──────────────────┐
                                       │    mihoyo-mcp     │
                                       │ QR login          │
                                       │ credential vault  │
                                       │ daily notes       │
                                       │ alert dedup state │
                                       └────────┬──────────┘
                                                │
                                         genshin.py
                                                │
                                     米游社 / HoYoLAB API

Related MCP server: Xiaohongshu MCP Server

Capacidades actuales

Capacidad

Estado

Inicio de sesión con QR de 米游社 (start/poll no bloqueante)

✅ Reutiliza la cadena QR web de genshin.py

Multicuenta + descubrimiento de personajes (uid)

Nota diaria de Honkai: Star Rail

starrail_daily_note

Nota diaria de Genshin

genshin_daily_note

Nota diaria de Zenless Zone Zero

zzz_daily_note

Comprobación de alertas de Star Rail (deduplicación entre rondas)

starrail_check_alerts

Inicio de sesión en HoYoLAB

⏳ No integrado (ver hoja de ruta)

Lista de herramientas

Herramienta

Descripción

auth_start_qr_login(platform)

Crea un inicio de sesión por QR, devuelve login_url + imagen del QR en PNG base64 + session_id

auth_poll_qr_login(session_id)

Consulta el estado del QR: pending / scanned / confirmed (al confirmarse guarda credenciales y descubre personajes automáticamente)

auth_status()

Número de cuentas conectadas y sesiones de inicio pendientes de completar

accounts_list()

Muestra las cuentas y sus personajes (uid), sin incluir credenciales

accounts_refresh(account_id?)

Rediscovery de personajes de la cuenta

starrail_daily_note(account_id?)

Energía de Trailblazer (incl. reserva), entrenamiento diario, universo simulado, expediciones

genshin_daily_note(account_id?)

Resina, monedas del mundo interior, encargos diarios, expediciones

zzz_daily_note(account_id?)

Energía, actividad, videotienda, etc.

starrail_check_alerts(account_id?, stamina_threshold=200)

Devuelve solo «cambios que merece la pena notificar»; una lista vacía = mantenerse en silencio

account_id puede omitirse cuando solo hay una cuenta.

Nota sobre los nombres: en el diseño original se usaban nombres con puntos, como mihoyo.auth.start_qr_login, pero el estándar MCP (SEP-986) exige que los nombres de herramientas sigan ^[a-zA-Z0-9_-]{1,64}$; los puntos harían que algunos clientes rechacen la carga, por lo que se ha optado por nombres planos en snake_case, con prefijos auth_ / accounts_ / starrail_ para hacer de espacio de nombres.

Por qué check_alerts está en MCP

El umbral de Resistencia (217 >= 200 && recovery <= 1800) no requiere gastar tokens de LLM, y notificar que «las expediciones han vuelto» en cada comprobación no es aceptable. El estado de deduplicación de alertas (armed/re-arm) forma parte del estado de integración de 米游社, así que pertenece de forma natural a este servicio. El cron del cliente solo necesita:

starrail_check_alerts() → alerts == [] → 静默
                      → alerts != [] → 推送消息

Inicio rápido

uv sync                       # 安装依赖
uv run pytest                 # 运行测试
uv run python scripts/smoke_stdio.py   # stdio 握手冒烟测试
uv run mihoyo-mcp             # 启动 stdio server

Ejemplo de configuración del cliente (Claude Desktop / cualquier cliente que admita MCP por stdio):

{
  "mcpServers": {
    "mihoyo": {
      "command": "uv",
      "args": ["run", "--directory", "D:/Projects/mihoyo-mcp", "mihoyo-mcp"]
    }
  }
}

Configuración (variables de entorno)

Variable

Predeterminado

Descripción

MIHOYO_MCP_DATA_DIR

~/.mihoyo-mcp

El directorio de datos (cuentas / credenciales / estado de alertas)

MIHOYO_MCP_FERNET_KEY

Generada automáticamente

Clave de cifrado de credenciales; en producción se recomienda para guardarla en un secret store

MIHOYO_MCP_STAMINA_THRESHOLD

200

Umbral de energía predeterminado de starrail_check_alerts

MIHOYO_MCP_LOG_LEVEL

INFO

Nivel de log (los logs van a stderr; stdout queda reservado para el protocolo MCP)

La ruta del directorio de datos incluye:

~/.mihoyo-mcp/
├── accounts.json     # 公开账号元数据(无秘密)
├── credentials.enc   # Fernet 加密的 Cookie/token 库
├── alert_state.json  # 告警去重状态
└── fernet.key        # 未设置环境变量时自动生成的 key(带告警日志)

Estructura de directorios

src/mihoyo_mcp/
├── server.py          # MCPServer 装配 + stdio 入口
├── config.py          # 环境变量配置
├── context.py         # AppContext 单例装配
├── errors.py          # 领域错误(映射为 MCP tool error)
├── accounts/          # 账号模型 / 注册表 / 加密凭据库
├── auth/              # 扫码登录(start/poll 会话)
├── games/             # genshin.py 客户端工厂 + 便笺获取/归一化
├── alerts/            # 告警去重状态机(纯逻辑,可测)
└── tools/             # MCP 工具注册(auth / accounts / notes)

Inicio de sesión (米游社)

  1. auth_start_qr_login("miyoushe") → envía al usuario el QR generado a partir de qr_png_base64 (o login_url)

  2. El usuario escanea con la aplicación 米游社 y autoriza desde el código

  3. auth_poll_qr_login(session_id) hace polling hasta que llegue confirmed

  4. El servicio guarda internamente las v2 cookies (account_id_v2 / account_mid_v2 / ltoken_v2 / cookie_token_v2…) y descubre automáticamente los personajes; a partir de ahí el agente solo ve account_id con forma miyoushe:123456

Hoja de ruta

Según la prioridad de los consumidores (nahida-bot #52, etc.):

  1. Account / Auth — Inicio de sesión con QR de 米游社, multusuarios, descubrimiento de personajes

  2. Daily Note + Alertas — Notas de Star Rail / Genshin / Zenless Zone Zero, check_alerts

  3. Inicio de sesión en HoYoLAB — Contraseña por correo (con el caso de genshin.py ya soportado) o código QR OS (por verificar endpoint)

  4. Check-in / códigos canjeables (check_in / codes.list / codes.redeem)

  5. Perfil / exhibición de personajes (Enka, consulta de poderes)

  6. Datos del juego / Build / cálculo de farmeo (hakush.in / Yatta / Ambr)

  7. Importación y estadísticas de Gacha

  8. Renderer (generación opcional de imágenes de tarjetas; las herramientas devuelven datos estructurados + una herramienta de renderizado)

Proyectos de referencia y licencias

Proyecto

Licencia

Rol en este proyecto

seriaati/genshin.py

MIT

Dependencia directa: API wrapper, datos de la cuenta, cookies, flujo QR

seriaati/hoyo-buddy

GPL-3.0

Referencia de arquitectura (cuentas/credenciale/alertas), no se copia código

ljzd-PRO/nonebot-plugin-mystool

MIT

Referencias de comportamiento CN (gestión de errores, campos con trampa de nota)

UIGF-org/mihoyo-api-collection

CC BY-NC 4.0

Diccionario de protocolos, solo para consultar y verificar; no se traduce implementación

Marchen-orz/MiyoQian

No especificado

Referencia moderna del inicio de sesión por QR en CN

Este proyecto está bajo MIT License.

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Discord using personal user tokens instead of bot applications, allowing for seamless message management and server exploration. It provides tools for reading history, sending messages, and searching across channels and DMs directly through MCP-compatible clients.
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI assistants to interact with Xiaohongshu to publish image notes, search content, and manage account details. It uses Playwright to securely handle session authentication and API signatures through the platform's internal network context.
    2
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    An MCP server enabling LLMs to interact with the NodeSeek forum, supporting account status retrieval, daily check-in, post browsing, reading, replying, and posting.
    4
  • A
    license
    Not graded
    quality
    C
    maintenance
    A MCP server that exposes QQ bot capabilities over Streamable HTTP, enabling clients to query bot status, read group and friend info, fetch chat history, and send group/private text messages.
    2
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP-native open-source Notion alternative: read & write pages, databases and kanban boards.

  • MCP server for GLM chat completions using Zhipu AI models via AceDataCloud

  • MCP server for AI dialogue using various LLM models via AceDataCloud

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AI1379/mihoyo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server