Skip to main content
Glama
JohanCodinha

nREPL MCP Server

by JohanCodinha
README.md
# nREPL MCP Server

A [Model Context Protocol (MCP)](https://github.com/modelcontextprotocol) server designed for MCP clients, such as **Claude Desktop** or **CLine** in VSCode. This server can be used with any LLM when used with CLine. This server enables interaction with a running **Clojure nREPL instance**, allowing evaluation of Clojure code, namespace inspection, and other utilities via MCP.

---

## Features

- **Connect** to a running nREPL server by specifying host and port.
- **Evaluate Clojure code** in a given namespace or the current one.
- **List project namespaces** using `tools.namespace`.
- **Retrieve nREPL connection status**, including host, port, and session details.
- **Inspect public vars** in any Clojure namespace, displaying metadata such as docstrings and values.

---

## Installation & Setup

### Installing in CLine (VSCode) or Claude Desktop

To use this server with **CLine** or **Claude Desktop**, follow these steps:

1. Open **CLine** in VSCode or **Claude Desktop**.
2. Navigate to the **MCP Settings**.
3. Add a new MCP server with the following configuration:
   ```json
   {
     "mcpServers": {
       "nrepl-mcp-server": {
         "command": "npx",
         "args": [
           "nrepl-mcp-server"
         ],
         "disabled": false,
         "autoApprove": []
       }
     }
   }
   ```
4. Save and restart the client to apply changes.

This will allow the client to communicate with the nREPL MCP server via standard input/output.

### Install via `npx`

To quickly run the server without cloning the repository:

```bash
npx nrepl-mcp-server
```

### Manual Installation

1. **Clone the repository**
2. **Install dependencies**

   ```bash
   npm install
   ```

3. **Build the project** (transpiles TypeScript to JavaScript)

   ```bash
   npm run build
   ```

4. **Run the server**

   - **Production Mode**: Runs from compiled output.
     ```bash
     npm start
     ```
   - **Development Mode**: Uses ts-node for live changes.
     ```bash
     npm run dev
     ```

This starts the server, listening on **STDIO** for MCP requests. Mcp client will start the server for you.

---

## Actions

### Connecting to nREPL

Allows establishing a connection to an nREPL server by specifying a **host** and **port**.

### Evaluating Clojure Code

Executes arbitrary Clojure expressions in either the **default namespace** or a **specified namespace**.

### Retrieving Namespace Information

Lists all namespaces in the current project directory using `tools.namespace`.

### Inspecting Public Vars

Fetches metadata and current values for all **public vars** in a specified namespace.

### Fetching nREPL Connection Status

Provides details on the current nREPL connection, including host, port, session ID, and last error (if any).

---

## Resources

### `nrepl://status`

Provides information about the current nREPL connection, including:

- Host and port
- Connection status
- Active session ID

### `nrepl://namespaces`

Lists all namespaces detected in the project directory.

---

## Contributing

Contributions are welcome! If you have feature suggestions or bug reports, please open an issue or pull request.

## License

This project is licensed under the **MIT License**. Feel free to modify and distribute according to its terms.

TDQS

A3.5/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: connect establishes a connection, eval_form evaluates code, and get_ns_vars inspects namespace variables. There is no overlap or ambiguity between these three functions.

Naming Consistency4/5

The naming follows a consistent snake_case pattern (connect, eval_form, get_ns_vars), with all tools using descriptive verb-noun combinations. The minor deviation is that 'connect' is a single verb while others are compound, but this is reasonable given its action.

Tool Count3/5

With only 3 tools, the set feels thin for an nREPL server, which typically involves more operations like disconnecting, listing sessions, or handling side effects. However, it covers basic connectivity, evaluation, and inspection, which are core functions.

Completeness2/5

The tool surface has significant gaps for an nREPL server: there is no way to disconnect or manage sessions, handle errors or interrupts, load files, or perform other common REPL operations. This limits agents to basic tasks and may cause failures in more complex workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues