
Ui Annotator Mcp
io.github.mcpware由 GitHub 帳號 mcpware 發布v0.1.6更新於 Oct 24, 2026
Annotates any web page with hover labels for AI assistants — zero extensions, any browser
概覽
本機 MCP 伺服器,透過反向代理為網頁元素加上可見標籤,讓助理與使用者用同一套元素名稱溝通。
- 可以做什麼
- 透過標註代理開啟頁面,取得可在任何瀏覽器開啟的代理網址
- 列出偵測到的介面元素及其名稱、選擇器與位置,並在頁面變動後強制重新掃描
- 閃爍標示指定名稱的元素,方便使用者確認所指對象
- 遠端切換檢查模式,開啟後暫停頁面互動並在點擊時複製元素名稱
- 滑鼠移入時顯示元素名稱、CSS 選擇器、內容預覽與尺寸
- 適用情境
- 適合在與 AI 程式助理一起檢視或迭代本機網頁介面、難以說清楚要改哪個元素時使用。它讓雙方以元件名稱溝通,而不是靠模糊描述或截圖。
- 執行需求
- 以 Node.js 套件形式透過 npx 在本機以 stdio 執行。被檢視的網頁需在本機連接埠可存取;代理預設監聽 7077 連接埠,可用 UI_ANNOTATOR_PORT 調整。不需帳號、金鑰或瀏覽器擴充功能。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Ui Annotator Mcp,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
UI Annotator MCP
[npm version] [npm downloads] [license] [GitHub stars] [GitHub forks]
English | 廣東話
Bridge the gap between what you see and what AI can reference — in any browser, zero extensions.
The only tool that puts visible labels on every web element. Hover any element, see its name. Tell your AI assistant "make the sidebar wider" — it knows exactly which element you mean. No screenshots, no CSS selectors, no miscommunication.
Why It Matters
Dramatically improves AI-driven UI design and iteration. The pain: telling AI "move that button next to the search bar" never works because the AI can't see your page. UI Annotator fixes this — hover over any element and its component name appears as a label. Now you say "move SearchButton below NavBar" and Claude edits the right component instantly. No browser extensions, works with any framework. The workflow becomes: open page → hover to identify elements → describe changes using real component names → Claude edits → refresh and repeat. Turns a frustrating back-and-forth into a fluid design loop.
The Problem
When reviewing a web UI with an AI coding assistant, the hardest part isn't the code change — it's describing which element you want changed.
"That thing on the left... the second row... no, the one with the icon..."
You don't know what it's called. The AI doesn't know what you're pointing at. You waste time on miscommunication instead of shipping.
The Solution
Open your page through the annotator proxy. Hover any element — instantly see its name, CSS selector, and dimensions. Now you both speak the same language.
That's it. No browser extensions. No code changes. No setup. Works in Chrome, Firefox, Safari, Edge — any browser.
How It Works
The proxy fetches your page, injects a lightweight annotation script, and serves it back. The script scans the DOM, identifies named elements, and reports them to the MCP server. Your AI assistant queries the server to understand what's on the page.
Features
Hover Annotations
Hover any element to see:
- Element name (pink) — the human-readable identifier
- CSS selector (monospace) — the technical reference
- Content preview — what text the element contains
- Dimensions — width × height in pixels
Inspect Mode
Click the Inspect button in the toolbar (or let your AI toggle it). In inspect mode:
- Click any element → copies its name to clipboard
- All page interactions are paused (clicks don't trigger buttons/links)
- Click Inspect again to return to normal mode
Collapsible Toolbar
The toolbar sits at the top center of the page showing:
- Inspect toggle button
- Element count
- Helpful subtitle explaining what to do
- Collapse button (▲) to minimize when not needed
MCP Tools for AI
Why Not Just Use DevTools?
DevTools is for debugging. UI Annotator is for communication — giving humans and AI a shared vocabulary for UI elements.
Why Not Use Existing Tools?
None of these do what UI Annotator does — live visual labels on every element via reverse proxy:
Feature Comparison
Architecture
Zero external dependencies
- Reverse proxy: Node.js built-in
httpmodule - MCP server:
@modelcontextprotocol/sdk(stdio transport) - Communication: HTTP POST (browser → server) + GET polling (server → browser)
- No WebSocket, no Express, no browser extension
How the proxy works
- User requests
localhost:7077/localhost:3847 - Proxy fetches
http://localhost:3847 - For HTML responses:
- Injects
fetch()/XMLHttpRequestinterceptor (rewrites API paths through proxy) - Rewrites
href="/..."andsrc="/..."attributes to route through proxy - Injects annotation script before
</body>
- Injects
- For non-HTML (CSS, JS, images): passes through directly
- Strips
Content-Security-Policyheaders to allow injected script
How annotation works
- Script scans DOM for elements with
id,class, semantic roles, or interactive roles - On hover: positions overlay border (follows
border-radius) + positions tooltip (always within viewport) - Reports all detected elements to server via
POST /__annotator/elements - Polls
GET /__annotator/commandsevery second for server instructions (highlight, rescan, inspect toggle) MutationObserverauto-rescans when DOM changes
Quick Start
With Claude Code
Manual
Environment Variables
More from @mcpware
License
MIT
來源:README.md,提交 6b89c1c
工具
0版本歷史
1- v0.1.6最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分