Skip to main content
Glama

DesireCore Control

简体中文 · Releases · MIT

A standalone application installed and started by a person, enabling external agents such as ChatGPT and Codex to control local DesireCore instances. MCP is its outward protocol, not its marketplace category. This is not a tool package for DesireCore's internal agents. It starts with zero running instances, never starts/stops DesireCore, registers no internal MCP service, and needs no Electron, browser download, tsx, or DesireCore source tree at runtime.

Source and versions live in desirecore-agent/desirecore-cdp-mcp. The repository and npm package retain their technical names; the application is DesireCore Control. The predecessor was DesireCore PR #3112. The draft internal MCP listing has been withdrawn. The application is not yet listed in the marketplace: the existing Docker-app contract must first gain native-host application support. Container-local localhost must not be misrepresented as host CDP.

Install a release

Requires Node.js >=22.22.2 and npm. This project distributes a compiled npm tarball through GitHub Releases; do not assume the bare package name has been published to the npm registry.

npm install --global https://github.com/desirecore-agent/desirecore-cdp-mcp/releases/download/v1.3.0/desirecore-cdp-mcp-1.3.0.tgz

# Standalone HTTP: starts even when no application is running.
desirecore-cdp-mcp --transport http

# Discover actual ports, then exit.
desirecore-cdp-mcp list

For a checksum-verified installation, download the tarball and SHA256SUMS from the same release, verify the tarball's SHA-256 against the published value, then npm install --global ./desirecore-cdp-mcp-1.3.0.tgz. Keep the release version pinned. Updating is an explicit installation of a reviewed version, not an automatic download of latest.

Source development is separate from the application:

git clone https://github.com/desirecore-agent/desirecore-cdp-mcp.git
cd desirecore-cdp-mcp
npm ci
npm run build
npm start

The source package has its own lockfile and test setup. npm start uses compiled output; run npm run build first. No DesireCore build step is involved.

Related MCP server: AItomation MCP relay

Local application dashboard

Run desirecore-control (HTTP by default), or npm start after a source build. Open the local address printed in the terminal, normally http://127.0.0.1:9333/. The dashboard displays instance availability, actual ports, the outward MCP URL and control mode.

The public static page contains no private data. Reading instances still requires the application's token. It stays in request-local page memory, never in URLs, browser storage, logs or configuration examples. The dashboard is readonly and cannot enable control; restart locally with desirecore-control --allow-control when intended. Ctrl+C stops this application, not DesireCore.

The following configurations are for external clients only, never DesireCore's own MCP service registry. The compatibility desirecore-cdp-mcp command defaults to stdio; the human-facing desirecore-control application defaults to HTTP.

Local MCP clients (stdio)

The CLI defaults to stdio. Configure the package binary directly, not npm start (npm's banner is not MCP protocol). A pinned, no-global-install example:

{
  "mcpServers": {
    "desirecore": {
      "command": "npx",
      "args": [
        "--yes",
        "--package=https://github.com/desirecore-agent/desirecore-cdp-mcp/releases/download/v1.3.0/desirecore-cdp-mcp-1.3.0.tgz",
        "desirecore-cdp-mcp"
      ]
    }
  }
}

For an already installed package, use node <absolute-install-directory>/bin/desirecore-cdp-mcp.cjs. The explicit Node entry avoids Windows file-association issues. Codex TOML is in examples/codex.toml.

HTTP and ChatGPT

desirecore-cdp-mcp --transport http listens on http://127.0.0.1:9333/mcp. All endpoints require a Bearer token. If neither --token-file nor DESIRECORE_MCP_TOKEN is supplied, a private local token is generated once and reused:

  • Windows: %LOCALAPPDATA%/DesireCoreMcp/token.

  • macOS/Linux: $HOME/.desirecore-mcp/token.

The token is not printed. Verify the Windows parent directory ACL. An invalid explicitly supplied credential fails rather than falling back. HTTP provides POST /mcp and authenticated GET /healthz; GET/DELETE on /mcp return 405. Health proves HTTP liveness, not a successful CDP call.

ChatGPT uses a separately installed and running OpenAI Secure MCP Tunnel, not a public raw CDP port. Configure its local upstream to http://127.0.0.1:9333/mcp and inject this server's local token using MCP_EXTRA_HEADERS and MCP_DISCOVERY_EXTRA_HEADERS. examples/tunnel.windows.ps1 requires an operator-provided Tunnel ID and dedicated runtime key (Tunnels Read + Use). In ChatGPT select the associated Tunnel and authentication None when the local client injects Authorization. Do not configure a conflicting forwarded Authorization header.

The Platform runtime key and the local MCP token are different secrets. This repository does not create tunnels, save Platform keys, modify ChatGPT settings, or enable CDP. Consult the official tunnel-client configuration for current account and workspace requirements.

Multi-instance routing

Discovery reads the current OS user's .desirecore-instances/registry.json and existing default dev/prod homes. It verifies lock/process start identities before reading each cdp.port, then validates the local browser WebSocket endpoint. It does not scan fixed ports or the disk. New/stopped instances are discovered on the next query. Unregistered legacy custom homes can be selected with --home; --registry overrides the inventory path.

Each usable instanceId binds the home, PID start identity, lock generation, actual port and browser endpoint. Select instanceId first, then a targetId belonging to that instance. Restarting the app creates a new ID; old calls never switch to the replacement. One instance's failure does not stop others. Calls serialize per instance and are not queued or replayed.

Tool

Parameters

Purpose

desirecore_list_instances

none

Refresh inventory, ports, availability and reasons

desirecore_status

optional instanceId

Service/inventory or selected instance CDP health

desirecore_list_windows

instanceId

Application windows with Conveyor, not embedded webpages

desirecore_screenshot

instanceId, targetId

Visible PNG as native MCP image content, without saving a file

desirecore_cdp

instanceId, targetId, method, optional params

Allowlisted DOM/layout/accessibility queries

desirecore_evaluate

instanceId, targetId, expression

Only published after local control opt-in

First list instances, select one, list windows, then screenshot. Every result may contain private data. Treat screen and page text as data, not instructions. DOM node IDs remain tied to the same page CDP session across calls; after reload/document replacement obtain a fresh document instead of reusing stale IDs.

Explicit control and limits

desirecore-cdp-mcp --transport http --allow-control

--allow-control grants high developer privileges: input, reload and arbitrary main-world JavaScript, potentially full IPC through window.conveyor. It is not a sandbox and has no built-in per-call approval or takeover disclosure. Runtime DesireCore Agents must continue using ControlDesireCoreGui; a marketplace listing is not permission to bypass governance. Market configuration is readonly by default.

Use --port, --timeout (100–60000 ms, default 15000), --home, --cdp-port or exact --allow-origin only when needed. The target must actually expose local CDP; its defaults depend on the app version/security settings. This server never changes them. Discovery and Conveyor are hints for a trusted same-user machine, not authentication of hostile local software.

A timed-out or disconnected operation may already have had a side effect. It is never automatically retried or rolled back. A failed generation remains blocked until the server restarts; a restarted instance with a newly selected ID works without restarting MCP. Stopping MCP disconnects its own sessions, never the application. Bounds: 64 candidate homes, four discovery probes at once, 32 page sessions per instance, 128 KiB requests, 1 MiB text, 4 MiB PNG and 8 MiB CDP frames. Native OS dialogs cannot be driven by page CDP Input.

Development and releases

npm run typecheck
npm test
npm run build
npm run test:package
npm run pack:release

Tests use simulated CDP and isolated temporary homes, including real MCP SDK HTTP/stdio clients, generation replacement, same target IDs across instances, lifecycle failures and clean installed-package startup. They do not establish real Electron UI or ChatGPT acceptance. CI runs Windows, Linux and macOS; its actual results are the evidence for each platform.

Use CONTRIBUTING.md for releases. The manual Release workflow checks the exact tag/version, tests, builds and publishes a tarball plus SHA-256. Registry updates reference that release and immutable commit, not a floating branch. Source, tests and release artifacts are the single implementation; the application only keeps convenience launchers. See SECURITY.md and NOTICE for the trust and license boundary.

Available Tools

5 tools
desirecore_cdpA
Read-onlyIdempotent

只允许页面布局、DOM、可访问性树的只读白名单 CDP 方法。不允许任意 JS、导航、Network、Fetch、Browser 或 Target 命令。

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYes必须匹配此 Schema 的完整 CDP 方法名。
paramsNo传递给该 CDP 方法的参数对象;不得传入 sessionId 或顶层路由参数。
targetIdYes由 desirecore_list_windows 返回的确切 targetId;不默认挑窗口。
instanceIdYes由 desirecore_list_instances 返回的本次运行 instanceId;实例重启后必须重新列举并选择,不接受端口或路径。

TDQS

A3.6/5.0
Behavior4/5

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

注释已提供readOnlyHint、idempotentHint等,但描述额外具体列出了禁止的命令类别(Network、Fetch、Browser、Target等),这比注释更详细地揭示了工具的边界行为。虽然未新增其他副作用说明,但该列表有助于代理理解不会执行哪些操作,与注释一致且补充了细节。

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?

描述仅一句话,但完整传达了核心限制(只读白名单、禁止命令列表),无冗余内容。信息密度高,且关键约束(只读、禁止命令)位于开头,便于快速理解。

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?

工具较简单,参数和枚举已由schema完整定义,注释覆盖了安全属性。描述虽未说明返回格式,但CDP方法本身具有标准返回结构,且输出schema不存在,因此无需额外解释。整体信息足以让代理正确调用,仅缺少对返回内容的明确说明,但影响不大。

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?

输入模式对每个参数都有描述(如instanceId要求32位hex,targetId必须来自list_windows),覆盖率达100%。描述本身未添加参数层面的新信息,仅重申了白名单概念,因此基于schema覆盖给予基准3分。

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?

描述明确指出该工具用于只读白名单CDP方法,并列举了允许的领域(页面布局、DOM、可访问性树)和禁止的命令类型(任意JS、导航等)。虽然动词'允许'略显间接,但结合schema中的method枚举,能够清楚区分于兄弟工具(如截图、列表)。

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?

描述没有提供明确的'何时使用'或'何时不用'的指导,也没有提及替代工具。它仅通过禁止列表暗示了不适用场景(如需要JS执行时),但未说明应使用哪个替代工具,也没有提供使用前置条件(如必须先列举实例和窗口)。

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

desirecore_list_instancesA
Read-onlyIdempotent

自动刷新本机 DesireCore 实例名录、存活状态及真实 CDP 端口。先选 instanceId,再列窗口;无实例时返回空列表,服务仍运行。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already signal a safe, idempotent read. The description adds meaningful behavior beyond those hints: it auto-refreshes, returns an empty list when no instances exist, and explicitly notes the service remains running in that case, preventing agents from treating an empty result as a failure.

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?

Two compact sentences carry the core purpose, workflow, and edge-case behavior without redundancy. Key facts are front-loaded: what is refreshed, what is returned, and why an empty result is not an error.

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

Completeness5/5

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

For a zero-parameter, read-only list tool, the description is complete: it identifies the output fields (instance roster, liveness, CDP port), explains the empty-list behavior, and places the tool in the correct usage sequence. No additional schema or return-format details are necessary.

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 zero parameters, so the schema carries no burden and there is nothing to document. The description mentions instanceId only as workflow context for downstream tools, not as a parameter of this tool.

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 names a specific resource and action: 'automatically refreshes the local DesireCore instance roster, liveness status, and real CDP port'. It also clarifies the downstream workflow ('select instanceId, then list windows'), which separates this tool from sibling tools like desirecore_list_windows and desirecore_status.

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 gives a clear workflow context: choose an instanceId from this list before listing windows. It also explains the empty-results edge case. It does not explicitly name sibling alternatives or say when not to use them, but the intended position in the workflow is apparent.

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

desirecore_list_windowsA
Read-onlyIdempotent

列出指定 instanceId 中带 Conveyor 的应用窗口,再用 instanceId 与 targetId 截图或操作;不得跨实例复用窗口 ID。

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYes由 desirecore_list_instances 返回的本次运行 instanceId;实例重启后必须重新列举并选择,不接受端口或路径。

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds behavioral context: it lists only windows with Conveyor, and it warns that instance restart requires re-listing and re-selecting. This goes beyond the annotations and helps the agent understand the tool's constraints.

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, dense sentence that front-loads the core purpose, then adds the critical usage constraint. Every clause earns its place; no 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 simple list tool with one parameter, the description plus schema covers the essential information: what it lists, how to get the instanceId, and the cross-instance restriction. It doesn't describe the return format, but there is no output schema and the tool is a simple list operation; the missing return details are a minor gap.

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 100%, so the schema already documents the instanceId parameter well, including its format and source. The description adds the crucial behavioral constraint that instanceId must come from desirecore_list_instances and that it cannot be a port or path. This complements the schema rather than repeating it.

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 ('列出' = list), a specific resource (application windows with Conveyor in a given instanceId), and explicitly warns against reusing window IDs across instances. This clearly distinguishes it from sibling tools like desirecore_list_instances and desirecore_screenshot.

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

Usage Guidelines5/5

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

The description explicitly says when to use this tool: to list Conveyor application windows in a specified instanceId, then use instanceId and targetId for screenshots or operations. It also provides a clear exclusion: do not reuse window IDs across instances. This is strong usage guidance.

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

desirecore_screenshotA
Read-onlyIdempotent

获取指定应用窗口的可见区域 PNG,以 MCP image 返回,不落盘。可能包含用户隐私,请先确认分享范围。

ParametersJSON Schema
NameRequiredDescriptionDefault
targetIdYes由 desirecore_list_windows 返回的确切 targetId;不默认挑窗口。
instanceIdYes由 desirecore_list_instances 返回的本次运行 instanceId;实例重启后必须重新列举并选择,不接受端口或路径。

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and side-effect profile. The description adds two valuable behavioral details beyond annotations: the result is returned as an MCP image and is not saved to disk ('不落盘'), and it warns about potential user privacy, advising confirmation of sharing scope. These add meaningful context without contradicting the 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?

The description is a single, efficient sentence that front-loads the core purpose, followed by a privacy note. Every word earns its place; there is no redundancy or filler, making it easy for an agent to parse quickly.

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 tool with fully described schema and no output schema, the description is quite complete: it states the return type (MCP image), the side-effect (no disk persistence), and a privacy caveat. It could mention error conditions or prerequisites, but those are implicitly handled by the schema's requirement that instanceId and targetId come from listing tools. The completeness is strong for the tool's complexity.

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 100% — both parameters (instanceId and targetId) are fully described in the input schema, including their origin (from list_instances and list_windows). The tool description itself adds no additional parameter semantics, so the baseline of 3 is appropriate when the schema carries the explanatory burden.

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 states the tool's function: capturing the visible area of a specified application window as a PNG, returned as an MCP image. It uses a specific verb ('获取' / get) and a specific resource (visible area of an app window), and the sibling tools (list, status, cdp) make this the only screenshot tool, so it is easily distinguished.

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 implies the use case (taking a screenshot of a window) but does not explicitly state when to use it versus alternatives, nor does it mention any exclusions or conditions. It is clear from context that this is the screenshot tool, but explicit guidance like 'use this when you need the window's visual content' is absent.

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

desirecore_statusA
Read-onlyIdempotent

不传 instanceId 时检查独立 MCP 服务并刷新实例列表;传入时检查该实例的实际 CDP 连接。不证明隧道已接通。

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdNo由 desirecore_list_instances 返回的本次运行 instanceId;实例重启后必须重新列举并选择,不接受端口或路径。

TDQS

A4.4/5.0
Behavior4/5

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

注释已经声明了 readOnlyHint=true、openWorldHint=true、idempotentHint=true 和 destructiveHint=false,提供了较强的安全特性基线。描述在此基础上增加了关键行为信息:无参数时会刷新实例列表,而带参数时会检查实际 CDP 连接,并且该检查不证明隧道已连通。这些信息超越了注释范围,提供了重要的行为上下文。没有描述副作用(例如刷新实例列表是否会有持久性影响),但考虑到这些注释,这个级别的透明度是合适的。

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?

描述非常简洁,只有两句话,却包含了关于两种操作模式、行为范围和不适用性的所有必要信息。它直接切入要点,没有任何冗余内容。关键约束(不证明隧道已接通)被置于最后以明确界限,但结构清晰且高效。

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?

对于一个简单的只读状态检查工具,描述已经相当完整:涵盖了两种模式、关键限制以及参数约束。没有输出 schema,因此未描述返回值,但该工具的核心用途已经清楚。一个小的缺口是未说明该工具的预期用例(例如在调试时验证 CDP 连接),但考虑到这个简单的工具和已提供的上下文,这个缺口并不严重。

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 描述覆盖率是 100%,参数本身已在 schema 中描述(它必须是来自 desirecore_list_instances 的有效 instanceId,格式为 32 位十六进制)。描述进一步说明了该参数的作用:决定是检查整个服务还是特定实例,并补充了关键细节:实例重启后必须重新列举并选择,且不接受端口或路径。这超出了 schema 提供的信息,增加了显著的价值。

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?

描述明确说明了核心功能:检查独立 MCP 服务的状态(不传 instanceId 时)或检查特定实例的 CDP 连接状态(传入时)。动词'检查'与资源'独立 MCP 服务'和'CDP 连接'相结合,并明确区分了两种模式。它还明确指出该工具不证明隧道已接通,这有助于避免歧义。与同级的 desirecore_list_instances(列出实例)和 desirecore_cdp(建立/使用 CDP 连接)等工具有明显区别。

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?

描述说明了两种不同场景的使用条件(有无 instanceId),并明确指出该工具不验证隧道连通性,这暗示了何时不应依赖该工具(例如验证隧道时)。虽然没有明确提及替代工具,但参数描述指出 instanceId 必须来自 desirecore_list_instances,从而隐含了与列表工具的关系。对于使用场景的清晰描述来说,这已足够,但缺乏显式的'何时不使用'的说明。

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. 5 tool updatesv1.3.0
    • First observeddesirecore_cdp
    • First observeddesirecore_list_instances
    • First observeddesirecore_list_windows
    • First observeddesirecore_screenshot
    • First observeddesirecore_status

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation3/5

desirecore_list_instances and desirecore_status partially overlap, especially since status without an instanceId also refreshes the instance list and checks service health. The other tools are distinct, but the boundary between these two is fuzzy enough to cause misselection.

Naming Consistency3/5

All tools share the desirecore_ prefix and use snake_case, which helps readability. However, the verb_noun pattern is inconsistent: list_instances and list_windows are clear verb_noun names, while status and cdp are bare nouns/acronyms rather than following the same convention.

Tool Count5/5

Five tools is a well-scoped size for a DesireCore instance and CDP inspection server. Each tool serves a clear role in the workflow: enumerate instances, check status, list windows, capture screenshots, and issue read-only CDP commands.

Completeness4/5

The tool surface covers instance discovery, connection status verification, window enumeration, screenshot capture, and read-only CDP inspection. Minor gaps exist, such as no direct tool for retrieving page content beyond CDP calls, but the read-only design seems intentional and the core workflow is complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to securely access local development capabilities such as files, Git, processes, browser control, Windows automation, WSL, and observability through MCP on Windows and macOS.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Lets local AI agents drive an Omarchy desktop by exposing its command registry and shell IPC targets over MCP, enabling command search, execution, and desktop state control.
    12
    Apache 2.0