OpenWand MCP Server
This server provides read-only access to live desktop context, allowing MCP clients (e.g., Claude Desktop, Cursor) to observe what the user is currently doing on their desktop.
Get selected text (
get_selected_text): Reads text currently highlighted on the desktop. Falls back to clipboard if no selection is found.Get clipboard contents (
get_clipboard): Reads the user's current clipboard text — reliable on every platform and requires no window focus.Get active window info (
get_active_window): Reports the active application, window title, and browser URL (when applicable).Read browser page (
read_browser_page): Reads the full text content of the visible browser page (Chrome, Edge, Firefox, Safari, etc.), returning both the URL and page text. Supports an optionalmax_charslimit.Take a screen snip (
take_screen_snip): Captures a screenshot of the primary monitor and returns it as an image.
Enables text-to-speech synthesis using ElevenLabs' cloud voice models.
Allows AI assistance via GitHub Copilot's model, useful for code-related queries.
Integrates with Google's AI models for language tasks.
Provides access to Hugging Face's model inference API.
Utilizes NVIDIA's AI model endpoints for text generation.
Offers integration with OpenAI's models including GPT series.
Integrates with Vercel's AI models for inference.
OpenWand
OpenWand aims to be the go-to app for AI co-work. No more switching windows, no more copy-pasting. All you need to do is prompt.
OpenWand keeps AI beside you while you work. Prompt AI with context automatically fetched, or add them manually with just one click. It is completely free, cross-platform, extensible, permissively licensed, and Python-first, so you can choose how it works and which model runs behind it.
Languages: English | 简体中文 | 繁體中文 | Français | Español
Website: OpenWand Docs
Quick start | How it works | Demos | Configuration | Free APIs | Privacy

Why OpenWand
OpenWand keeps you productive by making AI prompting a natural, seamless part of your workflow.
Prompting, side by side
Typical AI chat — 8 steps | OpenWand — as few as 2 |
1. Find and copy the first piece of context.2. Switch to an AI chat.3. Paste it in.4. Repeat until the model has everything it needs.5. Type your prompt.6. Send the request.7. Wait for the response.8. Read it, then switch back to your work. | 1. Press a hotkey to open OpenWand.2. Run a preset prompt. |
Your selected text and the context sources you enabled in the settings are gathered automatically. If needed, enabling a context source is just one click away. Then choose a preset prompt, or enter a custom prompt.
Related MCP server: macos-screen-mcp
How OpenWand Works
OpenWand gives you access to AI from anywhere on your desktop. With reusable prompts at your fingertips, automatic context gathering, and one-click access to additional sources, every request takes fewer steps.
Prompting AI
You: Press a hotkey → (Add context) → Choose a reusable or custom prompt
OpenWand: Gather and preview context → (Check privacy and prompt injection) → Ask your chosen model → Show the answer
Ask AI to rewrite in Place
You: Select text → Press the rewrite hotkey → (Add context) → Choose a rewrite → Accept
OpenWand: Capture the selection → (Check privacy and prompt injection) → Write answer → Show a preview → Paste it back
Actions in parentheses are optional.
Highlights
Skip the setup. Just prompt. — Prompt from anywhere without worrying about context.
Better-presented answers — Every response becomes polished HTML and CSS locally, without an extra model call or cost.
Codex and Claude integration — Run either agent directly through OpenWand.
Private mode — Optional warnings and redaction for sensitive context.
Highly customizable — Customize hotkeys, prompts, context, models, voice, paste-back, and the interface.
Powerful, but approachable — OpenWand makes models, privacy, memory, and context easy to control.
Controllable context within one click — OpenWand handles context automatically or with a single click.
Typing is optional — Speak your prompt and listen to the answer.
Ask about anything on screen — Draw a region and turn it into visual context instantly.
Rewrite in place — Rewrite selected text, review it, and paste the result back where it was.
Use any model you want — Support many popular cloud providers, local models, or any OpenAI-compatible server.
Memory you control — Keep optional short- and long-term memory locally, where you can review or delete it.
Extend everything — Add new prompts, actions, hotkeys, hooks, and model tools through addons and MCP.
Multi-agent work made simple — Build your team through a visual interface with plain-language guidance, then follow its progress and review the results.
Demos
Workflow
Your side | What OpenWand does |
Highlight text, choose context, or draw a snip | Captures only the selected or enabled context |
Press the caller hotkey and choose an action or custom prompt | Builds the model request from your prompt and chosen context |
Send the request | Sends it directly to your configured model provider |
Wait for the answer | Streams the reply into a bubble, with optional auto-speak TTS |
Keep useful information for later | Stores memory locally only when memory is enabled |
Common Shortcuts
When you want to... | With OpenWand |
Understand selected text | Select it, open OpenWand, and choose |
Rewrite without copy-pasting | Select the text, choose a rewrite, review it, and paste the accepted version back in place. |
Ask your own question | Enter a custom prompt. Enabled context is already attached; additional sources are one click away. |
Ask about anything on screen | Press |
Prompt without typing | Press |
Dictate into any app | Press |
Quick Start
Download the App
Download the latest version from GitHub Releases.
Extract it and launch OpenWand.
Open Settings and connect your model.
You can install OpenWand before choosing a model connection. If you do not have one yet, start with one of the 20+ free and trial API sources, or connect a local model.
Windows | macOS | Linux |
|
|
|
Run from Source
OpenWand requires Python 3.12.
git clone https://github.com/SunnyLich/OpenWand.git
cd OpenWandRun the launcher for your platform:
Windows | macOS | Linux |
|
|
|
The first launch provisions the Python environment and installs dependencies. Later launches go straight into the app.
To package OpenWand yourself, see Building an EXE.
System Requirements
Level | Requirements | Best for |
Minimum | Windows 10+, macOS 13+, or Linux X11; 4 GB RAM; 2 GB free disk | Core overlay features with a cloud or free API |
Recommended | 8 GB+ RAM; 6 GB+ free disk; microphone for voice features | Local speech, the optional 2.8 GB advanced privacy filter, and more working room |
Local AI models may need substantially more RAM, VRAM, and storage depending on the model. Screen capture, global hotkeys, paste-back, and voice may request the corresponding OS permissions when you use them.
Configuration
Use the Settings window for normal setup. .env.example is only a reference for advanced source configuration.
Open Settings.
Choose a conversation engine.
Connect your provider or account.
Customize context, hotkeys, voice, privacy, and memory.
Run Setup Check.
Choose Your Harness
Harness | Behavior |
OpenWand | Uses the LLM provider and model configured in OpenWand. |
ChatGPT | Uses the installed Codex CLI and your ChatGPT/Codex account. |
Claude Agent | Uses Claude Agent with your Claude Code account. |
Agent Controls
Continuity — Keep the conversation in OpenWand or resume it with ChatGPT or Claude.
Live progress — Follow replies, plans, tool activity, file status, and approval requests.
Permissions — Ask before changes, allow project changes, or use read-only plan mode.
Project scope — Agent writes stay inside the selected project; changing projects starts a new session.
History — Import, optionally sync, or export ChatGPT/Codex and Claude conversations.
Good to Know
Provider keys and OAuth tokens are stored in your OS keychain, not a plain-text configuration file.
Advanced source settings are documented in
.env.example.See the live-agent guide or browse the free model API sources for more.
Default Hotkeys
Hotkey | Action |
| Open the general action picker |
| Open the rewrite/paste action picker |
| Draw a screen snip for vision |
| Add the current selection to the context buffer |
| Clear the context buffer |
| Read the selected text aloud |
| Record voice, transcribe, and query |
| Direct dictation into the focused text field |
| Trigger built-in action rows |
| Custom prompt mode |
| Cancel the picker |
Every caller, hotkey, label, prompt, context source, paste-back setting, and UI dimension is configurable from Settings.
Addons
Deeply extensible, OpenWand transforms with addons - new features, new workflows, new possibilities. Each addon declares its author and requested OpenWand access before activation; an update asks again only when that access expands. Addons run in separate Python processes, and publisher-declared packages stay in dedicated virtual environments. Full-code addons still run with your normal user permissions, so install only addons you trust.
In portable packaged builds, OpenWand creates an addons folder next to OpenWand.exe
when that folder is writable. Alternatively, use Addon Manager -> Open addons folder to open the fallback user-writable addon
directory.
An addon can hook into OpenWand at several points:
Context - read or rewrite the prompt and context before a query is sent.
Tools - register model-callable tools the model can invoke mid-answer.
Responses - observe completed responses to log, save, or forward them.
Actions and hotkeys - add its own action rows and global hotkeys with custom prompts.
UI - contribute tray actions, settings fields, and notifications.
LLM actions - run its own capped model calls from a hook or hotkey.
What addons can do: because an addon can inject context, expose tools, and react to responses, the surface is broad. A few examples, and the hook each one uses:
You want to... | Hook | Manifest needs |
Pull your git diff, calendar, or an open ticket into the prompt automatically | Context ( |
|
Give the model a tool to search an internal wiki, query a database, hit a weather or stock API, or toggle a smart-home device | Tools ( |
|
Redact or tag sensitive context on its way out for compliance | Context ( |
|
Append every answer to a daily journal, or push it to Notion or Slack | Responses ( |
|
Add a one-key "rewrite this in our house style" action backed by its own prompt | Actions and hotkeys |
|
If you can write it in Python and it fits one of the hook points above, you can wire it into the same hotkey-driven overlay you already use.
MCP Client and Server
MCP Client: use external servers inside OpenWand
OpenWand ships with an MCP bridge addon (addons/mcp_bridge) that acts as an MCP client: list any Model Context Protocol servers in its servers.json and OpenWand exposes their whole toolkit to its model as OpenWand tools. This lets the overlay use external MCP capabilities without leaving the desktop workflow. See the Addon guide for the full manifest and hook contract, or the Add-ons documentation.
MCP Server: OpenWand Context Server
OpenWand also ships a local MCP stdio server called OpenWand Context Server. Trusted MCP clients such as Claude Desktop, Cursor, and Codex can launch it to read live desktop context; the OpenWand app itself does not need to stay open.
Tools
OpenWand Context Server provides five read-only tools:
get_selected_text— the text currently selected on the desktop.get_clipboard— clipboard text.get_active_window— the active app, window title, and browser URL when available.read_browser_page— text from the visible browser page.take_screen_snip— a screenshot of the primary monitor.
Connect a client
Start OpenWand once, then copy the mcpServers entry from addons/mcp_bridge/claude_config_snippet.json into your MCP client's configuration. OpenWand generates this snippet with the correct local path to its own Python interpreter and addons/mcp_bridge/context_server.py; do not substitute system Python. See the MCP Bridge server setup guide for platform notes and troubleshooting.
Only register the server with clients you trust: tool results can contain selected text, clipboard content, browser content, and screenshots from your desktop.
Privacy and Control
OpenWand has no hosted storage layer.
Area | What happens |
Local data | Settings, chats, memory, privacy reports, and configuration stay on your machine. |
Model requests | Your prompt and enabled context go directly to the provider or local server you choose. |
Credentials | Provider keys and OAuth tokens are stored in your OS keychain. |
Context previews | Sources and token estimates are inspected locally without being sent or saved. |
Permissions | Context sources and model tools are controlled separately; optional features remain off until configured. |
Addons | Each addon runs in an isolated process and declares the access it needs. |
Privacy Modes
Mode | Protection |
Off | Sends your chosen context without privacy redaction. |
Built-in | Locally detects structured secrets such as credentials, tokens, and payment details. |
Advanced | Adds the optional local OpenAI Privacy Filter for names, addresses, private URLs, account details, and other sensitive information. |
Advanced mode is an optional download of about 2.8 GB and may need time to warm up. It can reduce accidental disclosure, but cannot guarantee that every piece of sensitive information will be detected.
Prompt Injection Protection
When enabled, OpenWand checks captured text for attempts to override the model's instructions and lets you continue or cancel before sending.
For security vulnerabilities, read the Security Policy. Do not include vulnerability details, credentials, captured context, or private logs in a public issue.
Platform Status
Platform | Status |
Windows 10+ | Supported |
macOS 13+ | Supported* |
Linux X11 | Supported |
Linux Wayland | In progress - Wayland support is currently being worked on |
*This application was only tested on macOS during two weeks of major development, and I cannot test it afterward due to limited hardware access. If you find bugs on macOS, please create an issue on this repo and I will try my best to fix them. Better yet, if you can provide a solution, please create a pull request.
Help and Feedback
When reporting a bug, include your OS version, launcher, logs, and the action that triggered it. Logs can contain captured text, so remove credentials and personal information before sharing them.
We are currently working on Linux Wayland support, and help testing or improving it is especially useful. macOS support testing is also welcome; these platforms have the most native integration edge cases, so real-world reports from different machines, desktop environments, and permission states make OpenWand better for everyone.
If you want to support this project and the broader mission, you can contribute to the development directly or make a donation here.
Developer README - setup, runtime entrypoints, checks, and debugging notes.
Code overview - subsystem ownership and runtime boundaries.
Addon guide - addon manifest, permissions, hooks, tools, hotkeys, and packaging.
Building an EXE - Windows packaging notes.
Free Model API Sources
Start using OpenWand at no cost with a free API or locally hosted model. Explore more than 20 free and trial API sources, plus local options, in our guide.
License
MIT
Available Tools
5 toolsget_active_windowA
Report the window the user is working in (title, app, URL when it is a browser), skipping the assistant's own window.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it skips the assistant's own window, but with no annotations, it omits details on permissions, rate limits, or side effects; adequate but not comprehensive.
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?
Single sentence, 18 words, no redundancy, front-loaded with purpose.
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?
Covers key behavioral details and output scope, but lacks output format specification. Adequate for a simple read tool with no parameters.
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?
No parameters in schema; description correctly adds no param info. Baseline 4 for zero-param tools.
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?
Description clearly states the tool reports the active window's title, app, and URL for browsers, explicitly excluding the assistant's own window, distinguishing it from siblings.
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 guidance on when to use this tool versus siblings like get_clipboard or read_browser_page; lacks explicit context or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_clipboardA
Read the user's current clipboard text. Reliable on every platform and needs no window focus — the fallback when get_selected_text returns nothing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 two key behavioral traits: cross-platform reliability and no need for window focus. It doesn't mention return format or failure modes, but for a simple clipboard read, these traits add meaningful value beyond the tool's name.
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, well-structured sentence. It front-loads the core purpose, then adds reliability and usage context, with no redundant words.
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 no parameters and no output schema, the description fully covers the essential information: what it reads, when to use it (fallback), and a key advantage (no focus needed). Sibling differentiation is handled, making this complete in context.
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 is empty, so the description does not need to explain parameters. Per baseline for 0-param tools, a score of 4 is appropriate; the description adds no parameter details because none exist.
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 starts with a specific verb and resource: 'Read the user's current clipboard text.' It clearly distinguishes itself from the closest sibling by positioning as 'the fallback when get_selected_text returns nothing', making its unique role explicit.
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?
It provides explicit usage guidance: use as fallback when get_selected_text returns nothing. It also adds context that it is reliable on all platforms and needs no window focus, helping the agent decide when this tool is preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selected_textA
Read the text the user currently has highlighted on their desktop. Works best when the selection is in the app the user last used. If this returns no selection, ask the user to copy the text and call get_clipboard instead.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses behavioral traits such as the dependency on the last used app and the recommended fallback to clipboard. It implies it is read-only and non-destructive, but could be more explicit about return type or permissions. Overall, it adds useful context beyond the schema.
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 three short sentences, each with a clear purpose: primary function, optimal usage context, and fallback instruction. No unnecessary words, and information is front-loaded.
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?
The description covers the main task, usage context, and alternative. It lacks details about the return format (e.g., string) but for a simple read tool with no output schema, it is fairly complete. It adequately serves an AI agent's needs.
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 input schema has zero parameters, so the description is not required to explain them. The baseline for no parameters is 4, and the description does not need to add parameter info. It focuses on the tool's behavior, which is appropriate.
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 reads highlighted text from the desktop. It differentiates from sibling tools like get_clipboard by describing when to use each. The verb 'Read' and resource 'text the user currently has highlighted' are specific and unambiguous.
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 provides explicit guidance on when to use this tool versus the alternative get_clipboard. It says to use get_clipboard if get_selected_text returns no selection. It also notes it works best when the selection is in the last used app, giving context for optimal use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_browser_pageA
Read the text of the page open in the user's visible browser window (Chrome, Edge, Firefox, Safari...), even when the browser is not focused. Returns the URL plus the page text.
| Name | Required | Description | Default |
|---|---|---|---|
| max_chars | No | Optional cap on returned characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly indicates a read-only operation, specifies that it works across major browsers, notes it functions even when the browser is unfocused, and states the return value (URL plus page text). It could mention limitations like non-text content or missing permissions, but it is transparent for this simple 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?
Two concise, well-structured sentences: the first states the primary action and scope, and the second states the return value. There is no redundant information or padding.
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 tool with one optional parameter and no output schema, the description is sufficiently complete. It explains the input scope, cross-browser support, unfocused-window behavior, and the exact return contents, leaving little ambiguity for an agent selecting or invoking it.
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 single parameter max_chars is already fully described in the schema as 'Optional cap on returned characters', giving 100% schema coverage. The description does not add further parameter-level detail, so the baseline score of 3 is appropriate.
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 ('Read the text of the page'), the target resource ('page open in the user's visible browser window'), and even enumerates supported browsers. It distinguishes itself from sibling tools like get_selected_text or take_screen_snip by specifying it captures full page text plus URL.
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?
It provides clear context for when to use the tool: when you need the text of the currently visible browser page, even if the browser is not focused. It does not explicitly state when not to use it or name alternatives, but the scope is understandable from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_screen_snipA
Take a screenshot of the user's primary monitor and return it as an image. Use when the user asks about something visible on their screen.
| 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 must carry full behavioral disclosure. It states the action and outcome (screenshot returned as image) but omits details like permissions, output format, or potential side effects.
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?
Two concise sentences with no wasted words. Front-loaded with the core action, followed by usage guidance.
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?
The tool is simple with no params, but the description lacks details about the output format (e.g., image type, encoding) and error handling. For a screenshot tool, these are relevant for agent invocation.
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?
No parameters exist, so schema coverage is 100%. With 0 parameters, baseline is 4; the description adds no param info since none needed.
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 takes a screenshot of the primary monitor and returns an image. It implicitly distinguishes from siblings by specifying 'visible on their screen' vs. active window, clipboard, etc.
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?
Explicitly says 'Use when the user asks about something visible on their screen,' providing clear context. It does not list exclusions, but the sibling tools imply alternatives.
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. Dates show when Glama detected each change.
2 tool updates
v0.10.3- Added
get_clipboard - Added
read_browser_page
2 tool updates
v0.10.2- Removed
get_clipboard - Removed
read_browser_page
1 tool update
v0.10.1- Added
get_selected_text
1 tool update
v0.10.0- Removed
get_selected_text
5 tool updates
v0.9.0- First observed
get_active_window - First observed
get_clipboard - First observed
get_selected_text - First observed
read_browser_page - First observed
take_screen_snip
TDQS
Each tool captures a distinct source of user context: selected text, clipboard, active window, browser page, and screenshot. There is no overlap in purpose, and the descriptions clearly differentiate when to use each (e.g., selected text vs clipboard fallback).
All five tools follow the verb_noun pattern with snake_case: get_selected_text, get_clipboard, get_active_window, read_browser_page, take_screen_snip. The verbs (get, read, take) are appropriately descriptive and consistent in style.
Five tools is well within the ideal 3-15 range and perfectly scoped to the server's purpose of reading user desktop state. Each tool earns its place with no redundancy or bloat.
The set covers all primary ways an agent can acquire user context from the desktop: selection, clipboard, active window info, browser content, and visual screenshot. No obvious gaps exist for the stated purpose.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
An agent-first office suite Claude & ChatGPT read and write over one MCP URL.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceGUI automation MCP server that enables AI agents to see and control the Windows desktop using a local Vision LLM (Ollama), supporting screenshot analysis, mouse/keyboard actions, and autonomous task execution.4MIT
- AlicenseAqualityDmaintenanceAn MCP server that lets AI assistants see your macOS desktop, capture screenshots, read browser tabs, and preview files via local macOS tools.420MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server that gives AI assistants full control over your desktop — monitor system resources, manage windows, capture screenshots, control the clipboard, launch applications, and more.MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that gives any AI assistant eyes and hands on your desktop — screenshots, clicking, typing, OCR, window management, accessibility-tree queries, workflow recording.5Apache 2.0
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/SunnyLich/OpenWand'
If you have feedback or need assistance with the MCP directory API, please join our Discord server