quark-mcp
Click on "Install 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., "@quark-mcp生成一张星空下雪山的唯美壁纸"
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.
quark-mcp
Quark MCP Server — provides zero API cost vision, Q&A, and text-to-image capabilities through the AI conversation page built into the Quark browser (quark.cn/chat, Qwen).
Drives a dedicated-profile Quark browser via CDP + Playwright, uploads an image to the conversation page to ask questions, captures the reply, and returns it. No API key required.
Capabilities
Tool | Description |
| Plain-text Q&A (reuses the session, supports multi-turn context; |
| Image recognition/analysis (uploads an image to the conversation page, asks, and retrieves the reply) |
| Text-to-image (triggered by natural language, about 4 images per run, saved locally with the path returned) |
| Video analysis (download/local → extract frames with burned-in timestamps → tile into blocks → recognize; optional local transcription) |
| Starts the Quark daemon (dedicated profile, port 9224, idempotent) |
| Checks the daemon's running state and login status |
| Shuts down the Quark daemon |
Related MCP server: Percepta MCP Server
How it works
Claude Code ──MCP stdio──> server.py ──> quark_mcp/quark_ai.py ──CDP──> 夸克浏览器(独立 profile)
quark_mcp/video_analyze.py │
quark.cn/chat(网页版千问)Quark is launched with
--remote-debugging-port=9224using a dedicated profile; the login state is persistedImages are injected via DataTransfer (
JS_DROP_IMAGE) instead of a file chooser, and sending happens after the attachment list appearsReply completion criterion: the card class within
[data-chat-answers-wrap]for an AI reply turn containscompleted
Requirements
Python 3.10+
Quark browser (auto-detects the
QUARK_PATHenvironment variable or common install paths)video_analyzerequiresffmpeg/ffprobe(frame extraction) andpillow(burn timestamps, create tile grid)Optional:
yt-dlp(online video download),faster-whisper(transcribe=Trueaudio transcription)
Installation
pip install fastmcp playwright websocket-client
# 可选功能依赖
pip install pillow # 视频帧时间戳烧录 + 拼图(video_analyze 必需)
pip install yt-dlp # 在线视频下载(video_analyze 传 URL 时)
pip install faster-whisper # 音频转写(transcribe=True)The yt-dlp.exe installed via pip often lands in Scripts/ and is not on PATH; the code has a fallback: if the yt-dlp command is not found, it automatically uses python -m yt_dlp, so it works without configuring PATH.
Usage
1. As an MCP server (Claude Code, etc.)
{
"mcpServers": {
"quark-mcp": {
"command": "python",
"args": ["/path/to/quark-mcp/server.py"]
}
}
}2. HTTP mode (for debugging)
python server.py --port 80803. Direct CLI invocation (without MCP)
# 启动 daemon(首次需手动登录一次,登录态持久化)
python quark_mcp/quark_ai.py --start
python quark_mcp/quark_ai.py --status
# 纯文本问答
python quark_mcp/quark_ai.py --ask "帮我解释一下 CDP 是什么"
# 图片识别
python quark_mcp/quark_ai.py --image photo.jpg --question "请描述这张图片"
# 文生图(默认存 ~/.claude/quark-images)
python quark_mcp/quark_ai.py --gen "一只橘猫坐在窗台看夕阳,插画风格"
python quark_mcp/quark_ai.py --gen "复古黄铜怀表" --outdir ./imgs --max-images 2
# 视频分析(本地文件或 URL)
python quark_mcp/video_analyze.py --video demo.mp4
python quark_mcp/video_analyze.py --video demo.mp4 --transcribeImage generation notes
Model: follows the Quark conversation page default (Qwen); cannot be specified
Trigger: there is no separate "image generation" capability switch; it is triggered by natural language (describe in the prompt what should be drawn)
Aspect ratio: the web version has no aspect ratio selector; describe it in the prompt as text (e.g. "16:9 landscape")
Output: about 4 images per run, measured around 960×1280
Download: CDN URLs are signed with
auth_key, so images must be fetched through the browser context (page.request); bare urllib returns 403
# 返回结构
{"ok": True,
"images": ["C:/Users/.../.claude/quark-images/quark_20260823-103519_1.png", ...],
"text": "已生成 2 张图片, 保存至 ...",
"meta": {"found": 4, "details": [{"path": ..., "bytes": ..., "width": 960, "height": 1280}],
"model": "千问(夸克对话页默认)"}}Configuration
Quark path: set the
QUARK_PATHenvironment variable to specify the executableCDP port: defaults to
9224, seeCDP_PORTinquark_ai.py(kept distinct from doubao-mcp's 9223, so they can coexist)Login state: the dedicated profile is at
~/.claude/quark-ai-profile; after the firstdaemon_start, log in manually onceImage output directory: defaults to
~/.claude/quark-images, overridable withoutdir
Common issues
Exit code 1 (CDP unreachable / Quark not found): daemon not started; run
daemon_startfirst, or setQUARK_PATHExit code 2 (not logged in): open the conversation page and log in manually once
Exit code 3 (image problem): the path does not exist or the upload failed
Exit code 4 (interaction failed): the input box / send button was not found; usually a page redesign
Exit code 5 (timeout): generation is slow; increase the
timeout(image generation default 300s)Exit code 6 (empty result): the reply is empty or no image was produced; possibly risk control or filtered content
Page structure dependencies
Because this is pure web-page automation, a Quark redesign can break things. Currently verified dependencies (SEL in quark_ai.py, based on Quark 7.1.2.956 / Chromium 144 + web version 4.0.0):
Purpose | Selector |
Input box |
|
Send |
|
AI reply turn |
|
User question turn |
|
Completion marker |
|
Attachment |
|
Two gotchas:
The completion marker is
completedon the reply card, not the.qk-markdownmarkerqk-markdown-complete— the latter is a client-side panel convention, and the web version doesn't have it, so copying it verbatim will always give a "not finished" result.Text-to-image must wait for the "signed-image URL set to stabilize", not just for
completed— the text reachescompletedfirst, while the final image takes about another 45s to replace the placeholder animation. Only when the text iscompletedand thenIMAGE_GRACE(120s) passes with no image does the round be considered as not producing an image.
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to control browser automation through natural language prompts using Playwright, supporting visual element interaction, PDF generation, screenshots, and testing assertions.
- FlicenseNot gradedqualityDmaintenanceProvides browser automation, AI-powered analysis, visual processing, web scraping, automated test generation, and DevTools analysis capabilities. Supports multiple AI providers (OpenAI, Anthropic, Google, Ollama) for intelligent web interaction and data extraction.
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to execute browser automation, perform QA tasks, and generate test code through natural language commands using Playwright.5
- AlicenseAqualityCmaintenanceEnables terminal AI coding assistants to interact with web AI chat services through browser automation, supporting multiple platforms like Doubao and ChatGPT.310MIT
Related MCP Connectors
LLM chat, text summarization and AI image generation
AI QA tester — real browsers scan sites for bugs, SEO, perf, and accessibility issues via chat.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/007bba/quark-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server