Show HN: ht-mcp – a Rust MCP server of headless terminal for agents

3 days ago 1

Rust  Apache 2.0

A high-performance Rust implementation of a Model Context Protocol (MCP) server for headless terminal ht.

  • 🚀 Pure Rust: Single binary MCP server, no external dependencies
  • 🔗 Direct Integration: Embed excellent ht headless terminal library for optimal performance
  • 🖥️ Multi-Session: Concurrent terminal session management
  • 🌐 Web Interface: Optional live terminal preview

ht-mcp in Memex

ht-mcp in Claude Code

brew tap memextech/tap brew install ht-mcp

Download from releases:

# macOS Intel curl -L https://github.com/memextech/ht-mcp/releases/latest/download/ht-mcp-x86_64-apple-darwin -o ht-mcp # macOS Apple Silicon curl -L https://github.com/memextech/ht-mcp/releases/latest/download/ht-mcp-aarch64-apple-darwin -o ht-mcp # Linux curl -L https://github.com/memextech/ht-mcp/releases/latest/download/ht-mcp-x86_64-unknown-linux-gnu -o ht-mcp # Windows (PowerShell) curl.exe -L https://github.com/memextech/ht-mcp/releases/latest/download/ht-mcp-x86_64-pc-windows-msvc -o ht-mcp.exe # Make executable and install chmod +x ht-mcp && sudo mv ht-mcp /usr/local/bin/
# From crates.io (stable) cargo install ht-mcp # From git (latest) cargo install --git https://github.com/memextech/ht-mcp
git clone https://github.com/memextech/ht-mcp.git cd ht-mcp git submodule update --init --recursive cargo install --path .

See docs/INSTALLATION.md for detailed installation options.

Tool Description Parameters
ht_create_session Create new terminal session command?, enableWebServer?
ht_send_keys Send keystrokes to session sessionId, keys[]
ht_take_snapshot Capture terminal state sessionId
ht_execute_command Execute command and get output sessionId, command
ht_list_sessions List all active sessions None
ht_close_session Close terminal session sessionId

Note: Parameters use camelCase (e.g., sessionId, enableWebServer) for MCP compatibility.

Add to your MCP client configuration:

{ "mcpServers": { "ht-mcp": { "command": "ht-mcp", "args": ["--debug"] } } }

For custom installation paths:

{ "mcpServers": { "ht-mcp": { "command": "/path/to/ht-mcp", "args": [] } } }
# Start the MCP server ht-mcp # With debug logging ht-mcp --debug

Once configured in your MCP client:

  1. Create session: ht_create_session → Returns session ID
  2. Run commands: ht_execute_command with session ID and command
  3. Interactive input: ht_send_keys for multi-step interactions
  4. Check state: ht_take_snapshot to see current terminal
  5. Clean up: ht_close_session when finished

This server returns human-readable text responses (not JSON), designed for natural language interaction:

# Create session response HT session created successfully! Session ID: abc123-def456-789... 🌐 Web server enabled! View live terminal at: http://127.0.0.1:3000
# Terminal snapshot response Terminal Snapshot (Session: abc123...) bash-3.2$ ls -la total 16 drwxr-xr-x 4 user staff 128 Jun 13 10:30 . -rw-r--r-- 1 user staff 45 Jun 13 10:30 file.txt bash-3.2$
  • Rust: 1.75+ (install via rustup)
  • Supported OS: Linux, macOS, Windows (experimental)
# Clone with submodules git clone --recursive https://github.com/memextech/ht-mcp.git cd ht-mcp # Build cargo build # Run cargo run # Test cargo test

Installation Issues:

  • Ensure Rust 1.75+ is installed
  • Check internet connection for git submodules
  • Verify ~/.cargo/bin is in PATH

Runtime Issues:

  • Use ht-mcp --debug for verbose logging
  • Check MCP client configuration syntax
  • Verify binary path: which ht-mcp

Compared to the original TypeScript implementation:

  • 40x faster startup (~50ms vs ~2s)
  • 70% less memory (~15MB vs ~50MB)
  • Single binary (4.7MB vs ~200MB Node.js)
  • Zero subprocess overhead

Apache 2.0 License

Copyright (c) 2025 Atlas Futures Inc.

See LICENSE for details.

Contributions welcome! Please read CONTRIBUTING.md for guidelines.


Built with Memex

Read Entire Article