nREPL MCP Server
by JohanCodinha
# 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.