Hotkeyless Ahk Mcp

Created By
tim0-12432a month ago
MCP server for Hotkeyless AHK HTTP API. It lets your agent control your whole computer through hotkeys.
Overview

Hotkeyless AHK MCP and Skills

License: MIT AHK Version MCP Claude Support OpenCode Support Github Copilot Support

This repository provides:

  • A TypeScript MCP server that wraps the Hotkeyless AHK HTTP API.
  • Reusable skill documents for OpenCode, Claude, and generic agent runtimes.
  • Practical examples for desktop automation scenarios.

Workspace layout

packages/
  mcp-server/   # Node MCP server package
  skills/       # Agent skill documents
examples/       # End-to-end usage examples

  1. MCP server
  1. Agent skills

MCP server

Quick start

OpenCode

opencode.json:

{
  ...
  "mcp": {
    ...
    "hotkeyless-ahk": {
      "type": "local",
      "command": ["npx", "-y", "@tim0_12432/hotkeyless-ahk-mcp-server"],
      "enabled": true,
      "environment": {
          "BLACKLIST": "shutdown,restart,kill"
          ...
      }
    }
  },
  ...
}

ClaudeCode

.mcp.json:

{
  "mcpServers": {
    ...
    "hotkeyless-ahk": {
      "command": "npx",
      "args": ["-y", "@tim0_12432/hotkeyless-ahk-mcp-server"],
      "env": {
        "BLACKLIST": "shutdown,restart,kill"
        ...
      }
    }
  }
}

Github Copilot

mcp-config.json:

{
  ...
  "mcpServers": {
    ...
    "hotkeyless-ahk": {
      "type": "local",
      "command": "npx",
      "args": ["-y", "@tim0_12432/hotkeyless-ahk-mcp-server"],
      "env": {
        "BLACKLIST": "shutdown,restart,kill"
          ...
      },
      "tools": ["*"]
    }
  },
  ...
}

Build from source

Follow instructions here.

1. Build server

bun install
bun run build

npm should also work without problems!

2. Setup your harness

OpenCode

opencode.json:

{
  ...
  "mcp": {
    ...
    "hotkeyless-ahk": {
      "type": "local",
      "command": ["node", "<absolute path to the built files>/mcp-server/dist/index.js"],
      "enabled": true,
      "environment": {
          "BLACKLIST": "shutdown,restart,kill"
          ...
      }
    }
  },
  ...
}
ClaudeCode

.mcp.json:

{
  "mcpServers": {
    ...
    "hotkeyless-ahk": {
      "command": "node",
      "args": ["<absolute path to the built files>/mcp-server/dist/index.js"],
      "env": {
        "BLACKLIST": "shutdown,restart,kill"
        ...
      }
    }
  }
}
Github Copilot

mcp-config.json:

{
  ...
  "mcpServers": {
    ...
    "hotkeyless-ahk": {
      "type": "local",
      "command": "node",
      "args": ["<absolute path to the built files>/mcp-server/dist/index.js"],
      "env": {
        "BLACKLIST": "shutdown,restart,kill"
          ...
      },
      "tools": ["*"]
    }
  },
  ...
}

Hotkeyless AHK API contract

  • GET /list returns JSON array of { command: string, note: string }
  • GET /send/<command> accepts query parameters

Configuration

Default config is at mcp-server/dist/infrastructure/config/config.ts.

Environment overrides:

Parameter overrideWhat it doesDefault
BASE_URLAdress of the Hotkeyless AHK serverhttp://localhost:42800
TIMEOUT_MSTimeout milliseconds for each request4000
BLACKLISTA list of commands to avoid being called[]
CACHE_TTL_MSCache lifetime for command list in milliseconds5000
ENDPOINT_LISTEndpoint address of the command list/list
ENDPOINT_TRIGGEREndpoint address for invoking commands/send

Agent Skills

Quick start

OpenCode

  1. Copy the ./skills/.opencode/... folders to
  • .opencode/skills for project specific skill setup
  • %USERPROFILE%/.config/opencode/skills for global setup
  1. You can adjust AGENTS.md, custom subagents or custom commands to reference the skills
  2. Restart your OpenCode (CLI or Desktop)
  3. When asking the agent to use the "hotkeyless AHK skills" it should now use the skill guide

ClaudeCode

  1. Copy the ./skills/.claude/... folders to
  • .claude/skills for project specific skill setup
  • %USERPROFILE%/.config/claude-code/skills for global setup
  1. You can adjust CLAUDE.md, custom subagents or custom commands to reference the skills
  2. Restart your Claude Code
  3. When asking the agent to use the "hotkeyless AHK skills" it should now use the skill guide

Github Copilot

  1. Copy the ./skills/.claude/... folders to
  • .claude/skills for project specific skill setup
  • %USERPROFILE%/.config/claude-code/skills for global setup
  1. You can adjust AGENTS.md, custom subagents or custom commands to reference the skills
  2. Restart your Claude Code
  3. When asking the agent to use the "hotkeyless AHK skills" it should now use the skill guide

License

MIT

Server Config

{
  "mcpServers": {
    "hotkeyless-ahk": {
      "command": "npx",
      "args": [
        "-y",
        "@tim0_12432/hotkeyless-ahk-mcp-server"
      ],
      "env": {
        "BLACKLIST": "shutdown,restart,kill,..."
      }
    }
  }
}
Project Info
Created At
a month ago
Updated At
a month ago
Author Name
tim0-12432
Star
-
Language
-
License
-
Category

Recommend Servers

View All
Bring your real authenticated browser session to AI coding agents. Local-first MCP server + Chrome MV3 extension. No cloud. No telemetry.
@Cubenest

peek records the user's actual logged-in browser (DOM via rrweb, console events, network metadata, optional response bodies via opt-in Deep capture) through a Chrome MV3 extension. The extension ships events through a native-messaging stdio bridge to a local MCP server (peek-mcp), which persists them to a SQLite database at ~/.peek/sessions.db. AI coding agents (Claude Code, Cursor, Cline, Windsurf) read sessions from the database via 10 MCP tools: Tool What it does list_recent_sessions List recently recorded sessions (id, origin, ts, event count). get_session_summary LLM-readable narrative summary of a session. get_session_console_errors Console errors recorded in a session. get_session_network_errors Failed/notable network requests in a session. get_user_action_before_error Last N user actions before a console error. generate_playwright_repro Generate a runnable Playwright test from a session. get_dom_snapshot Reconstruct the DOM at a given timestamp. query_dom_history Timeline of attribute/text changes for a selector. request_authorization Side-panel consent for write actions (Level 3). execute_action Dispatch a UI action (gated by permission level + destructive blocklist). Why local-first matters Every other "browser session for AI" tool ships to a vendor cloud. peek's SQLite + extension live on the user's machine — no remote endpoints, no telemetry. The privacy policy (docs/peek/PRIVACY_POLICY.md) is the source of truth. Install # 1. Add the MCP server to Claude Code claude mcp add peek -- npx -y @peekdev/mcp # 2. Install the Chrome extension from the Chrome Web Store # (link added once the CWS listing is approved)

2 days ago