Skip to main content
Glama
jenova-marie

Keyboard Shortcuts MCP Server

by jenova-marie

Keyboard Shortcuts MCP Server

A Model Context Protocol (MCP) server that provides keyboard shortcuts for various operating systems, desktop environments, and applications. Uses Claude Opus for intelligent natural language querying of shortcuts.

Primary Use Case: Designed to support Claude's Computer Use tool by providing accurate, context-aware keyboard shortcuts for automated computer interactions.

Features

  • πŸ” Intelligent Search: Uses Claude Opus to understand natural language queries

  • πŸ–₯️ Multi-Platform: Support for Ubuntu (GNOME desktop), with architecture for macOS/Windows

  • πŸ“± App-Specific: Desktop apps (Firefox, VS Code), CLI tools (tmux, vim), and system shortcuts

  • πŸš€ Fast: All shortcut data loaded in-memory for quick filtering

Installation

# Install dependencies
pnpm install

# Build the server
pnpm build

Configuration

Set your Anthropic API key as an environment variable:

export ANTHROPIC_API_KEY="your-api-key-here"

Usage

Running Standalone

pnpm start

Integrating with Claude Desktop

Add to your Claude Desktop MCP configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "keyboard-shortcuts": {
      "command": "node",
      "args": ["/path/to/keyboard-shortcuts-mcp/dist/index.js"],
      "env": {
        "ANTHROPIC_API_KEY": "your-api-key-here"
      }
    }
  }
}

Tool: get_shortcuts

Query keyboard shortcuts using natural language.

Parameters

  • os (required): Operating system - "ubuntu", "macos", or "windows"

  • query (required): Natural language question about shortcuts

  • desktop (optional): Desktop environment - "gnome", "kde", etc.

  • application (optional): Specific application - "firefox", "tmux", etc.

Examples

// Query tmux shortcuts (no desktop needed for CLI tools)
{
  "os": "ubuntu",
  "application": "tmux",
  "query": "how do I split a pane vertically?"
}

// Query Firefox shortcuts on GNOME
{
  "os": "ubuntu",
  "desktop": "gnome",
  "application": "firefox",
  "query": "how to open a new private window"
}

// Query GNOME window management
{
  "os": "ubuntu",
  "desktop": "gnome",
  "query": "tile window to left half of screen"
}

Data Structure

Shortcuts are organized as:

data/
└── ubuntu/
    β”œβ”€β”€ desktops/
    β”‚   └── gnome/
    β”‚       β”œβ”€β”€ window-management.json
    β”‚       β”œβ”€β”€ system-functions.json
    β”‚       └── ...
    β”œβ”€β”€ apps/
    β”‚   β”œβ”€β”€ browser/
    β”‚   β”‚   β”œβ”€β”€ firefox.json
    β”‚   β”‚   └── chrome.json
    β”‚   β”œβ”€β”€ editor/
    β”‚   β”‚   β”œβ”€β”€ vscode.json
    β”‚   β”‚   └── vim.json
    β”‚   └── ...
    └── tools/
        β”œβ”€β”€ tmux.json
        β”œβ”€β”€ vim.json
        └── ...

Each JSON file contains:

{
  "os": "ubuntu",
  "desktop": "gnome" | null,
  "application": "firefox" | null,
  "file": "firefox",
  "categories": [
    {
      "name": "Tab Management",
      "shortcuts": [
        {
          "keys": "Ctrl + T",
          "description": "New tab"
        }
      ]
    }
  ]
}

Development

# Watch mode (auto-reload on changes)
pnpm dev

# Build TypeScript
pnpm build

# Run built server
pnpm start

Architecture

  1. Data Loader (src/data-loader.ts): Loads all JSON files at startup into memory

  2. Opus Client (src/opus-client.ts): Wraps Anthropic SDK for intelligent queries

  3. MCP Server (src/index.ts): Exposes get_shortcuts tool via MCP protocol

The server filters shortcuts by OS/desktop/app, then passes relevant data + user query to Claude Opus for intelligent matching.

License

MIT

Install Server
A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

Latest Blog Posts

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/jenova-marie/keyboard-shortcuts-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server