DS Claude Haha MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DS Claude Haha MCPUse deepseek_run to fix the failing test in src/utils.js and run tests."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DS Claude Haha MCP
English | 简体中文
让一个主 Agent 负责规划,再把编码任务自动交给 Claude Code Haha Desktop 中配置的另一个模型执行。
典型用法:
Codex + GPT-5.6 Sol(规划、决策、代码指导)
-> MCP: deepseek_run
Claude Code Haha Desktop + DeepSeek Flash(修改代码、运行测试)
-> 完整结果、工具事件、文件变更审计
Codex + Sol(向用户汇报)这不是 API 网关,也不需要安装官方 Claude CLI。执行模型的 API 地址和 Key 仍由 Haha Desktop 管理,MCP 不读取、不保存、不转发 Key。
能力边界
角色 | 当前支持范围 |
主 Agent A | 任意支持本地 stdio MCP 的 Agent,例如 Codex、Claude Haha、Claude Code、Cursor 等 |
执行 Agent B | 当前专门适配 Claude Code Haha Desktop 的本地 REST/WebSocket 会话接口 |
执行模型 | Haha Provider 中已经配置并可用的模型,例如 |
共享内容 | 同一个项目目录中的磁盘文件,以及主 Agent 传给 MCP 的任务计划 |
不会共享 | 主 Agent 的隐藏思考、完整聊天历史和未写入磁盘的状态 |
因此,它实现的是“不同主 Agent -> Haha 执行 Agent”的通用桥,而不是无需适配就能连接任意两个 Agent 软件。扩展其他执行 Agent 需要为其会话、模型选择和事件流实现新的适配器。
Related MCP server: mcp-relay
工作流程
flowchart LR
U[用户的一次输入] --> A[主 Agent A]
A -->|规划 + deepseek_run| M[DS Claude Haha MCP]
M -->|创建同目录会话| H[Claude Code Haha Desktop]
H --> B[执行模型 B]
B -->|修改文件 / 运行测试| W[项目工作区]
B -->|最终回答 + 工具事件| M
M -->|变更审计 + 结果| A
A --> U主 Agent 和执行模型必须使用同一个项目根目录。例如:
主 Agent 项目目录: D:\Projects\MyApp
deepseek_run.workdir: D:\Projects\MyApp
Haha 后台会话目录: D:\Projects\MyApp不要把整个 D:\ 当项目目录。建议把 DS_WORKER_ALLOWED_ROOTS 限制到代码目录或具体项目。
功能
自动探测 Haha Desktop 本地端口
6771和3456安全列出 Haha Provider ID 与模型名
创建独立 Haha 后台会话并选择指定 Provider/模型
同步执行或异步启动、查询、等待、取消
返回完整最终回答、紧凑进度、工具调用和工具结果预览
Git 仓库执行前后文件哈希审计
allowedFiles越界修改警告DS_WORKER_ALLOWED_ROOTS工作目录白名单对回答、错误和嵌套工具结果递归脱敏
仅允许连接 loopback 地址,不接受 Key、Base URL、请求头或任意环境变量作为工具参数
前提
Windows 上已安装并启动 Claude Code Haha。
已在 Haha 中配置执行模型的 Provider,并能正常对话。
Node.js 20 或更高版本。
主 Agent 支持本地 stdio MCP。
安装
git clone https://github.com/OPFIMISS/DS-Claude-haha-MCP.git
cd DS-Claude-haha-MCP
npm install
npm run build构建入口为:
<仓库目录>\dist\index.jsCodex 接入 Claude Haha
编辑用户级 ~/.codex/config.toml,或可信项目中的 .codex/config.toml:
[mcp_servers.ds-worker]
command = "node"
args = ['D:\DS-Claude-haha-MCP\dist\index.js']
tool_timeout_sec = 1800
[mcp_servers.ds-worker.env]
HAHA_SERVER_URL = "http://127.0.0.1:6771"
DS_WORKER_MODEL_ID = "deepseek-v4-flash"
DS_WORKER_ALLOWED_ROOTS = 'D:\Projects'
DS_WORKER_PERMISSION_MODE = "acceptEdits"重启 Codex 后,让主模型先调用 deepseek_profiles。确认能看到 Haha 中的 Provider 与 deepseek-v4-flash,再运行一个只返回固定文本的小任务。
Codex 的 MCP 配置规则以 OpenAI 官方文档 为准。
Claude Haha 作为主 Agent
在项目根目录创建 .mcp.json:
{
"mcpServers": {
"ds-worker": {
"type": "stdio",
"command": "node",
"args": ["D:\\DS-Claude-haha-MCP\\dist\\index.js"],
"env": {
"HAHA_SERVER_URL": "http://127.0.0.1:6771",
"DS_WORKER_MODEL_ID": "deepseek-v4-flash",
"DS_WORKER_ALLOWED_ROOTS": "D:\\Projects",
"DS_WORKER_PERMISSION_MODE": "acceptEdits"
}
}
}
}重新打开项目或刷新 MCP。此时可让 Haha 当前对话中的主模型调用工具,在后台新建另一个 Haha 会话运行执行模型。
不要把包含真实 Key 的展开后配置提交到 Git。这个 MCP 本身不需要 Key。
其他主 Agent 接入
任何支持 stdio MCP 的宿主都使用同一个进程定义:
{
"command": "node",
"args": ["D:\\DS-Claude-haha-MCP\\dist\\index.js"],
"env": {
"HAHA_SERVER_URL": "http://127.0.0.1:6771",
"DS_WORKER_MODEL_ID": "deepseek-v4-flash",
"DS_WORKER_ALLOWED_ROOTS": "D:\\Projects"
}
}不同宿主可能使用 JSON、TOML、图形界面或命令行保存这三个字段。不要直接照抄不属于该宿主的配置外壳;以宿主自己的 MCP 文档为准。
完整的角色划分、项目指令和适配器说明见:不同 Agent 接入不同 Agent。
让主 Agent 自动调用
MCP 是工具,不会拦截用户消息。要接近“一次输入,自动 A -> B”,请在项目的 AGENTS.md、CLAUDE.md 或宿主项目规则中加入:
## Background implementation worker
你是主策划模型。凡是涉及修改代码、创建或删除文件、运行命令或测试的任务:
1. 先分析需求并形成完整实施方案。
2. 必须调用 ds-worker 的 deepseek_run,把 objective、当前项目根目录 workdir、约束、相关文件、allowedFiles 和验收命令交给执行模型。
3. 等待执行模型完成后,检查 finalResponse、changedFiles、warnings 和测试结果。
4. 执行模型工作期间不要同时修改同一批文件。
5. 纯问答、纯分析或用户明确要求你亲自实现时可以不调用。项目规则能显著提高自动调用概率,但最终是否调用工具仍由主 Agent 判断。百分之百硬触发需要在宿主外增加消息编排层,不属于本项目范围。
MCP 工具
工具 | 作用 |
| 脱敏列出 Haha Provider 和模型 |
| 同步完成创建会话、执行、等待和审计 |
| 异步启动任务 |
| 查询状态和增量事件 |
| 长轮询等待新事件或任务结束 |
| 向 Haha 发送 |
工具名沿用 deepseek_*,但模型可通过 modelId 指定 Haha Provider 中的其他可用模型。
环境变量
变量 | 默认值 | 说明 |
| 自动探测 | 只能是 loopback HTTP 地址 |
| 匹配当前激活 Provider | 可用 |
|
| 默认执行模型 |
|
| 可选 |
| 空 | 分号分隔的绝对目录白名单,强烈建议设置 |
|
| 单任务默认超时 |
|
| 调用方可请求的最大超时 |
安全说明
acceptEdits是默认值;需要额外权限时会拒绝并返回警告。bypassPermissions适合完全信任的仓库,相当于允许执行 Agent 直接操作项目。allowedFiles是事后审计,不是沙箱。硬边界应使用DS_WORKER_ALLOWED_ROOTS、独立工作树、容器或受限账户。非 Git 目录无法做完整文件变化审计,会返回明确警告。
工具结果超过 12,000 字符时只返回脱敏预览,完整最终回答仍会返回。
本项目只使用 Haha 的
/api/*与/ws/<session-id>,不调用内部/sdk/*。Haha 的本地协议可能随版本变化;升级 Haha 后请先运行测试任务。
开发与验证
npm run typecheck
npm test
npm run build当前测试覆盖 Provider/模型选择、完整执行、立即取消、运行中取消、工作目录白名单和递归密钥脱敏。
License
Available Tools
6 toolsdeepseek_cancelA
Cancel a running DeepSeek task by sending stop_generation to Haha Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool sends stop_generation to Haha Desktop, indicating a mutative action, but it does not explain side effects, error conditions, or whether cancellation is confirmed. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that wastes no words. It immediately states the verb and target, then adds the mechanism. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple cancellation tool with one parameter and no output schema, the description provides the essential context: what it does and how. It lacks details about return values or post-conditions, but given the simplicity, it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description does not elaborate on taskId at all. Although the parameter name is self-explanatory, the description fails to compensate for the lack of schema documentation, leaving the agent to infer its meaning from context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (cancel) and the target (a running DeepSeek task), with a specific mechanism (sending stop_generation). It distinguishes itself from siblings like deepseek_start, deepseek_status, and deepseek_run by focusing specifically on cancellation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended usage is clear: use this when you need to stop a running DeepSeek task. However, it does not explicitly mention when not to use it or suggest alternative tools, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deepseek_profilesA
List sanitized Claude Code Haha providers and model ids. Never returns API keys, base URLs, or headers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It reveals a key behavioral trait: the tool returns sanitized data and 'Never returns API keys, base URLs, or headers.' This is a meaningful safety guarantee. It doesn't discuss error handling or auth, but for a simple read-only listing tool, this suffices.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the primary action front-loaded. Every word adds value: 'sanitized' sets expectations, 'providers and model ids' specifies output, and the second sentence clarifies exclusions. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list-only tool with no parameters and no output schema, the description fully covers what the agent needs to know: the output content (providers and model ids) and safety guarantees (no secrets returned). The sibling tool names provide context that this is a support tool for run management, so completeness is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100% (empty object). With no parameters to explain, the baseline for zero params is 4. The description does not need to compensate for parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('List') and resource ('sanitized Claude Code Haha providers and model ids'). It also adds a safety qualifier ('sanitized') and explicitly what it never returns. This distinguishes it from the sibling tools (status, start, wait, cancel, run), which are action-oriented.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. However, the verb 'List' and the resource 'providers and model ids' imply it is for retrieving profile information, contrasting with the action-oriented sibling names. No exclusions or alternative guidance is provided, so it's implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deepseek_runA
Run one complete A-to-B delegation: create a Haha session, select DeepSeek, execute, stream progress, and return the full result and file audit.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| modelId | No | Haha model id; defaults to deepseek-v4-flash | |
| workdir | Yes | Absolute project directory used by Haha Desktop | |
| objective | Yes | The complete implementation objective and plan from the planning model | |
| providerId | No | Haha provider id; omit to use the matching active provider | |
| constraints | No | ||
| allowedFiles | No | Allowed relative paths or glob patterns; violations are reported | |
| contextFiles | No | ||
| timeoutSeconds | No | ||
| acceptanceCommands | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses positive behaviors: it creates a session, selects DeepSeek, executes, streams progress, and returns a full result plus file audit. However, it remains silent on failure modes, timeout handling, error reporting, whether the call blocks until completion, or what side effects occur in the workdir. For a code-execution tool, these are material gaps, so this is only partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that states the action, enumerates the internal steps in sequence, and ends with the deliverable. Every phrase adds meaning; there is no filler, repetition, or vague abstraction. It is concise without sacrificing scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with 10 parameters, no annotations, and no output schema, yet the description is only one sentence. It covers the high-level flow but omits crucial context: preconditions (Haha Desktop, DeepSeek availability), error/failure semantics, synchronous vs asynchronous behavior, what the 'file audit' contains, and how the optional parameters influence execution. For an orchestration tool of this complexity, the description is under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (descriptions exist for objective, workdir, modelId, providerId, allowedFiles, but not for notes, constraints, contextFiles, timeoutSeconds, acceptanceCommands). The description itself adds zero parameter-level detail beyond mentioning 'file audit' (tangentially related to allowedFiles). It does not compensate for the undocumented parameters or clarify how timeouts, constraints, or acceptance commands behave. An agent would have to guess at the meaning of half the inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a precise verb ('Run') and a well-scoped resource ('one complete A-to-B delegation'), then enumerates the concrete steps performed (create session, select DeepSeek, execute, stream progress, return result and file audit). This makes the purpose unmistakable and clearly distinguishes it from the sibling tools (start/wait/cancel/status/profiles), which only cover stages of the pipeline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the full-pipeline entry point ('one complete A-to-B delegation'), but it never explicitly says when to use this tool versus deepseek_start, deepseek_wait, or deepseek_cancel. It also omits prerequisites (e.g., Haha Desktop running, an active DeepSeek provider) and any exclusions or alternative recommendations. Context is enough for a basic decision, but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deepseek_startC
Start a DeepSeek coding task asynchronously through Claude Code Haha Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| modelId | No | Haha model id; defaults to deepseek-v4-flash | |
| workdir | Yes | Absolute project directory used by Haha Desktop | |
| objective | Yes | The complete implementation objective and plan from the planning model | |
| providerId | No | Haha provider id; omit to use the matching active provider | |
| constraints | No | ||
| allowedFiles | No | Allowed relative paths or glob patterns; violations are reported | |
| contextFiles | No | ||
| timeoutSeconds | No | ||
| acceptanceCommands | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It only states that the task is started asynchronously, but says nothing about return values (e.g., task ID), side effects, failure modes, or how to check progress. This is thin for a tool that initiates a background coding task.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently communicates the core action, though it is arguably too terse given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters, no output schema, and no annotations, a one-sentence description is grossly incomplete. It omits how the async task is tracked, how to retrieve results via sibling tools (deepseek_status, deepseek_wait), what 'Haha Desktop' means, and what happens on failure or timeout. The sibling lifecycle is never referenced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-level information. Schema coverage is only 50%, leaving notes, constraints, contextFiles, timeoutSeconds, and acceptanceCommands undocumented. The description could have provided context on the 'objective' (the complete implementation plan) or clarified the relationship between parameters, but it doesn't, so it contributes nothing beyond the partial schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Start') and resource ('a DeepSeek coding task'), with the qualifier 'asynchronously' providing a clear distinction from the sibling 'deepseek_run' (presumably synchronous). However, it doesn't fully explain how it differs from other lifecycle tools beyond the async nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to choose this tool over deepseek_run (the likely synchronous counterpart) or how to orchestrate with deepseek_status, deepseek_wait, and deepseek_cancel. The word 'asynchronously' is the only implicit hint, which is insufficient for an AI agent selecting among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deepseek_statusA
Get current task state, recent events, final response, changed files, and warnings.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ||
| afterSequence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral transparency. It discloses the types of data returned (state, events, response, files, warnings) but omits details such as side effects (likely none, but not stated), error behavior for invalid task IDs, or any rate-limiting/retrieval semantics. The listing of outputs is helpful but leaves significant behavioral context undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that efficiently lists the tool's outputs. No redundant or extraneous words are present, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description provides only a high-level list of return values. It does not explain key parameters like 'afterSequence', nor does it cover behavior such as whether the tool polls or is one-shot, what happens on missing tasks, or whether it returns historical data. The tool is relatively simple but still leaves critical context absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description does not explain the parameters. 'taskId' is implicitly the identifier but 'afterSequence' is not mentioned at all, leaving its purpose (likely a sequence-based filter) ambiguous. The description fails to compensate for the schema's lack of parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Get') and the resource ('current task state, recent events, final response, changed files, and warnings'), making it distinct from sibling tools like deepseek_start or deepseek_cancel. The specific list of items returned provides a precise purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving status information but does not explicitly state when to use this tool versus alternatives like deepseek_wait. There is no mention of scenarios where a different tool would be more appropriate, though the context suggests it is for non-blocking status checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deepseek_waitB
Wait until a task emits a newer event or finishes. Use afterSequence to avoid repeated output.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ||
| timeoutMs | No | ||
| afterSequence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals the blocking nature (wait until newer event or finishes) and mentions that afterSequence prevents repeated output, but it omits critical behaviors such as timeout handling (e.g., does it throw or return partial results?), what happens if the task is already finished, and whether it returns event data or just a signal. This leaves major behavioral unknowns for a wait-based tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loaded with the primary purpose. The second sentence adds a concise usage tip. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations, output schema, and complete parameter descriptions, this description is insufficiently complete. It does not cover return values, timeout behavior, error cases, or how this tool fits with sibling tools. For a blocking/long-poll operation, many essential aspects are unaddressed, leaving the agent with significant uncertainty.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 explicitly clarifies afterSequence ('to avoid repeated output'), adding meaning beyond the schema. taskId and timeoutMs are not described, but their names and schema constraints (minimum/maximum) make their basic semantics inferable. The description partially compensates but does not fully explain parameter behavior, especially timeoutMs's role in blocking behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: 'Wait until a task emits a newer event or finishes.' This clearly describes the tool's core function and distinguishes it from sibling tools like deepseek_status (which likely checks status without blocking) and deepseek_run (which starts tasks). The focus on waiting for newer events or completion is a unique, well-defined purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool ('Wait until a task emits a newer event or finishes') and provides a specific usage tip: 'Use afterSequence to avoid repeated output.' However, it does not explicitly contrast with alternatives like deepseek_status or deepseek_cancel, nor does it state when not to use this tool. Usage guidance is present but implied rather than explicit.
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.
6 tool updates
v0.1.0- First observed
deepseek_cancel - First observed
deepseek_profiles - First observed
deepseek_run - First observed
deepseek_start - First observed
deepseek_status - First observed
deepseek_wait
TDQS
Scored across 6 tools
Each tool has a distinct role: profiles for listing, status for snapshots, start for async initiation, wait for polling, cancel for stopping, and run for full delegation. Start and run overlap slightly in that both initiate tasks, but run is explicitly end-to-end while start is async, making them distinguishable.
All tools share the deepseek_ prefix, with a mix of nouns (profiles, status) and verbs (start, wait, cancel, run). The pattern is consistent in that getters use nouns and actions use verbs, though a fully consistent verb_noun convention would be clearer.
Six tools is well-scoped for managing DeepSeek task delegation: listing options, checking status, starting, waiting, cancelling, and running end-to-end. Each tool earns its place without unnecessary redundancy.
The surface covers the full lifecycle: profile discovery, async start, status monitoring, waiting for completion, cancellation, and a combined run operation. A minor gap is the lack of an explicit 'list active tasks' tool, but status and wait cover most monitoring needs.
Maintenance
Related MCP Connectors
- ParleyOAuthdev.weldra
Coordination hub for AI coding agents: message teammates, ask humans, audit every event.
Build and supervise fleets of agents from Claude Code, Codex or Cursor. Connects over OAuth.
Your coding agent tells a coworker's agent what you found or changed. Invite-only.
Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.
Related MCP Servers
- FlicenseBqualityDmaintenanceBridges Claude Desktop with Claude Code CLI to delegate complex coding tasks like creating React apps, building APIs, and debugging scripts while maintaining interaction through the Desktop interface.51-
- AlicenseNot gradedqualityDmaintenanceConnects Claude Desktop and Claude Code, enabling autonomous exchange of messages, files, and code while keeping their context windows separate.4MIT
- AlicenseAqualityBmaintenanceA project-local MCP bridge that allows Codex Desktop to plan tasks and OpenCode to execute them within the current project directory, with session reuse and native OpenCode background subagents.41MIT
- AlicenseAqualityCmaintenanceBridges Codex to a local Claude Opus 5 collaborator via Claude Code, enabling controlled read-only consultation or write-capable tasks on allowed workspaces with independent verification.3MIT