trackmcp
Back to directory
bmorphism

babashka-mcp-server

View on GitHub

A Model Context Protocol server for interacting with Babashka, a native Clojure interpreter for scripting

15 stars JavaScriptAI & Machine Learning Updated Oct 17, 2025

Documentation

Babashka MCP Server

A Model Context Protocol server for interacting with Babashka, a native Clojure interpreter for scripting.

Features

  • Execute Babashka code through MCP tools
  • Cache recent command results
  • Access command history through MCP resources
  • Configurable command timeouts

Prerequisites

Install Babashka

Babashka can be installed in several ways:

macOS

bash
brew install borkdude/brew/babashka

Linux

bash
bash < <(curl -s https://raw.githubusercontent.com/babashka/babashka/master/install)

Windows

powershell
# Using scoop
scoop install babashka

For other installation methods, see the official Babashka installation guide.

Verify Installation

After installation, verify Babashka works:

bash
# Check version
bb --version

# Try a simple expression
bb -e '(+ 1 2 3)'

# Run a script from string
bb -e '(defn hello [x] (str "Hello, " x "!")) (hello "World")'

# Use -i flag to process lines of input
ls | bb -i '(take 2 *input*)'

Installation

bash
# Install dependencies
npm install

# Build the MCP server
npm run build

Configuration

The server can be configured through environment variables:

  • `BABASHKA_PATH`: Path to the Babashka executable (default: "bb")

Tools

execute

Execute Babashka code with optional timeout:

typescript
{
  name: "execute",
  arguments: {
    code: string;      // Babashka code to execute
    timeout?: number;  // Timeout in milliseconds (default: 30000)
  }
}

Example:

typescript
{
  name: "execute",
  arguments: {
    code: "(+ 1 2 3)",
    timeout: 5000
  }
}

Resources

The server maintains a cache of recent command executions accessible through:

  • `babashka://commands/{index}` - Access specific command results by index

Babashka Language Features

Tail Call Optimization (TCO)

Babashka supports explicit tail call optimization through the `recur` special form, but does not implement automatic TCO. For example:

clojure
;; This will cause stack overflow
(defn countdown [n]
  (if (zero? n)
    :done
    (countdown (dec n))))

;; This works with TCO using recur
(defn countdown [n]
  (if (zero? n)
    :done
    (recur (dec n))))

Useful Resources

Official Resources

Community Tools & Libraries

Development Tools

Development

This server is designed to eventually become self-hosting, meaning it will be rewritten in Babashka itself. The current TypeScript implementation serves as a reference and starting point.

Roadmap

1. Self-Hosted Implementation

    2. Enhanced Features

      3. Performance Optimizations

        4. Testing & Documentation

          Frequently asked questions

          What is babashka-mcp-server?

          babashka-mcp-server is A Model Context Protocol server for interacting with Babashka, a native Clojure interpreter for scripting

          How do I install babashka-mcp-server?

          Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

          Is babashka-mcp-server open source?

          Yes — it is hosted on GitHub at https://github.com/bmorphism/babashka-mcp-server and has 15 stars.

          Related MCP tools

          Run your own MCP server? See who uses it and what to fix.

          Measure it with TrackMCP