Skip to main content
Glama
AI1379
by AI1379

mihoyo-mcp

독립적인 米哈游 MCP Server —— 동시에 **米游社(중국 서버)**와 **HoYoLAB(국제 서버)**를 대상으로 하며, 내부적으로는 seriaati/genshin.py(MIT)에 의존합니다. 어떤 MCP 클라이언트 (nahida-bot、Claude Desktop、Codex……)에서든 그대로 사용할 수 있습니다.

설계 범위

MCP는 “米哈游와 어떻게 대화할지”를 담당하고, 클라이언트는 “언제 물어볼지, 물어본 뒤 누구에게 알릴지”를 담당합니다.

  • 스케줄링(cron)、임계값 정책、메시지 푸시 → 클라이언트(nahida-bot에 Scheduler / Channel이 이미 있음)

  • 로그인、자격 증명 저장、API 호출、알림 중복 제거 → 이 서비스

  • 자격 증명은 절대 보안 경계를 벗어나지 않습니다:Cookie는 항상 서비스 내부에만 존재하며(Fernet 암호화), 도구 결과에는 account_id만 들어 있고, Agent context에는 어떤 token도 나타나지 않습니다

                ┌─────────────────────┐
                │     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

현재 기능

기능

상태

米游社 QR 로그인(비차단 start/poll)

✅ genshin.py의 웹 QR 연동을 재사용

다중 계정 + 게임 캐릭터(uid)발견

✅

星穹铁道 실시간 메모

✅ starrail_daily_note

原神 실시간 메모

✅ genshin_daily_note

绝区零 실시간 메모

✅ zzz_daily_note

星铁 알림 검사(라운드 간 중복 제거)

✅ starrail_check_alerts

HoYoLAB 로그인

⏳ 미연동(로드맵 참고)

도구 목록

도구

설명

auth_start_qr_login(platform)

QR 로그인을 생성하고, login_url + base64 PNG QR 코드 + session_id 반환

auth_poll_qr_login(session_id)

QR 스캔 상태를 폴링:pending / scanned / confirmed(확인되면 자격 증명을 자동 저장하고 게임 캐릭터를 발견)

auth_status()

로그인된 계정 수, 완료를 기다리는 로그인 세션

accounts_list()

계정과 그 게임 캐릭터(uid)목록을 반환, 자격 증명은 포함하지 않음

accounts_refresh(account_id?)

계정 아래의 게임 캐릭터를 다시 발견

starrail_daily_note(account_id?)

개척력(비축분 포함), 일일 훈련, 시뮬레이션 유니버스, 파견

genshin_daily_note(account_id?)

레진, 동천 보전, 일일 임무, 파견

zzz_daily_note(account_id?)

배터리, 활동도, 비디오샵 등

starrail_check_alerts(account_id?, stamina_threshold=200)

알림을 보낼 만한 변경만 반환. 빈 목록 = 조용히 있음

account_id는 계정이 하나뿐일 때 생략할 수 있습니다.

명명 관련 설명:초기 설계에서는 mihoyo.auth.start_qr_login처럼 점으로 구분된 명명을 사용했지만, MCP 상태 (SEP-986)는 도구명이 ^[a-zA-Z0-9_-]{1,64}$를 충족해야 합니다. 점(.)이 있으면 일부 클라이언트가 로드를 거부할 수 있습니다. 그래서 플랫한 snake_case 명명을 채택하고, auth_ / accounts_ / starrail_ 같은 접두사를 네임스페이스로 사용했습니다.

왜 check_alerts가 MCP에 있는가

스테미나 임계값 판단(217 >= 200 && recovery <= 1800)은 LLM token을 태울 필요가 없습니다. 그리고 “파견이 돌아왔습니다”를 폴링할 때마다 전부 알리는 것은 받아들일 수 없습니다. 알림 중복 제거 상태(armed/re-arm)는 米游社 연동 상태에 속하므로, 자연스럽게 이 서비스가 보유하는 것이 맞습니다. 클라이언트의 cron은 다음만 하면 됩니다.

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

빠른 시작

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

클라이언트 설정 예시(Claude Desktop / stdio MCP를 지원하는 모든 클라이언트):

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

환경 변수 설정

변수

기본값

설명

MIHOYO_MCP_DATA_DIR

~/.mihoyo-mcp

데이터 파일 경로(계정 / 자격 증명 / 알림 상태)

MIHOYO_MCP_FERNET_KEY

자동 생성

자격 증명 암호화 key. 운영 환경에서는 secret store에 보관할 것을 권장

MIHOYO_MCP_STAMINA_THRESHOLD

200

starrail_check_alerts의 기본 스테미나 임계값

MIHOYO_MCP_LOG_LEVEL

INFO

로그 레벨(로그는 stderr로 출력되고, stdout은 MCP 프로토콜 전용으로 유지됨)

데이터 디렉터리 내용:

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

디렉터리 구조

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)

로그인 흐름(米游社)

  1. auth_start_qr_login("miyoushe") → qr_png_base64(또는 login_url)에서 생성된 QR 코드를 사용자에게 보냅니다

  2. 사용자가 米游社 App으로 QR을 스캔하고 휴대폰에서 확인합니다

  3. auth_poll_qr_login(session_id)를 confirmed가 될 때까지 폴링합니다

  4. 서비스 내부에서 v2 쿠키(account_id_v2 / account_mid_v2 / ltoken_v2 / cookie_token_v2…)와 자동으로 저장하고, 게임 캐릭터를 자동 발견합니다. 이후 Agent는 miyoushe:123456 형태의 account_id만 보게 됩니다.

로드맵

소비 측(nahida-bot #52 등)의 우선순위에 따라 정렬:

  1. ✅ Account / Auth —— 米游社 QR 로그인, 다중 계정, 캐릭터 발견

  2. ✅ Daily Note + 알림 —— 星铁/原神/绝区零 실시간 메모, check_alerts

  3. ⏳ HoYoLAB 로그인 —— 이메일/비밀번호(genshin.py는 이미 지원)또는 해외 서버(redirecta) QR 스캔(endpoint 검증 필요)

  4. 참가 출석 / 교환 코드(check_in / codes.list / codes.redeem)

  5. Profile / 캐릭터 전시(Enka, 패널 조회)

  6. 게임 정보 / Build / 육성 계산(hakush.in / Yatta / Ambr)

  7. 가챔 가져오기와 통계

  8. Renderer(선택적 이미지 카드 생성, 도구는 구조화된 데이터를 반환 + 독립 렌더링 도구)

참고 프로젝트 및 라이선스

프로젝트

라이선스

이 프로젝트에서의 역할

seriaati/genshin.py

MIT

직접 의존성:API 캡슐화, DS, 쿠키, QR 로그인 쿨

seriaati/hoyo-buddy

GPL-3.0

아키텍처 참고(계정/자격 증명/알림),코드 래칭

Ljzd-PRO/nonebot-plugin-mystool

MIT

중국국가 동작 참고(오류 처리, 메모 필드의 함정)

[UIGF-org/mihoyo-api-collect](https://github.com/UIGF-org/ 미나토-api-collect)

CC BY-NC 4.0

프로토콜 사전, 조회 확인용, 구현을 배아오거나 이식하지 않음

Marchen-orz/MiyoQian

미표기

최신 중국국가 QR 로그인 참고

이 프로젝트는 MIT License를 사용합니다.

Available Tools

9 tools
accounts_listA

List logged-in miHoYo accounts with their game roles (uid per game). No credentials are ever included.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does clarify that credentials are never included, which is useful security context, but it does not mention what happens when no accounts are logged in or whether the result is cached or fetched live.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence conveys the action, scope, output content, and an important security characteristic. There is no redundant or filler phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool, the description captures scope, output content, and credential safety. It does not specify the exact response shape, but that is acceptable given the simplicity and the sibling context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the schema provides none. The description adds useful semantic context by describing what the result contains: game roles with uid per game. That is enough to set the baseline and a bit beyond.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' with the well-scoped resource 'logged-in miHoYo accounts' and describes the included content: game roles and uid per game. This makes the tool's purpose distinct from auth flow and refresh sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states what the tool produces, but it gives no guidance on when to prefer it over related tools like auth_status or accounts_refresh. There are no explicit conditions, exclusions, or references to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

accounts_refreshA

Re-discover game roles (uids) for an account from miHoYo. Pass account_id, or omit it when only one account is logged in.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNo

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose side effects and expectations itself. 'Re-discover' implies an active refresh, but the description does not state whether the operation is safe, requires authentication, mutates account state, or what the tool returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, states the purpose first, and contains no filler or redundant content. Every part of the text earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and no annotations, the description should clarify expected output and prerequisites such as an authenticated session. It states the tool's purpose and parameter logic adequately for a minimal one-argument tool, but leaves room for an agent to guess at the refresh behavior and return contract.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no property description, but the tool description compensates by explaining the meaning of account_id and the rule for omitting it when only one account is logged in. This is sufficient for a single optional parameter, though no format or example is included.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb, 'Re-discover,' and names the specific resource ('game roles (uids) for an account'). This clearly differentiates the tool from the sibling accounts_list tool, which would list accounts rather than refresh role discovery.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit invocation guidance for the parameter: pass account_id, or omit it when only one account is logged in. However, it does not mention when to prefer this tool over alternate workflows such as the login/auth tools or accounts_list, so the broader usage context is left implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

auth_poll_qr_loginA

Poll a QR login session started by auth_start_qr_login. Returns status pending/scanned/confirmed; on confirmed the account is stored and returned (cookies stay inside the server).

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does meaningful behavioral disclosure: it defines the three statuses, states that a confirmed session stores and returns the account, and explicitly notes that cookies stay inside the server. This is valuable beyond the name and schema, though it does not cover what happens on session expiry or repeated calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence: it opens with the primary action, then flows naturally into the return statuses and the stored-account side effect. No filler or redundant repetition of the tool name exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single parameter and no output schema, the description is nearly complete: it links the tool to its prerequisite caller, specifies the statuses, and clarifies server-side cookie handling. Minor gaps such as invalid-session handling are not vital for choosing or invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is effectively 0% and the description does not directly explain the 'session_id' parameter, but it identifies where that session comes from ('started by auth_start_qr_login'). This gives enough context to infer the parameter's origin, though format or error semantics are not addressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Poll') with a clear resource ('a QR login session'), and explicitly ties it to auth_start_qr_login, which distinguishes it from the sibling starter. It also enumerates the possible return statuses, making its purpose fully unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the tool should be used after auth_start_qr_login and that it returns pending/scanned/confirmed states, which indicates a polling flow. However, it does not explicitly contrast this with auth_status or explain when one should choose this over sibling alternatives, leaving some usage inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

auth_start_qr_loginA

Start a Miyoushe QR login. Returns a login URL, a base64 PNG QR code and a session_id. Show the QR to the user (they scan it with the Miyoushe app), then call auth_poll_qr_login.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformNomiyoushe

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full transparency burden. It discloses the outputs (login URL, base64 PNG QR code, session_id), describes the user-facing action (show QR for scanning), and indicates the next step (poll). It does not mention expiration or session cleanup, but for this flow the provided behavior is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads the core action, and packs essential behavior into a small space. Every sentence contributes: what it does, what it returns, and what to do next. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must explain return values; it does, explicitly listing the URL, QR, and session_id. It also completes the workflow by naming the follow-up call. Missing details like QR expiration or platform constraints are minor given the simple one-parameter signature and clear next step.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It implicitly tells the agent the default platform is 'miyoushe' by saying 'Miyoushe QR login,' but it does not explain the 'platform' parameter's allowed values or behavior when changed. With a single optional parameter and a default, this is a minor but real gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb and resource: 'Start a Miyoushe QR login.' It clearly distinguishes this tool from its sibling auth_poll_qr_login by framing this as the initiating step and explicitly naming the follow-up. An agent can confidently identify when to call start vs. poll.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context: this is the entry point for QR login. It also gives explicit follow-up instructions ('then call auth_poll_qr_login'), which is highly valuable. However, it does not explicitly state when not to use it or mention alternatives like auth_status, but the intended QR flow is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

auth_statusA

Overview of logged-in accounts and pending login sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description conveys the tool's core behavior: it returns a summary of logged-in accounts and pending sessions. Because no annotations are provided, the description carries the full burden, and it reasonably implies a read-only status operation. It doesn't detail potential side effects, but for an overview tool, no major mutation behavior is expected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single succinct sentence that immediately communicates the tool's purpose. It includes two key idea elements — logged-in accounts and pending login sessions — with no repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool, the description is reasonably complete. It tells the agent what resource is being observed and what kind of state information will be surfaced. It does not describe the exact shape of the output, but for an 'overview' read operation this omission is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so no parameter documentation is needed. The description correctly focuses entirely on what the tool returns rather than arguing about inputs, which fits the baseline for parameterless tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly indicates that this tool provides an overview of logged-in accounts and pending login sessions. It identifies the resource (authentication status) and implies a read/view action, which separates it from login-flow siblings like auth_start_qr_login and auth_poll_qr_login. However, it does not explicitly distinguish its behavior from accounts_list, which may overlap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Overview of logged-in accounts and pending login sessions' implies this should be used when the agent wants to check current authentication state. It does not explicitly specify when to choose this over accounts_list or the QR login flow tools, nor does it state any exclusions or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

genshin_daily_noteA

Genshin Impact real-time note: resin, realm currency, commissions and expeditions. account_id from accounts_list; omit when only one account is logged in.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNo

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It does state the data returned and the real-time nature of the note, which is useful, but it does not mention authentication requirements, side effects, failure behavior, or refresh/rate implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, information-dense sentences. The primary output information comes first, followed by the parameter guidance. Every phrase earns its place with no redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single optional-parameter read-style tool, this is nearly complete: it lists the returned data categories and explains how to handle account selection. Some additional context about requiring an authenticated Genshin account could strengthen it, but the mention of accounts state and acounts_list makes the expectation reasonably clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema only provides the parameter name, an optional string/null type, and a default of null. The description adds meaningful semantics by explaining where account_id comes from and exactly when it should be omitted, fully compensating for the schema's 0% description coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a Genshin Impact real-time note and lists the specific data it covers: resin, realm currency, commissions, and expeditions. This is precise enough to distinguish it from sibling tools like starrail_daily_note and zzz_daily_note.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides practical usage guidance for the account_id parameter: source it from accounts_list and omit it when only one account is logged in. It does not explicitly name sibling alternatives or give when-not-to-use guidance, but the intended context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

starrail_check_alertsA

Check a Star Rail note and return only noteworthy changes (stamina nearly full/full, expeditions complete, daily training complete), with cross-poll dedup — an alert fires once until the condition resets. Designed for scheduled polling: empty alerts means stay quiet. account_id from accounts_list; omit when only one account is logged in; stamina_threshold defaults to 200.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNo
stamina_thresholdNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden, and it delivers on the most important trait — stateful dedup: 'a good alert fires once until the condition resets.' This is exactly the kind of behavior an agent cannot discover from the schema and must know to avoid duplicate acknowledgments on repeated polls. It also documents the silent-empty contract. It could add what 'resets,' or whether this is safe read-only, but core behavior is well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single paragraph that front-loads the core behavior plus the key distinguishing feature (alerts, not full note), then dedup policy, then polling contract, then the two parameters. Every clause earns its place; there is no filler or restatement of the schema's existing types. This is an efficient, high-information structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter, no-annotation, no-output-schema polling tool it is largely complete: triggers, dedup/reset semantics, silent behavior, parameter origin, default, and omissions. The main gap is the alert payload form (there is no output schema, and the description never says what an alert object looks like when populated), so an agent cannot predict the exact return shape without probing the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (both params bare with only type/null/default: null). The description compensates meaningfully at a compact level: it states where account_id comes from (accounts_list), when it may be omitted, and the stamina_threshold's semantics (default 200) plus its relation to the noteworthy threshold. Remaining gap: the inclusive/exclusive relationship between current stamina and the threshold (e.g., alert when stamina needs rest ≥ threshold) is not spelled out.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb-resource pair ('Check a Star Rail note') and the exact output contract: 'return only noteworthy changes' with named categories (stamina nearly full/full, expeditions complete, daily training complete). This clearly differentiates it from sibling starrail_daily_note (full note) and genshin/zzz_daily_note (other games) without needing to inspect schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Designed for scheduled polling: empty alerts means stay quiet' explicitly states the intended invocation context and what silence means in that loop. The parameter guidance ('account_id from accounts_list; omit when only one account is logged in') also functions as usage direction. It stops short of naming the exact alternative tool (starrail_daily_note) for the 'need the full note' case, so exclusion guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

starrail_daily_noteA

Star Rail real-time note: stamina (trailblaze power), reserve stamina, daily training, weekly rogue points and expeditions. account_id from accounts_list; omit when only one account is logged in.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose the returned data surface and one behavioral condition (account_id omission when a single account is active), which is genuinely useful. It leaves unstated how the tool behaves with no account logged in, whether authentication is required, and any failure modes — gaps that are notable given the absence of an output schema and annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense, front-loaded sentence with zero waste: the first clause tells the agent what the tool returns, and the second clause handles parameter provenance and the omission rule. Every phrase earns its place given that the schema and no output schema leave the description as the primary documentation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, single-optional-parameter tool with no output schema, the description covers the essential details: what data is returned and how to source the parameter. What's missing is minimal and somewhat scoped — no explicit statement about authentication state or the single-account default behavior at runtime. Overall, an agent would likely call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description is the only source of meaning for account_id. It compensates well: it explains where the value must come from (accounts_list) and sets the cardinality rule (omit when one account is logged in). This goes beyond what the bare schema provides and gives the agent actionable semantics for the single parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (Star Rail daily note) and enumerates the exact data it returns (stamina, reserve stamina, daily training, weekly rogue points, expeditions). The game name in the description, together with the tool name, lets an agent distinguish it from genshin_daily_note and zzz_daily_note, though the description doesn't explicitly name those siblings. The verb is implied rather than explicit (a 'retrieve'/'get' action is assumed), which keeps this from being a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides useful invocation guidance: account_id comes from accounts_list and should be omitted when only one account is logged in — this tells the agent exactly how to fill the parameter. However, it gives no explicit 'use this instead of X' guidance; differentiation from genshin_daily_note/zzz_daily_note and starrail_check_alerts is left to inference from the game-prefixed naming. That makes the usage guidance strong on parameter handling but weak on tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

zzz_daily_noteA

Zenless Zone Zero real-time note: battery charge, engagement, video store. account_id from accounts_list; omit when only one account is logged in.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNo

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. The phrase 'real-time note' plus the listed outputs implies a read-only snapshot, but it does not explicitly state that no mutation occurs, that authentication is required, or what happens when no account is logged in. The account-related guidance is useful, but the behavioral profile is mostly inference.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and information-dense: the domain, resource, relevant outputs, and parameter guidance are all packed into a single sentence. There is no filler, repetitive wording, or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple optional parameter and lack of an output schema, the description covers the key invocation detail and even previews the returned fields. The main gap is that it does not state authentication prerequisites or behavior when zero accounts are logged in, but the account_id guidance provides enough context for most agentic flows.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes account_id only with a type and default, and schema description coverage is 0%. The description compensates fully by explaining the exact source of the value (accounts_list) and the condition for omitting it. This is high-value guidance an agent needs before calling the tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the resource clearly: a real-time note for Zenless Zone Zero, and enumerates what it contains (battery charge, engagement, video store). It implicitly distinguishes itself from the sibling starrail_daily_note and genshin_daily_note by naming the game. It lacks an explicit verb like 'get' or 'fetch,' but the meaning is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete invocation guidance: where account_id comes from (accounts_list) and when to omit it (when only one account is logged in). It does not explicitly discuss alternatives or exclusion cases, but the game-specific phrasing makes the intended use clear relative to the sibling game-note tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.1.0
    • First observedaccounts_list
    • First observedaccounts_refresh
    • First observedauth_poll_qr_login
    • First observedauth_start_qr_login
    • First observedauth_status
    • First observedgenshin_daily_note
    • First observedstarrail_check_alerts
    • First observedstarrail_daily_note
    • First observedzzz_daily_note

TDQS

A4/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have sharply distinct purposes: auth tools, account tools, and per-game note tools are clearly separated. However, auth_status and accounts_list both relate to logged-in accounts, and starrail_daily_note vs starrail_check_alerts could be confused if not read carefully.

Naming Consistency4/5

Names follow a consistent lower_snake_case, domain-prefixed pattern like auth_start_qr_login, accounts_refresh, and genshin_daily_note. The main deviation is that 'daily_note' is a noun rather than a verb phrase like 'get_daily_note', but the pattern remains predictable.

Tool Count5/5

Nine tools is a well-scoped size for this server: QR login lifecycle, account listing/refresh, and three per-game real-time note endpoints plus one alert helper. Each tool has a distinct role and none feels redundant or excessive.

Completeness4/5

The core workflow is covered: login, poll login, list accounts, refresh roles, and retrieve daily notes for all three supported games. Minor gaps exist such as no explicit logout/account removal and alert-polling only for Star Rail, but agents can work around these by using the existing notes tools.

Maintenance

ActivitySlowing
ResponsivenessUnresponsive

Related MCP Connectors

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.
    10
    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.
    90 PyPI
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    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
    A
    quality
    C
    maintenance
    Enables MCP clients to search songs, retrieve details and lyrics, and manage personal playlists on NetEase Cloud Music, with optional local player control on macOS, all through a privacy-first, self-hosted service.
    17
    MIT