Skip to main content
Glama
Bigsy
by Bigsy
README.md
# shadow-cljs-mcp

[![npm version](https://badge.fury.io/js/shadow-cljs-mcp.svg)](https://badge.fury.io/js/shadow-cljs-mcp)

A Model Context Protocol (MCP) server that monitors shadow-cljs builds and provides real-time build status updates.

## Installation

Add the following to your Cline/Cursor/Claude whatever settings:
```json
{
  "mcpServers": {
    "shadow-cljs-mcp": {
      "command": "npx",
      "args": [
        "shadow-cljs-mcp"
      ],
      "disabled": false,
      "autoApprove": [],
      "timeout": 60
    }
  }
}
```
With optional server location
```json
{
  "mcpServers": {
    "shadow-cljs-mcp": {
      "command": "npx",
      "args": [
        "shadow-cljs-mcp",
        "--host",
        "localhost",
        "--port",
        "9630"
      ],
      "disabled": false,
      "autoApprove": [],
      "timeout": 60
    }
  }
}
```

The `--host` and `--port` arguments are optional. If not provided, the server will default to connecting to `localhost:9630`.

## Overview

This MCP server connects to a running shadow-cljs instance and tracks build progress, failures, and completions. It provides an MCP tool that LLMs can use to verify build status after making changes to ClojureScript files.

## LLM Integration

### Adding to Your LLM Notes

Add the following to your LLM's notes file (e.g., CLAUDE.md, cursorrules.md):

```markdown
After any edits to ClojureScript files, use the shadow-cljs-mcp server's get_last_build_status tool to verify the build succeeded:

<use_mcp_tool>
<server_name>shadow-cljs-mcp</server_name>
<tool_name>get_last_build_status</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>

This will show:
- Build status (completed/failed)
- Which files were compiled
- Any errors or warnings
- Build duration and metrics
```

## Example Tool Response

Successful build:
```json
{
  "status": "completed",
  "resources": 317,
  "compiled": 1,
  "warnings": 0,
  "duration": 0.609,
  "compiledFiles": [
    "path/to/your/file.cljs (505ms)"
  ]
}
```

Failed build:
```json
{
  "status": "failed",
  "message": "Build failed",
  "details": {
    // Error information
  }
}
```

## Usage Notes

- LLMs should call get_last_build_status after each ClojureScript file edit
- Compilation errors will be shown in detail for easy debugging
- Successful builds show which files were compiled and how long they took
- Make sure shadow-cljs is running before starting this server

## Requirements
- Running shadow-cljs instance (defaults to localhost:9630 if not configured otherwise)

TDQS

A4.3/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The tool's purpose is clearly defined and distinct by default.

Naming Consistency5/5

The single tool name 'get_last_build_status' follows a clear verb_noun pattern, and there are no other tools to create inconsistency. The naming is straightforward and predictable.

Tool Count2/5

A single tool is too few for a server's purpose, as it severely limits functionality and suggests an incomplete or overly narrow scope. This makes the server feel thin and underdeveloped.

Completeness2/5

The server is severely incomplete for a build tool domain. It only provides status checking, with no tools for initiating builds, managing configurations, handling dependencies, or other essential operations, creating significant gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues