This server bridges Claude to AutoHotkey desktop automation through the Hotkeyless AHK HTTP API. It exposes tools to list available AHK commands and trigger them with parameters, letting you automate Windows workflows without writing hotkey bindings. You get configurable blacklists to block dangerous commands, request timeouts, and command list caching. Useful when you want Claude to control desktop applications, simulate keystrokes, or orchestrate GUI interactions on Windows machines where you've already set up Hotkeyless AHK commands. The package ships as a stdio transport server via npx, with environment variables for the API base URL, timeout limits, and endpoint paths.
This repository provides:
packages/
mcp-server/ # Node MCP server package
skills/ # Agent skill documents
examples/ # End-to-end usage examples
opencode.json:
{
...
"mcp": {
...
"hotkeyless-ahk": {
"type": "local",
"command": ["npx", "-y", "@tim0_12432/hotkeyless-ahk-mcp-server"],
"enabled": true,
"environment": {
"BLACKLIST": "shutdown,restart,kill"
...
}
}
},
...
}
.mcp.json:
{
"mcpServers": {
...
"hotkeyless-ahk": {
"command": "npx",
"args": ["-y", "@tim0_12432/hotkeyless-ahk-mcp-server"],
"env": {
"BLACKLIST": "shutdown,restart,kill"
...
}
}
}
}
mcp-config.json:
{
...
"mcpServers": {
...
"hotkeyless-ahk": {
"type": "local",
"command": "npx",
"args": ["-y", "@tim0_12432/hotkeyless-ahk-mcp-server"],
"env": {
"BLACKLIST": "shutdown,restart,kill"
...
},
"tools": ["*"]
}
},
...
}
bun install
bun run build
npm should also work without problems!
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"
...
}
}
},
...
}
.mcp.json:
{
"mcpServers": {
...
"hotkeyless-ahk": {
"command": "node",
"args": ["<absolute path to the built files>/mcp-server/dist/index.js"],
"env": {
"BLACKLIST": "shutdown,restart,kill"
...
}
}
}
}
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": ["*"]
}
},
...
}
GET /list returns JSON array of { command: string, note: string }GET /send/<command> accepts query parametersDefault config is at mcp-server/dist/infrastructure/config/config.ts.
Environment overrides:
| Parameter override | What it does | Default |
|---|---|---|
| BASE_URL | Adress of the Hotkeyless AHK server | http://localhost:42800 |
| TIMEOUT_MS | Timeout milliseconds for each request | 4000 |
| BLACKLIST | A list of commands to avoid being called | [] |
| CACHE_TTL_MS | Cache lifetime for command list in milliseconds | 5000 |
| ENDPOINT_LIST | Endpoint address of the command list | /list |
| ENDPOINT_TRIGGER | Endpoint address for invoking commands | /send |
./skills/.opencode/... folders to.opencode/skills for project specific skill setup%USERPROFILE%/.config/opencode/skills for global setup./skills/.claude/... folders to.claude/skills for project specific skill setup%USERPROFILE%/.config/claude-code/skills for global setup./skills/.claude/... folders to.claude/skills for project specific skill setup%USERPROFILE%/.config/claude-code/skills for global setupBASE_URLThe base URL of the Hotkeyless AHK HTTP server.
TIMEOUT_MSThe timeout in milliseconds for requests to the server.
BLACKLISTA comma-separated list of blacklisted commands.
CACHE_TTL_MSThe time-to-live in milliseconds for cached responses.
ENDPOINT_LISTThe default endpoint path for listing commands.
ENDPOINT_TRIGGERThe default endpoint path for triggering commands.