VCPC MCP
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
English
VCPC MCP — 0.5.2-alpha.2
Local Alpha: macOS with a dedicated Chrome profile and a standard stdio MCP client. No license has been selected; see license status. This package is not a grant of rights to the VCPC website or its assets.
Model-agnostic local MCP server for VCPC. It is designed for clients supporting stdio MCP and uses a dedicated Chrome window; individual client workflows have the verification limits below. The server observes visible UI, executes checked actions, and keeps a durable action history. The AI chooses strategy and event options.
Related MCP server: chrome-profile-debug
Install
Requires macOS, Node.js 22+, npm, and Google Chrome. The dedicated-profile implementation and its tests rely on macOS/Unix-style Chrome process and singleton behavior; Windows and Linux are unverified. VCPC_CHROME_PATH selects a Chrome executable in the trusted startup configuration. No API key or model SDK is required by this server.
npm ci --ignore-scripts
npm run buildConfigure your MCP client using the generic JSON example or the TOML example. Replace the executable and project paths. Use the same profile alias and exact team name across reconnects:
{
"mcpServers": {
"vcpc": {
"command": "/absolute/path/to/node",
"args": ["/absolute/path/to/vcpc-mcp/dist/server.js"],
"env": {
"VCPC_PROFILE_ALIAS": "my-team",
"VCPC_EXPECTED_TEAM": "My VCPC Team",
"VCPC_CHROME_PATH": "/absolute/path/to/chrome",
"VCPC_HEADED": "1",
"VCPC_ALLOW_REGISTRATION": "1",
"VCPC_MAX_CONTESTS": "0",
"VCPC_TRAINING_TP_BUDGET": "0"
}
}
}
}The zero contest ceiling also blocks vcpc_enter_stage, including closing the initial rules dialog; set an authorized cumulative ceiling before progressing past the rules. VCPC_ALLOW_REGISTRATION=1 permits registration only when creating a fresh dedicated profile. Registration names are at most 24 characters. The profile stores the game's save; don't delete it to resume a team. VCPC_HEADED=1 shows the browser when it first launches. On macOS, Chrome's usual executable path is /Applications/Google Chrome.app/Contents/MacOS/Google Chrome.
Client connection
Use the generic JSON or Codex TOML example. Replace /absolute/path/... placeholders with paths on your Mac, and set the same dedicated profile alias and exact team name across reconnects. These are trusted startup settings, never game tool arguments. Start with the zero cumulative limits in the example; raise them only to the total number of starts and paid TP you authorize for that profile. A fresh team requires VCPC_ALLOW_REGISTRATION=1; disable it after registration. Use the direct stdio client rather than the optional development bridge.
For DeepSeek Harness desktop, the bundled @deepseek-ai/dsh-mcp-client can be configured directly with the DSH YAML example. Its profile patch is global to that DSH profile; replace paths and authorized cumulative ceilings carefully. DSH 0.2.1-rc.5 has directly discovered and called the knowledge and recovery-diagnostic tools over stdio. A complete DSH game and image display have not yet been verified on this path.
The optional HTTP bridge is included only for development regression tests; it is not a supported Alpha connection path. Use stdio directly.
Budgets are operator-set cumulative ceilings for this profile's ledger, not per-call allowances. VCPC_MAX_CONTESTS defaults to 2 for a named profile; VCPC_TRAINING_TP_BUDGET defaults to 0. To authorize more play later, explicitly increase the relevant ceiling in the client configuration while retaining the profile and ledger. Model tool arguments cannot raise ceilings. Legacy unnamed profiles retain their previous three-contest ceiling.
Ordinary play
Tell your AI: “Use VCPC MCP to play one contest, show the browser and milestone screenshots, claim the review reward, then spend at most 3 TP training. Use normal play, without a detailed sampling report.” Configure an adequate local TP ceiling first; the user-requested task budget can be smaller than that ceiling.
Connect once with
vcpc_connect. For a new team, usevcpc_register_team,vcpc_confirm_initial_rating, then close the rules usingvcpc_enter_stage.A world champion's hub can expose the Observable Universe final instead of the normal entry.
vcpc_enter_stagesupports its unique route button, “进入可观测宇宙总决赛 →”, even when a separate shortcut is also present. It enters the preparation/rules screen only; observe the actual competition and then select a strategy and callvcpc_start_contest. A unique normal route takes priority over persistent observable shortcuts; the observable route is used only when no normal entry exists. Duplicated normal entries or duplicated observable route labels remain blocked.The top bar can retain “世界总决赛” while the preparation screen explicitly shows “可观测宇宙总决赛”.
identity.stagereads that campaign header; use the visible competition title and a pre-start screenshot linked to the action/run for the actual competition, rather than relying on that field alone.From the lobby enter the stage, choose a current
strategy_optionslabel, and start the authorized contest. Set 4× speed when no dialog blocks the control.Prefer
vcpc_advance. It flips and collects judgement cards, continues event results, logs every click and visible result, and returns for unfamiliar event choices. Each call has a time and step limit. It never starts another contest, trains, claims rewards or changes problems.Read historical observations using
vcpc_get_event_knowledge, choose the current event option, and optionally authorize its recurrence with an exactevent_rulesentry. Match the full title and ordered option labels; changed or ambiguous options stop automation. Results are historical observations, not promises or optimal recommendations.At
final, read the result, claim the review reward once, then usevcpc_return_lobby→vcpc_open_training→vcpc_draw_training→vcpc_collect_trainingfor authorized training. A single draw spends 1 TP. For native ten-card training use vcpc_draw_training_ten → vcpc_collect_training; it spends 10 TP and counts ten against the same persistent budget. The visible ten-card receipt is returned as training_batch. If the user requests ten-only training, stop below 10 TP without single top-ups. Rating may rise or fall. Returning to the lobby works even after the contest ceiling is exhausted. Stop at the requested scope.
Contest status and speed control
In contest observations, contest.speed is the selected 1/2/4 control, and contest.playback is the play button state; a dialog can temporarily interrupt playback even when the button says running. team.stamina / team.morale and current_problem.insight / code / testing are visible text with its units preserved. Missing or conflicting readings are null with a reason in uncertainties; these are snapshots, and the current problem may change.
vcpc_control_contest remains available for direct pause, resume and speed changes. If the target speed is already selected it returns already_satisfied and records that no click was sent. Alternatively, call vcpc_advance with target_speed: 4 and bounded max_steps / timeout_ms: it may handle enabled judgement and event-result mechanics, then sets speed at a clear window and stops. It never chooses an event to obtain that window, including when event rules were supplied. An unresolved choice, unknown speed, cancellation, timeout or unconfirmed action returns the observation and pending intent; no background loop remains. A changed selection after a problem click is reported in the result; check subsequent observations after resuming because automatic selection can change it. allowed_actions includes vcpc_advance while paused when the run is confirmed and unblocked.
Strategic checkpoints and bounded history
For the new strategic checkpoint options, clock units, paginated event evidence, and Rating-dependent training statistics, see 0.5.2 update notes. The shared catalog now covers 35 event titles and 1,094 deduplicated visible observations, including five newly encountered events; see the shared-event refresh. Current-profile history merges without counting imported actions twice. Historical outcomes do not authorize event choices or establish optimal decisions.
vcpc_advance supports stop_on_failure_streak and
stop_on_preparation_stall_minutes. These return control for a decision and never
change problems. Pair them with pause_at_checkpoint: true; inspect
checkpoint.paused and checkpoint.pause_blocked_reason. An explicit
pause_drain_limit (0–5, default 0) permits a bounded number of additional routine
dialogs while seeking a pause. A new event choice always stops this process,
including when an event policy was supplied. No pending intent runs after the call.
Contest observations include elapsed_minutes and remaining_minutes, with
time_unit: "game_minutes" and clock_format: "H:MM". Thus 0:06 is six game
minutes. timeout_ms remains a wall-clock tool budget.
Event knowledge defaults to compact summaries with sampled evidence references.
Use detail: true and an event_key to retrieve original observations, then
follow pagination.next_cursor with the same title/detail/event key query.
limit controls page size; the response also has a 64 KiB JSON budget. A ledger
change invalidates the cursor: restart the query instead of reusing the old one.
The event-history resource is also paginated; its counts cover the entire query.
vcpc_get_profile_stats now includes training.by_starting_rating, recent batch
changes, and card coverage with the observed fraction of zero-delta cards. Missing
or inconsistent receipts remain unknown and are not counted as zero-gain cards.
Reusable event policies (owned profile)
vcpc_save_event_policy saves a profile-scoped immutable {policy_id, version, rules} definition. Each rule has the same exact {title, options, choose} shape as event_rules; saving does not authorize or enable it. Use vcpc_list_event_policies or vcpc_get_event_policy to inspect definitions. On each batch, explicitly pass policy: {policy_id, version} to vcpc_advance to authorize that version for that batch only. Omit it to stop using it; after reconnecting, inspect the saved version and explicitly pass it again. Do not combine policy and nonempty event_rules. Use a new version to modify rules; vcpc_disable_event_policy permanently disables the old version. Re-saving the same version is idempotent only for identical content and never clears its disabled state.
Only an exact title and ordered, complete option labels authorize a unique match. Changed text or cost, unknown or duplicate matches stop for a decision. At a decision stop, decision.match explains the match and decision.knowledge includes T2's sourced history, which is evidence rather than authorization. Confirm the current decision_id and option_id for manual choices. Chosen batch steps record the policy version/hash, signature, selected option and visible outcome in the normal action ledger. In-flight clicks must finish confirmation; disabling is checked before dispatch and cannot undo a click already in progress. Existing inline event_rules remain supported as explicit per-batch authorization. Policies never change contest or TP ceilings, start a contest, claim rewards or train.
Use vcpc_screenshot to return a native MCP image of the rendered viewport. Some clients show images automatically; others require image-capable presentation. Prefer screenshots at the start, final and training result. The tool does not navigate or bring the window to the foreground. The AI need not take a screenshot or write a report for every card.
The server publishes initialization instructions and vcpc://guide / vcpc://knowledge/events resources. A knowledge tool is also supplied because clients differ in how they load resources. Historical knowledge travels with the installation; new event observations are derived automatically from this profile's durable ledger and remain available across client changes. No access to another AI's private chat is needed.
In owned-profile mode, knowledge reads the selected profile's actions.jsonl directly as a read-only snapshot, even before vcpc_connect and while another process holds the control lock. It never accepts a path from tool arguments. source_scope identifies seed and profile status, snapshot time, byte count and hash; partial, missing, and unreadable are not complete history. A trailing unfinished line is excluded and identified separately from malformed complete lines. Normal responses group whitespace-equivalent titles and ordered options, return observed outcomes and evidence references, and count instances rather than probabilities. Set detail: true for raw observations. counts covers all returned titles, normalized variants and deduplicated observations. Current on-screen labels and option_id remain mandatory for actions. Existing-user mode is outside this owned-profile read-only guarantee.
Every write requires a unique action_id and current session_id; individual event/card tools also require the latest decision_id / option_id. IDs change after reveal or choice. Reuse the original action ID when retrying an identical request. Batch retries are observe-only and do not resume or replay clicks; inspect the current state before starting another batch. Batch cancellation stops subsequent steps; an already dispatched click must finish confirmation. A failed/unknown action stops the batch. Detailed evidence remains in the local ledger even when the batch response is concise.
Modes and scope
The supported ordinary-play path uses an isolated, server-owned Chrome profile. The older VCPC_BROWSER_MODE=existing-user mode is experimental and outside the supported Alpha path. Its tool set and task-policy controls differ, and it does not expose batch play or training; personal Chrome takeover and recovery are not established by this package. This is a local stdio service, not a hosted HTTP service or an MCP tool supplied by the website itself.
Detailed research sampling is optional and separate from ordinary play. The external vcpc-playtest skill and personal datasets are not required to install or run this project. The UI adapter never reads unrevealed verdicts or uses post-contest problem ratings during play. Native ten-card training and explicitly authorized early termination are supported in owned-test mode. Reset, save import, daily check-in and collections management are not implemented; historical observations do not establish an optimal strategy.
Logs and recovery
Profiles live in .profiles/<alias>/; ledgers and browser metadata live in data/profiles/<alias>/. One controller holds a profile lock. Never commit these folders. Unknown click outcomes block further writes; do not remove a lock, edit history or change action IDs to bypass a block. A browser or page restart invalidates continuity evidence; in-contest automatic recovery is deliberately unsupported.
For an owned profile, call vcpc_diagnose_recovery with no arguments. If it reports reconnect, use vcpc_connect to verify the still-running browser; do not restart it. If it reports recoverable, and you know there has been no unrecorded manual takeover, explicitly call vcpc_recover_browser with { "confirm_no_unrecorded_activity": true }. Recovery requires VCPC_HEADED=1, the configured dedicated profile and expected team, confirmed last-run reward, complete latest progress, no unknown/in-flight action, no competing controller and a verified exited browser. It starts a new Chrome and accepts only a matching settled lobby/final state, including the latest observed season, stage, Rating and TP. The ledger cannot prove the absence of manual activity outside MCP; if that is uncertain, stop and inspect rather than recover. A failure leaves a recovery-pending.json marker and original evidence for diagnosis; never remove locks or overwrite damaged metadata to force recovery. Recovered connections use new session and decision handles. Recovery does not start a contest, train or promise in-contest resumption.
Training screens do not display the team name. The driver carries forward a previously verified identity only within the same page document; it cannot recover identity from a matching team name after a reload. A disconnected client can reconnect to a still-running training page when the ledger provides matching document evidence.
Development and sharing
npm test # synthetic browser + controller + MCP SDK regressions
npm run release:prepare # create a new versioned source directory and ZIPTests use isolated synthetic pages, not personal game saves. The full suite requires macOS Google Chrome at its standard path, including a keychain compatibility test. The included HTTP bridge is solely a regression fixture and is not required to install or use the server.
The exporter uses an allowlist and refuses to overwrite an existing versioned directory or ZIP. Pass -- --label another-review to create a separate export. It excludes profiles, private logs, raw datasets, credentials, node_modules and machine-specific examples. RELEASE-MANIFEST.json lists source-file hashes; SHA256SUMS also covers the manifest. Seed knowledge includes historical source identifiers and evidence hashes; the original research files are not shipped or needed at runtime. No GitHub repository or release is created automatically.
Verified compatibility and limitations
Path | Evidence | Not established |
macOS, dedicated Chrome, stdio SDK | Real network-contest, 4×, pause, selection, reward and settled recovery; training has prior real SDK evidence | Real promotion and later stages; every random branch; in-contest reload or disconnect recovery |
Codex CLI 0.149.0 | Direct stdio knowledge, diagnostic, connect, observe and native PNG interpreted by the model | Full autonomous contest and training; T6 stopped at an unresolved strategy action. Human-facing image rendering was not independently verified |
DeepSeek Harness 0.2.1-rc.5 | Direct stdio tool discovery and read-only knowledge/diagnostic calls using its bundled MCP client | Full game, policy handoff, training and image presentation |
Other clients or platforms | Standard stdio is the intended protocol | Complete client workflows and non-macOS compatibility are unverified |
The real client checks were performed with the prior 0.4.0 server version before this Alpha version label and the latest synthetic-only strategy transition mitigation. No full real-client completion is claimed for this release. The project owner has not selected a license, and no open-source permission or third-party rights are granted by this package.
AK 结算与暂停检查点
AK 全过结算页可能不提供复盘奖励按钮。此时观察输出 final.review_status=not_offered,前提是可见 AK 标记、页面完全没有 claim-review 控件,并有唯一可用的返回大厅按钮。拥有同一文档内已确认开赛的 owned-test 控制器允许返回大厅,并记录真实的 ak_review_not_offered 结算,不伪造领奖。该记录可用于后续赛程、时限更新和已结算浏览器恢复。仍有奖励按钮或证据不明确时沿用原领奖要求。
Explicit early-end experiment
Owned-test profiles may opt into VCPC_ALLOW_EARLY_END=1. vcpc_end_contest and vcpc_start_and_end_contest require confirm_early_end=true, confirm the visible native/custom end dialog, and wait for its closing animation and final screen. Ordinary profiles and existing-user sessions keep this capability disabled. The fast helper records separate stable start/end action IDs and never claims rewards or draws training cards. vcpc_reconcile_early_end accepts an original unknown end ID only, verifies the same run/document/team, and either completes its uniquely recognized pending end dialog or only verifies an already visible final; original unknown entries are retained with independently checked server resolutions.
Championship research update (0.5.2-alpha.2)
Owned-test mode now exposes vcpc_get_run_report and vcpc_get_profile_stats. Observation adds competition (the actual visible precontest/result title), strategy_details, frozen run_context, and final-only public review/standings text. identity.stage remains the career topbar for compatibility; never use it alone as proof of a contest stage.
Use expected_stage when starting a contest. For championship proof pass goal: {stage: "可观测宇宙总决赛", achievement: "champion"} to vcpc_get_run_report, and require goal_verification.verified === true. Old records without both stage titles remain unverified. Gold, first place, entry qualification and early termination are distinct.
vcpc_advance supports stop_after_judgements, stop_at_elapsed_minutes (in-game minutes), and explicit pause_at_checkpoint. A checkpoint never forces through a dialog; check checkpoint.paused, process any blocker and resume explicitly when ready. No automatic problem selection was added. Event rules may opt into matching: "whitespace"; only whitespace is normalized, preserving costs, punctuation, order and unique option identity.
See the update and test plan. This release has not been validated in a new real contest; the next DSH attempt must verify live selectors and selection persistence through normal UI. Existing stopped saves and DSH configuration are unchanged.
中文
VCPC MCP — 0.5.2-alpha.2
**本地 Alpha:**适用于 macOS、专用 Chrome 配置文件和标准 stdio MCP 客户端。尚未选择许可证,见许可状态。本软件包不授予 VCPC 网站或其资源的任何权利。
这是面向 VCPC 的模型无关本地 MCP 服务器,供支持 stdio MCP 的客户端使用,通过专用 Chrome 窗口观察可见界面、执行经过检查的操作并持久记录操作历史。策略和事件选项由 AI 决定;各客户端工作流的验证范围见下文。
安装
需要 macOS、Node.js 22+、npm 和 Google Chrome。专用配置文件实现及其测试依赖 macOS/Unix 风格的 Chrome 进程和单例行为;Windows 和 Linux 未验证。VCPC_CHROME_PATH 在可信启动配置中指定 Chrome 可执行文件。本服务器不需要 API 密钥或模型 SDK。
npm ci --ignore-scripts
npm run build按通用 JSON 示例或 TOML 示例配置 MCP 客户端,替换可执行文件及项目路径。重新连接时使用相同的配置文件别名和完全一致的队伍名称:
{
"mcpServers": {
"vcpc": {
"command": "/absolute/path/to/node",
"args": ["/absolute/path/to/vcpc-mcp/dist/server.js"],
"env": {
"VCPC_PROFILE_ALIAS": "my-team",
"VCPC_EXPECTED_TEAM": "My VCPC Team",
"VCPC_CHROME_PATH": "/absolute/path/to/chrome",
"VCPC_HEADED": "1",
"VCPC_ALLOW_REGISTRATION": "1",
"VCPC_MAX_CONTESTS": "0",
"VCPC_TRAINING_TP_BUDGET": "0"
}
}
}
}比赛上限为零时,vcpc_enter_stage 也会被阻止,包括关闭初始规则对话框;要继续通过规则页,先设置经授权的累计上限。VCPC_ALLOW_REGISTRATION=1 仅允许创建新的专用配置文件时注册,名称最多 24 个字符。配置文件保存游戏存档;恢复队伍时不要删除。VCPC_HEADED=1 在首次启动时显示浏览器。macOS 上 Chrome 的常见路径为 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome。
客户端连接
使用通用 JSON 或 Codex TOML 示例,将占位路径替换为 Mac 上的路径,并在重连时保持专用配置文件别名和完整队名一致。这些是可信启动设置,不能作为游戏工具参数提供。从示例中的零累计上限开始,只将其提高到为该配置文件授权的累计开赛次数和付费 TP 数量。新队伍需要 VCPC_ALLOW_REGISTRATION=1,注册后将其禁用。使用直接 stdio 客户端,不要使用可选开发桥接。
DeepSeek Harness 桌面版可通过随附的 @deepseek-ai/dsh-mcp-client 和 DSH YAML 示例直接配置。其配置文件补丁对该 DSH 配置文件全局生效;谨慎替换路径和已授权累计上限。DSH 0.2.1-rc.5 已通过 stdio 直接发现并调用知识及恢复诊断工具;完整游戏和图像显示尚未在此路径验证。
可选 HTTP 桥接仅用于开发回归测试,不属于受支持的 Alpha 连接方式。请直接使用 stdio。
预算是操作员设定的该配置文件账本累计上限,不是单次调用额度。命名配置文件的 VCPC_MAX_CONTESTS 默认为 2,VCPC_TRAINING_TP_BUDGET 默认为 0。以后需要授权更多操作时,保留配置文件和账本,并在客户端配置中明确提高对应上限。模型的工具参数不能提高上限。旧版未命名配置文件保留原有的三场比赛上限。
普通游玩
可以告诉 AI:“使用 VCPC MCP 打一场比赛,显示浏览器及关键节点截图,领取复盘奖励,然后最多花费 3 TP 训练。采用普通游玩,不需要详细采样报告。”先配置足够的本地 TP 上限;用户请求的任务预算可以小于该上限。
使用
vcpc_connect连接一次。新队伍依次使用vcpc_register_team、vcpc_confirm_initial_rating,再用vcpc_enter_stage关闭规则。 世界冠军的大厅可能显示可观测宇宙总决赛而非常规入口。vcpc_enter_stage支持其唯一的“进入可观测宇宙总决赛 →”路线按钮,即使另有快捷入口。它只进入准备/规则页;观察实际赛事、选择策略后再调用vcpc_start_contest。唯一的常规路线优先于持续显示的可观测宇宙快捷入口;只有没有常规入口时才使用后者。常规入口或该路线标签重复时仍会阻止操作。 顶栏可能仍显示“世界总决赛”,而准备页明确显示“可观测宇宙总决赛”。identity.stage读取生涯顶栏;实际赛事应以可见赛事标题和关联操作或场次的开赛前截图为准,不能只依赖该字段。从大厅进入赛段,选择当前
strategy_options标签并开始已授权比赛。没有对话框阻挡控件时设置 4 倍速。优先使用
vcpc_advance:它翻开并收集判题卡、继续事件结果、记录每次点击和可见结果,并在遇到不熟悉的事件选择时交还控制权。每次调用都有时间和步骤限制;它不会开始另一场比赛、训练、领奖或换题。使用
vcpc_get_event_knowledge阅读历史观察,选择当前事件选项;也可用精确的event_rules条目授权相同情况再次出现时的选择。完整标题及有序选项标签必须匹配;选项变化或有歧义时停止自动化。历史结果不是承诺或最优建议。到达
final后读取结果,领取一次复盘奖励,然后依次使用vcpc_return_lobby→vcpc_open_training→vcpc_draw_training→vcpc_collect_training完成授权训练。单抽消耗 1 TP;原生十连使用vcpc_draw_training_ten→vcpc_collect_training,消耗 10 TP,并在同一持久预算中计 10。可见十连收据作为training_batch返回。如果用户要求只进行十连,剩余不足 10 TP 时停止,不补单抽。Rating 可能升也可能降。即使比赛上限耗尽也可返回大厅。达到请求范围后停止。
比赛状态与速度控制
比赛观察中,contest.speed 是选中的 1/2/4 倍速控件,contest.playback 是播放按钮状态;即使按钮显示运行,对话框仍可能暂时中断播放。team.stamina、team.morale 及 current_problem.insight、code、testing 保留可见文本及单位。缺失或冲突的读数为 null,并在 uncertainties 中说明;它们只是快照,当前题目可能变化。
可使用 vcpc_control_contest 直接暂停、继续和调速。目标速度已选中时,它返回 already_satisfied 并记录没有发送点击。也可使用带 target_speed: 4 和有界 max_steps / timeout_ms 的 vcpc_advance:它可以处理可用判题及事件结果,在无阻挡时设置速度并停止。即使提供事件规则,它也不会为获得调速窗口而选择事件。遇到未解决选择、未知速度、取消、超时或未确认操作时返回观察和待处理意图;不会留下后台循环。题目点击后选中状态变化会在结果中报告;恢复后应继续观察,因为自动选择可能再次改变它。已确认且无阻挡的场次暂停时,allowed_actions 也包含 vcpc_advance。
策略检查点与有界历史
新策略检查点、时间单位、分页事件证据和按 Rating 区分的训练统计见 0.5.2 更新说明。共享目录现覆盖 35 个事件标题和 1,094 条去重后的可见观察,包括新遇到的五个事件,见共享事件更新。当前配置文件历史合并时不会重复计入导入操作。历史结果既不授权事件选择,也不证明决策最优。
vcpc_advance 支持 stop_on_failure_streak 和 stop_on_preparation_stall_minutes,触发后交还控制权,不会换题。可配合 pause_at_checkpoint: true,检查 checkpoint.paused 和 checkpoint.pause_blocked_reason。显式的 pause_drain_limit(0–5,默认 0)允许寻找暂停时额外处理有限数量的常规对话框。即使提供事件策略,新事件选择仍会停止此过程;调用结束后没有待运行意图。
比赛观察包含 elapsed_minutes 和 remaining_minutes,其 time_unit: "game_minutes"、clock_format: "H:MM";因此 0:06 是六个游戏内分钟。timeout_ms 仍是现实时间的工具预算。
事件知识默认返回紧凑摘要和采样证据引用。使用 detail: true 和 event_key 获取原始观察,然后以相同的标题、detail 和 event key 查询跟随 pagination.next_cursor。limit 控制页大小,响应另有 64 KiB JSON 预算。账本变化会使游标失效,应重新开始查询。事件历史资源也分页,其计数覆盖整个查询。
vcpc_get_profile_stats 还包括 training.by_starting_rating、近期批次变化、卡片覆盖情况和观察到的零变化卡比例。缺失或不一致的收据保持未知,不计为零收益卡。
可复用事件策略(自有配置文件)
vcpc_save_event_policy 保存配置文件范围内不可变的 {policy_id, version, rules} 定义。每条规则采用与 event_rules 相同的 {title, options, choose} 结构;保存不代表授权或启用。可用 vcpc_list_event_policies 或 vcpc_get_event_policy 查看。每次批处理须向 vcpc_advance 显式传入 policy: {policy_id, version},只授权该批次使用该版本;省略即停止使用。重连后须先检查已保存版本并再次显式传入。不要同时使用 policy 和非空 event_rules。修改规则应使用新版本;vcpc_disable_event_policy 永久禁用旧版本。仅当内容完全相同时重新保存相同版本才是幂等操作,且不会清除禁用状态。
只有标题与完整、有序的选项标签精确匹配并唯一时才获授权。文本或费用变化、未知或重复匹配都会暂停等待决策。决策停止时,decision.match 解释匹配,decision.knowledge 包含 T2 的来源历史,是证据而非授权。手动选择须确认当前 decision_id 和 option_id。批处理步骤在普通操作账本中记录策略版本/哈希、签名、所选选项及可见结果。进行中的点击必须完成确认;派发前会检查禁用状态,但不能撤销已派发点击。内联 event_rules 仍可作为每批次显式授权。策略不会改变比赛或 TP 上限,也不会开赛、领奖或训练。
使用 vcpc_screenshot 返回渲染视口的原生 MCP 图像。部分客户端自动显示图像,其他客户端需要支持图像的展示方式。建议在开始、结算和训练结果时截图。该工具不会导航或将窗口置于前台;AI 无需为每张卡截图或写报告。
服务器发布初始化说明以及 vcpc://guide / vcpc://knowledge/events 资源;由于客户端加载资源的方式不同,也提供知识工具。历史知识随安装包提供;新的事件观察自动从该配置文件的持久账本中生成,切换客户端后仍可用,无需访问其他 AI 的私人聊天。
自有配置文件模式中,知识功能直接以只读快照读取所选配置文件的 actions.jsonl,即使尚未 vcpc_connect 或其他进程持有控制锁也可读取;它不接受工具参数提供的路径。source_scope 标识种子和配置文件状态、快照时间、字节数和哈希;partial、missing、unreadable 都不代表完整历史。末尾未完成行被排除,并与格式错误的完整行分别标识。普通响应将空白字符等价的标题及有序选项分组,返回观察结果和证据引用,计数是实例数而非概率。detail: true 返回原始观察。counts 覆盖所有返回标题、规范化变体和去重观察。执行操作仍必须使用当前屏幕标签及 option_id。existing-user 模式不在该自有配置文件只读保证范围内。
每次写操作都需要唯一 action_id 和当前 session_id;单个事件/卡片工具还需要最新的 decision_id / option_id。揭示或选择后 ID 会变化。重试完全相同的请求时复用原 action ID。批处理重试只观察,不会恢复或重放点击;开始新批次前先检查当前状态。取消批处理会停止后续步骤;已派发点击仍须完成确认。失败或未知操作会停止批处理。即使批处理响应简洁,详细证据仍保存在本地账本。
模式与范围
受支持的普通游玩方式使用隔离的、服务器拥有的 Chrome 配置文件。旧的 VCPC_BROWSER_MODE=existing-user 是实验性模式,不属于受支持的 Alpha 路径;其工具集和任务策略控制不同,不提供批量游玩或训练,本软件包也未确立个人 Chrome 接管和恢复能力。这是本地 stdio 服务,并非托管 HTTP 服务或网站自身提供的 MCP 工具。
详细研究采样可选,独立于普通游玩。安装和运行本项目不需要外部 vcpc-playtest skill 或个人数据集。UI 适配器不会在游玩时读取尚未揭示的判题结果或赛后题目 Rating。owned-test 模式支持原生十连训练和明确授权的提前结束。重置、导入存档、每日签到及收藏管理尚未实现;历史观察不能证明最优策略。
日志与恢复
配置文件位于 .profiles/<alias>/;账本和浏览器元数据位于 data/profiles/<alias>/。一个控制器持有一个配置文件锁。切勿提交这些目录。未知点击结果会阻止后续写入;不要通过删除锁、编辑历史或更换 action ID 绕过阻挡。浏览器或页面重启会使连续性证据失效;有意不支持比赛中的自动恢复。
自有配置文件应无参数调用 vcpc_diagnose_recovery。若报告 reconnect,用 vcpc_connect 验证仍在运行的浏览器,不要重启。若报告 recoverable,且你知道没有未记录的人工接管,显式调用 vcpc_recover_browser 并传入 { "confirm_no_unrecorded_activity": true }。恢复要求 VCPC_HEADED=1、已配置的专用配置文件和预期队伍、上场奖励已确认、最新进度完整、无未知或进行中操作、无竞争控制器,且浏览器已确认退出。它启动新的 Chrome,只接受匹配的稳定大厅/结算状态,包括最后观察到的赛季、赛段、Rating 和 TP。账本不能证明 MCP 之外没有人工活动;若不确定,应停止并检查。失败会留下 recovery-pending.json 标记和原始证据供诊断;切勿删除锁或覆盖损坏元数据以强行恢复。恢复连接使用新的 session 和 decision 句柄;恢复不会开赛、训练或保证比赛中续接。
训练界面不显示队名。驱动仅在同一页面文档内沿用此前验证的身份;重新加载后不能仅凭相同队名恢复身份。当账本提供匹配的文档证据时,断开的客户端可以重连到仍运行的训练页面。
开发与分享
npm test # synthetic browser + controller + MCP SDK regressions
npm run release:prepare # create a new versioned source directory and ZIP测试使用隔离的合成页面,不使用个人游戏存档。完整测试套件需要 macOS 上标准路径的 Google Chrome,包括钥匙串兼容性测试。随附 HTTP 桥接仅为回归测试组件,安装或使用服务器不需要它。
导出工具采用允许列表,拒绝覆盖已有版本目录或 ZIP。可传入 -- --label another-review 创建单独导出。导出排除配置文件、私有日志、原始数据集、凭据、node_modules 和机器专属示例。RELEASE-MANIFEST.json 列出源文件哈希,SHA256SUMS 还覆盖清单。种子知识包含历史来源标识和证据哈希;原始研究文件不随包提供,运行时也不需要。不会自动创建 GitHub 仓库或发行版。
已验证的兼容性与限制
路径 | 已有证据 | 尚未确立 |
macOS、专用 Chrome、stdio SDK | 真实网络比赛、4 倍速、暂停、选题、领奖及已结算状态恢复;训练有此前真实 SDK 证据 | 真实晋级及后续赛段、每个随机分支、比赛中重载或断线恢复 |
Codex CLI 0.149.0 | 直接 stdio 知识、诊断、连接、观察,以及模型解读原生 PNG | 完整自主比赛和训练;T6 在未解决的策略操作处停止;面向人的图像渲染未独立验证 |
DeepSeek Harness 0.2.1-rc.5 | 使用其内置 MCP 客户端直接通过 stdio 发现工具并进行只读知识/诊断调用 | 完整游戏、策略交接、训练和图像展示 |
其他客户端或平台 | 标准 stdio 是预期协议 | 完整客户端工作流和非 macOS 兼容性未验证 |
真实客户端检查使用的是此前的 0.4.0 服务器版本,早于当前 Alpha 版本标签和最新仅在合成环境测试的策略转换缓解措施。本发行版不声称已完成完整真实客户端流程。项目所有者尚未选择许可证;本软件包不授予开源许可或第三方权利。
AK 结算与暂停检查点
AK 全过结算页可能不提供复盘奖励按钮。此时观察输出 final.review_status=not_offered,前提是可见 AK 标记、页面完全没有 claim-review 控件,并有唯一可用的返回大厅按钮。拥有同一文档内已确认开赛的 owned-test 控制器允许返回大厅,并记录真实的 ak_review_not_offered 结算,不伪造领奖。该记录可用于后续赛程、时限更新和已结算浏览器恢复。仍有奖励按钮或证据不明确时沿用原领奖要求。
显式提前结束实验
owned-test 配置文件可选择启用 VCPC_ALLOW_EARLY_END=1。vcpc_end_contest 和 vcpc_start_and_end_contest 要求 confirm_early_end=true,确认可见的原生或自定义结束对话框,并等待关闭动画及结算界面。普通配置文件和 existing-user 会话默认禁用此能力。快速助手分别记录稳定的开赛/结束 action ID,不会领奖或抽训练卡。vcpc_reconcile_early_end 只接受原始未知结束 ID,验证相同场次、文档和队伍,然后完成唯一识别的待处理结束对话框,或仅验证已经可见的结算页面;原始未知条目保留,并附带独立检查的服务器解决记录。
冠军研究更新(0.5.2-alpha.2)
owned-test 模式现提供 vcpc_get_run_report 和 vcpc_get_profile_stats。观察新增 competition(实际可见的赛前/结算标题)、strategy_details、冻结的 run_context,以及仅结算时提供的公开复盘/排名文字。identity.stage 为兼容性仍表示生涯顶栏;切勿仅凭它证明比赛赛段。
开赛时使用 expected_stage。验证冠军时,向 vcpc_get_run_report 传入 goal: {stage: "可观测宇宙总决赛", achievement: "champion"},并要求 goal_verification.verified === true。缺少两个赛段标题的旧记录仍未验证。金牌、第一名、入场资格和提前结束是不同概念。
vcpc_advance 支持 stop_after_judgements、stop_at_elapsed_minutes(游戏内分钟)以及显式 pause_at_checkpoint。检查点不会强行通过对话框;检查 checkpoint.paused,处理阻挡后在准备好时显式恢复。没有加入自动选题。事件规则可选择 matching: "whitespace";只规范化空白字符,保留费用、标点、顺序和唯一选项身份。
参见更新与测试计划。本发行版尚未在新的真实比赛中验证;下一次 DSH 尝试必须通过普通 UI 验证实时选择器和选题持久性。已有停止的存档和 DSH 配置保持不变。
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
A real Chromium browser agents pay for per action in USDC via x402 — hosted MCP, free local stdio.
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Run multi-step tasks in a real Chrome browser: persistent environments, live view, human takeover.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceConnects local stdio MCP servers to an existing Chrome 144+ session, preserving the user's signed-in sessions, cookies, tabs, and extension environment without launching a second browser. It provides tab control, semantic snapshots, screenshots, pointer, keyboard, form selection, scrolling, navigation, and waiting tools.MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients to drive individually named Chrome profiles, providing tools for tabs, navigation, page interaction, screenshots, JavaScript evaluation, console logs, and network inspection over stdio without a TCP port.MIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP clients to drive a live Chrome or Brave browser over stdio, with tools for navigation, clicking, typing, screenshots, and executing automation goals.3MIT
- AlicenseAqualityAmaintenanceLets any MCP agent control your signed-in Chrome with full login state, offering normal browser tools and an optional Fast JEV mode for bounded-speed typed decisions on the same profile.24028MIT