mcp-vnc
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., "@mcp-vncTake a screenshot of the desktop so I can see what's on the screen"
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.
💻 mcp-vnc
A Model Context Protocol (MCP) server that enables AI agents to remotely control Windows, Linux, macOS or anything else that can run a VNC server (don't worry, it's probably fine).

🚀 Quick Start
Install from NPM
npm install -g @hrrrsn/mcp-vncInstall from Source
git clone https://github.com/hrrrsn/mcp-vnc
cd mcp-vnc
npm install
npm run buildRelated MCP server: windows-computer-use-mcp
⚙️ Configuration
Claude Desktop
Locate and open your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Add the following configuration:
Using NPM Install:
{
"mcpServers": {
"vnc-controller": {
"type": "stdio",
"command": "mcp-vnc",
"env": {
"VNC_HOST": "192.168.1.100",
"VNC_PORT": "5900",
"VNC_PASSWORD": "your-vnc-password"
}
}
}
}Built from Source:
{
"mcpServers": {
"vnc-controller": {
"type": "stdio",
"command": "node",
"args": ["dist/index.js"],
"cwd": "/path/to/mcp-vnc",
"env": {
"VNC_HOST": "192.168.1.100",
"VNC_PORT": "5900",
"VNC_PASSWORD": "your-vnc-password"
}
}
}
}VS Code
Please refer to the VS Code documentation
🛠️ Available Tools
The MCP server provides the following tools for remote desktop control:
🖱️ Mouse Control
Parameter | Required | Type | Description | Default |
| ✅ | number | X coordinate | - |
| ✅ | number | Y coordinate | - |
| ❌ | string | Mouse button ( |
|
| ❌ | boolean | Double-click instead of single click |
|
Example: vnc_click(x=100, y=200, button="right", double=true)
Parameter | Required | Type | Description |
| ✅ | number | X coordinate |
| ✅ | number | Y coordinate |
Example: vnc_move_mouse(x=500, y=300)
⌨️ Keyboard Control
Parameter | Required | Type | Description |
| ✅ | string | Key or key combination to press |
Supported Keys:
Single keys:
a,Enter,F1,Escape,Up,Down,Tab,SpaceKey combinations:
Ctrl+c,Alt+F4,Ctrl+Alt+Delete,Shift+TabModifiers:
Ctrl,Alt,Shift,Super/Win,Meta/Cmd
Examples:
vnc_key_press(key="Enter")vnc_key_press(key="Ctrl+Alt+Delete")
📝 Text Input
Parameter | Required | Type | Description | Default |
| ✅ | string | Text to type | - |
| ❌ | boolean | Press Enter after typing |
|
Example: vnc_type_text(text="Hello World!", enter=true)
Parameter | Required | Type | Description |
| ✅ | string[] | Array of lines to type |
Example: vnc_type_multiline(lines=["Line 1", "Line 2", "Line 3"])
📸 Screen Capture
Parameter | Required | Type | Description | Default |
| ❌ | number | Delay before screenshot (0-300000ms) |
|
Example: vnc_screenshot(delay=1000) - Wait 1 second before capture
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
Available Tools
6 toolsvnc_clickC
Click at specified coordinates
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X coordinate | |
| y | Yes | Y coordinate | |
| button | No | Mouse button | left |
| double | No | Double-click instead of single click |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral details such as coordinate system, click simulation mechanics, or consequences of invalid coordinates. Minimal information beyond the action.
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 with no redundancy. However, it may be overly brief, sacrificing clarity for brevity.
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?
With 4 parameters, no output schema, and no annotations, the description should provide context on coordinate system, return values, and edge cases. It fails to do so, leaving gaps for agent understanding.
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 coverage is 100%, so parameters are well-documented in the schema. The description adds no extra meaning; 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 'Click at specified coordinates' clearly states the action (click) and the resource (coordinates). It distinguishes from sibling tools like vnc_move_mouse and vnc_key_press, though it doesn't explicitly differentiate click types.
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 vs alternatives (e.g., vnc_move_mouse for moving without clicking) or when not to click (e.g., out-of-bounds coordinates).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vnc_key_pressB
Press a key or key combination
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Key to press. Single keys: "a", "Enter", "F1". Combinations: "Ctrl+c", "Alt+F4", "Ctrl+Alt+Delete", "Shift+Tab" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only states the action; lacks details like key release behavior, hold duration, or any side effects. Minimal transparency beyond the basic operation.
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?
One compact sentence, but under-specified. Could include brief usage notes without being verbose.
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 no annotations and no output schema, description should clarify behavior (e.g., key release, repeated presses, modifier handling). It only states the basic action, missing important behavioral 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?
Schema coverage is 100% with examples in parameter description. Tool description adds no additional meaning beyond what's already in the input 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?
Description specifies verb 'press' and resource 'key or key combination'. Differentiates from siblings like vnc_click (click mouse) and vnc_type_text (type text) which are distinct actions.
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?
Implied usage for pressing keys or combos. No explicit when-to-use or when-not-to-use, nor alternatives. Sibling tools exist but no guidance on choosing between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vnc_move_mouseB
Move mouse to specified coordinates
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X coordinate | |
| y | Yes | Y coordinate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose whether movement is absolute or relative, instantaneous or animated, or what side effects (e.g., triggering hover events) may occur. Minimal behavioral context.
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 with no unnecessary words. Efficiently communicates the tool's 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?
For a simple mouse move operation with high schema coverage, the description is minimally adequate. However, it omits coordinate reference (e.g., screen vs. window), which may cause ambiguity for complex use cases.
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 coverage is 100% (both x and y have descriptions). The description adds no additional meaning beyond 'X coordinate' and 'Y coordinate', so baseline 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 'Move mouse to specified coordinates' uses a specific verb ('move') and resource ('mouse'), clearly stating the action. It differentiates from sibling tools like vnc_click and vnc_key_press, which perform other actions.
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 alternatives like vnc_click or vnc_type_text. The description does not mention exclusions or context, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vnc_screenshotB
Take a screenshot of the current screen
| Name | Required | Description | Default |
|---|---|---|---|
| delay | No | Delay in milliseconds before taking screenshot (useful for waiting for processes to complete) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, but it only states 'Take a screenshot of the current screen'. It does not disclose behavior such as whether the screenshot is returned or saved, if it captures all monitors, or any 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?
The description is a single sentence with no wasted words, but it is too terse and omits important context. It could be improved by front-loading purpose and adding brief usage hints.
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 tool's simplicity (one optional parameter, no output schema), the description is incomplete. It fails to mention what happens after taking the screenshot (e.g., returns an image file or base64 data), leaving the agent without critical information.
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 coverage is 100% and the schema already describes the delay parameter. The description adds no extra meaning to the parameter beyond the 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 clearly states the tool's purpose: taking a screenshot. It uses a specific verb 'Take' and resource 'screenshot', and it is distinct from sibling tools (e.g., vnc_click).
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 alternatives. The description does not mention use cases, prerequisites, or situations where other tools would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vnc_type_multilineB
Type multiple lines of text, separated by newlines
| Name | Required | Description | Default |
|---|---|---|---|
| lines | Yes | Array of lines to type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only states the basic action, omitting details on prerequisites, side effects, or handling of special characters. Minimal transparency.
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, front-loaded with key information, no wasted words. Efficiently conveys the core 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?
For a simple one-parameter tool, the description is adequate but incomplete. It lacks behavioral details like whether it simulates keypresses or requires focus. Could be more comprehensive given no output schema.
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 coverage is 100% with a clear description of 'lines' as array of strings. The description adds that lines are separated by newlines, which is a minor enhancement. Baseline 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 states the tool's function: typing multiple lines of text separated by newlines. It uses a specific verb and resource, and the context of sibling tools like vnc_type_text implies differentiation.
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 is provided on when to use this tool versus alternatives like vnc_type_text or vnc_key_press. The description does not specify context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vnc_type_textC
Type text string
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Single line of text to type | |
| enter | No | Press Enter after typing text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states 'Type text string', omitting critical details such as whether typing is into a focused VNC element, any potential side effects, or required session state.
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 minimal (three words) with no wasted content, but it is arguably too sparse to be effective. It lacks necessary context such as usage hints, making it more under-specified than concisely informative.
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 simple tool with well-documented schema parameters, the description fails to provide essential context about the VNC environment, such as that typing occurs in a remote desktop session. The absence of an output schema and annotations further reduces completeness.
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 100% with both parameters having clear descriptions. The tool description adds no additional meaning beyond the schema, warranting the baseline score of 3 by the rubric's rule.
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 'Type text string' clearly states the verb ('type') and resource ('text string'), making the tool's basic function obvious. However, it does not explicitly distinguish itself from the sibling tool 'vnc_type_multiline', which likely types multiple lines, missing an opportunity to clarify single-line behavior.
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 no guidance on when to use this tool versus alternatives like vnc_type_multiline or vnc_key_press. There is no mention of prerequisites, contexts, or exclusions, leaving the agent without decision-making support.
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.
6 tool updates
v1.0.2- First observed
vnc_click - First observed
vnc_key_press - First observed
vnc_move_mouse - First observed
vnc_screenshot - First observed
vnc_type_multiline - First observed
vnc_type_text
TDQS
Each tool targets a distinct VNC action: clicking, key pressing, mouse moving, screenshotting, and text typing (single and multiline). There is no ambiguity between the two text typing tools as they are differentiated by line count.
All tools follow a consistent verb_noun pattern with the 'vnc_' prefix (e.g., vnc_click, vnc_key_press, vnc_type_text). The naming is uniform and predictable, aiding agent selection.
With 6 tools, the server is well-scoped for basic VNC remote control operations. Each tool serves a clear purpose without being excessive, fitting neatly within the ideal 3-15 range.
The tool set covers essential GUI interactions (click, type, move, screenshot) but lacks common operations like scrolling or right-click. This is a minor gap that may require workarounds for some tasks.
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 Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
MCP server for agentverse documentation, generated by doc2mcp.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA standalone MCP server for Windows desktop control, enabling screenshots, mouse and keyboard input, app launch, window/display management, and clipboard access via natural language.1MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that gives AI agents human-like control over Windows via visual perception and simulated mouse and keyboard input, enabling automation of any application without APIs.312MIT
- AlicenseNot gradedqualityCmaintenanceA lightweight MCP server that enables AI agents to seamlessly integrate with Windows, performing tasks like file navigation, application control, UI interaction, and QA testing.1MIT
- AlicenseNot gradedqualityCmaintenanceA local, dependency-free MCP server that gives AI agents controlled access to the active Windows desktop, enabling automated interaction with applications through screenshots, clicks, typing, and window management.87MIT
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/hrrrsn/mcp-vnc'
If you have feedback or need assistance with the MCP directory API, please join our Discord server