{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"awesome-clojure-mcp","slug":"clojure-mcp","name":"clojure-mcp","type":"mcp","url":"https://github.com/bhauman/clojure-mcp","page_url":"https://unfragile.ai/clojure-mcp","categories":["mcp-servers"],"tags":[],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"awesome-clojure-mcp__cap_0","uri":"capability://code.generation.editing.nrepl.connected.live.code.evaluation.with.repair","name":"nrepl-connected live code evaluation with repair","description":"Executes Clojure code directly against a running nREPL server with automatic error repair capabilities. Uses a multimethod-based tool system that sends code to the REPL, captures output/errors, and applies heuristic-based fixes (e.g., missing imports, syntax corrections) before re-evaluating. This enables AI assistants to iteratively refine code within the live development environment without round-tripping through file saves.","intents":["Execute Clojure code snippets in the running application context to test ideas","Automatically fix common evaluation errors like missing requires or typos","Inspect runtime state and values from the live program during development"],"best_for":["Clojure developers using AI assistants for REPL-driven development","Teams building AI agents that need to validate code changes in real-time","Interactive development workflows where immediate feedback is critical"],"limitations":["Repair heuristics are limited to common patterns; complex semantic errors require manual intervention","Requires an active nREPL server — cannot evaluate code in isolation","Error context is limited to REPL output; stack traces may be truncated for large errors"],"requires":["nREPL server running and accessible (default localhost:7888)","Clojure 1.10+ for nREPL compatibility","Network connectivity to nREPL endpoint"],"input_types":["Clojure code (string)","Namespace context (optional)"],"output_types":["Evaluation result (string/structured)","Error message with repair suggestions","REPL output (stdout/stderr)"],"categories":["code-generation-editing","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-clojure-mcp__cap_1","uri":"capability://code.generation.editing.file.aware.code.editing.with.s.expression.replacement","name":"file-aware code editing with s-expression replacement","description":"Provides structured code editing via two complementary tools: clojure_edit for full-file transformations and clojure_edit_replace_sexp for surgical S-expression replacement. Uses tree-sitter or similar AST parsing to identify and replace specific S-expressions by pattern matching, preserving formatting and context. Integrates with file write safety checks to prevent accidental overwrites and validates syntax before persisting changes.","intents":["Replace specific functions or forms within a file without rewriting the entire file","Refactor code by targeting S-expressions by pattern or position","Edit files while preserving formatting, comments, and structural integrity"],"best_for":["AI-assisted refactoring workflows requiring precise code manipulation","Developers who need to apply targeted changes across multiple files","Teams using AI agents for code generation that must integrate with existing codebases"],"limitations":["S-expression matching relies on pattern syntax; complex nested structures may be ambiguous","Formatting preservation is best-effort; some whitespace normalization may occur","No built-in merge conflict resolution for concurrent edits"],"requires":["File system write access to project directories","Clojure syntax validation (via cljfmt or similar)","Configuration allowlist in .clojure-mcp/config.edn for permitted directories"],"input_types":["File path (string)","S-expression pattern (string)","Replacement code (string)"],"output_types":["Modified file content (string)","Syntax validation result (boolean)","Diff or change summary (optional)"],"categories":["code-generation-editing"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-clojure-mcp__cap_10","uri":"capability://tool.use.integration.multi.tool.orchestration.via.multimethod.dispatch.system","name":"multi-tool orchestration via multimethod dispatch system","description":"Implements a multimethod-based tool system where each tool registers implementations for five core multimethods: tool-name, tool-description, tool-input-schema, tool-execute, and tool-category. This architecture enables dynamic tool registration, composition, and execution without tight coupling between tools. Tools are discovered and invoked through a unified dispatch mechanism, allowing new tools to be added by implementing the multimethod interface.","intents":["Extend clojure-mcp with custom tools without modifying core server code","Compose multiple tools into complex workflows","Dynamically enable/disable tools based on configuration"],"best_for":["Developers building custom extensions to clojure-mcp","Teams that need tool-specific customization","Organizations deploying clojure-mcp with domain-specific tools"],"limitations":["Multimethod dispatch adds a small amount of overhead per tool invocation","Tool composition requires manual orchestration; no built-in workflow engine","No built-in error handling or retry logic at the dispatch level"],"requires":["Understanding of Clojure multimethods","Implementation of five core multimethods per tool","Tool registration via factory function"],"input_types":["Tool name (keyword)","Tool input (map with tool-specific schema)"],"output_types":["Tool output (tool-specific)","Execution result (success/failure)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-clojure-mcp__cap_2","uri":"capability://data.processing.analysis.project.structure.inspection.and.analysis","name":"project structure inspection and analysis","description":"Analyzes Clojure project structure by inspecting the file system, reading deps.edn/project.clj, and querying the nREPL for loaded namespaces and dependencies. Exposes project metadata including source paths, dependencies, and namespace topology through a structured inspection tool. Enables AI assistants to understand project layout and make context-aware decisions about code generation and refactoring.","intents":["Understand the project's dependency graph and available libraries","Identify source directories and namespace organization","Determine which namespaces are currently loaded in the REPL"],"best_for":["AI agents that need to generate code compatible with project dependencies","Developers onboarding AI assistants to unfamiliar codebases","Automated refactoring tools that must respect project structure"],"limitations":["Inspection is point-in-time; does not track real-time changes to deps.edn","Namespace discovery depends on what's loaded in the REPL; unloaded namespaces may not appear","Does not analyze transitive dependency versions or conflict resolution"],"requires":["deps.edn or project.clj file in project root","nREPL connection for namespace discovery","Read access to project file system"],"input_types":["Project root path (string)"],"output_types":["Project metadata (structured JSON/EDN)","Dependency list (structured)","Namespace list (structured)"],"categories":["data-processing-analysis","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-clojure-mcp__cap_3","uri":"capability://safety.moderation.configurable.tool.and.prompt.filtering.with.edn.based.policy","name":"configurable tool and prompt filtering with edn-based policy","description":"Implements a configuration system that reads .clojure-mcp/config.edn files to selectively enable/disable tools, prompts, and resources at runtime. Uses a multimethod-based tool registration system where each tool is registered conditionally based on configuration predicates (tool-id-enabled?, prompt-name-enabled?, etc.). Supports directory allowlisting to restrict file system access and feature flags for bash execution and scratch pad persistence.","intents":["Restrict AI assistant capabilities based on security policies (e.g., disable bash execution)","Limit file system access to specific project directories","Enable/disable specific tools per project without code changes"],"best_for":["Teams deploying clojure-mcp in restricted environments (CI/CD, sandboxed AI)","Projects with security requirements around code execution and file access","Multi-tenant setups where different projects need different tool sets"],"limitations":["Configuration is static at server startup; runtime changes require restart","No role-based access control (RBAC) — all users see the same filtered tool set","Directory allowlists use simple path matching; no glob patterns or regex support"],"requires":[".clojure-mcp/config.edn file in project root","Valid EDN syntax in configuration file","Clojure 1.10+ for EDN parsing"],"input_types":["EDN configuration file (text)"],"output_types":["Tool registry (filtered list)","Configuration validation result (boolean)"],"categories":["safety-moderation","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-clojure-mcp__cap_4","uri":"capability://automation.workflow.bash.command.execution.with.optional.nrepl.fallback","name":"bash command execution with optional nrepl fallback","description":"Executes shell commands via a bash tool that can route execution either directly to the OS shell or through nREPL's bash-over-nrepl capability (configurable via get-bash-over-nrepl). Captures stdout/stderr and exit codes, enabling AI assistants to run build tools, package managers, and system utilities. Respects directory allowlists to prevent arbitrary file system access.","intents":["Run build tools, linters, and test runners from within the AI development workflow","Execute system commands to inspect project state (e.g., git status, file listings)","Integrate with external tools like npm, gradle, or docker"],"best_for":["AI agents automating full development workflows (code generation + testing)","Developers who want AI to run CI/CD-like tasks locally","Projects that need to invoke non-Clojure tools (e.g., npm, python scripts)"],"limitations":["Bash execution can be disabled via configuration for security-sensitive environments","No built-in timeout; long-running commands may block the MCP server","Output is captured as text; binary output (images, archives) is not supported","nREPL fallback mode may have different behavior than native bash (e.g., environment variables)"],"requires":["Bash shell available on the system (or nREPL with bash-over-nrepl support)","Configuration allowlist for permitted directories","Tool enabled via get-bash-over-nrepl configuration"],"input_types":["Bash command (string)","Working directory (optional, string)"],"output_types":["stdout (string)","stderr (string)","Exit code (integer)"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-clojure-mcp__cap_5","uri":"capability://search.retrieval.file.system.operations.with.pattern.based.search.and.safety.checks","name":"file system operations with pattern-based search and safety checks","description":"Provides file read/write operations (read_file, file_write) with pattern-based search capabilities (grep, glob_files, LS). Uses ripgrep for efficient text search and respects directory allowlists to prevent unauthorized file access. Implements write safety checks to validate file paths and prevent overwrites of critical files. Supports reading files with pattern matching to extract specific sections.","intents":["Read source files to provide context to AI assistants","Search for code patterns across the codebase (e.g., find all usages of a function)","Write generated code to files with safety validation","List directory contents to understand project structure"],"best_for":["AI agents that need to read and understand existing code before generating changes","Developers using AI for codebase-wide refactoring and search","Automated code generation workflows that must respect file system boundaries"],"limitations":["Pattern matching is limited to text-based grep; no semantic code search","Write safety checks are path-based; no content-based validation (e.g., preventing deletion of important files)","File size limits may apply to prevent loading massive files into memory","Directory allowlists are static; cannot be changed at runtime"],"requires":["Read access to files within allowed directories","Write access for file_write operations","ripgrep installed for grep tool (optional but recommended for performance)","Configuration allowlist in .clojure-mcp/config.edn"],"input_types":["File path (string)","Search pattern (regex or text)","File content (string, for writes)"],"output_types":["File content (string)","Search results (structured list with line numbers)","Directory listing (structured)","Write confirmation (boolean)"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-clojure-mcp__cap_6","uri":"capability://tool.use.integration.mcp.server.lifecycle.management.with.factory.based.tool.registration","name":"mcp server lifecycle management with factory-based tool registration","description":"Implements the core MCP server using a factory pattern where build-and-start-mcp-server coordinates startup with factory functions for tools, prompts, and resources. Uses the multimethod-based tool system to dynamically register tools at server initialization, with each tool implementing five core multimethods (tool-name, tool-description, tool-input-schema, tool-execute, etc.). Manages server lifecycle including initialization, tool registration, and shutdown.","intents":["Start an MCP server that exposes Clojure development tools to AI clients","Dynamically register tools based on configuration and availability","Manage server lifecycle and resource cleanup"],"best_for":["Developers integrating clojure-mcp with Claude Desktop or other MCP clients","Teams building custom MCP servers that extend clojure-mcp","Organizations deploying clojure-mcp in production environments"],"limitations":["Server configuration is static at startup; changes require restart","No built-in clustering or load balancing for multiple MCP clients","Tool registration is synchronous; slow tool initialization can delay server startup"],"requires":["Clojure CLI or equivalent to run the server","nREPL server running (for tools that depend on it)","Valid configuration file (.clojure-mcp/config.edn)"],"input_types":["Configuration (EDN file)","Factory function references (Clojure functions)"],"output_types":["MCP server instance (running process)","Tool registry (list of available tools)","Server status (running/stopped)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-clojure-mcp__cap_7","uri":"capability://memory.knowledge.prompt.and.resource.management.via.mcp.protocol","name":"prompt and resource management via mcp protocol","description":"Exposes AI prompts and resources through the MCP protocol, allowing AI clients to discover and use context-specific prompts for Clojure development. Implements prompt filtering via configuration (prompt-name-enabled?) to selectively enable prompts per project. Resources are registered similarly, enabling AI assistants to access project-specific documentation or templates.","intents":["Provide AI assistants with Clojure-specific prompts for code generation and refactoring","Expose project-specific resources (e.g., coding guidelines, architecture docs) to AI","Enable AI clients to discover available prompts and resources via MCP"],"best_for":["Teams using Claude or other MCP-compatible AI clients for Clojure development","Projects that want to standardize AI-assisted development with custom prompts","Organizations deploying clojure-mcp with specific coding standards"],"limitations":["Prompts are static; no dynamic prompt generation based on project state","Resource discovery is limited to what's registered at server startup","No built-in versioning or prompt evolution tracking"],"requires":["MCP client that supports prompts and resources (e.g., Claude Desktop)","Configuration file with prompt/resource definitions"],"input_types":["Prompt name (string)","Resource name (string)"],"output_types":["Prompt text (string)","Resource content (string or structured data)","Prompt/resource list (structured)"],"categories":["memory-knowledge","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-clojure-mcp__cap_8","uri":"capability://memory.knowledge.scratch.pad.persistence.and.repl.state.management","name":"scratch pad persistence and repl state management","description":"Provides optional scratch pad functionality (controlled via get-scratch-pad-load configuration) that persists REPL state across sessions. Enables AI assistants to maintain context and intermediate results across multiple interactions. Integrates with nREPL to save and restore namespace state, allowing long-running development sessions to preserve accumulated definitions and data.","intents":["Maintain REPL state across multiple AI interactions for continuity","Persist intermediate results and test data for later reference","Enable multi-turn development workflows where previous context matters"],"best_for":["Long-running AI-assisted development sessions","Exploratory development workflows where context accumulation is valuable","Teams using AI for iterative refinement of code"],"limitations":["Scratch pad persistence is optional and must be explicitly enabled","No built-in garbage collection; scratch pad can grow unbounded","Persisted state may become stale if the running program is restarted externally","No conflict resolution if multiple AI clients modify the same scratch pad"],"requires":["Configuration flag get-scratch-pad-load set to true","nREPL connection for state serialization","File system write access for persistence storage"],"input_types":["REPL state (serialized EDN or similar)"],"output_types":["Persisted state confirmation (boolean)","Restored state (EDN or similar)"],"categories":["memory-knowledge","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-clojure-mcp__cap_9","uri":"capability://code.generation.editing.code.formatting.and.style.enforcement.via.cljfmt.integration","name":"code formatting and style enforcement via cljfmt integration","description":"Integrates with cljfmt (Clojure code formatter) to enforce consistent code style across generated and edited code. Uses configuration (get-cljfmt) to enable/disable formatting. Applies formatting rules to code before writing to files, ensuring that AI-generated code adheres to project style guidelines. Supports custom cljfmt configuration files.","intents":["Ensure AI-generated code matches project formatting standards","Automatically format edited code to maintain consistency","Enforce style guidelines without manual intervention"],"best_for":["Teams with strict code style requirements","Projects using cljfmt for automated formatting","AI-assisted development workflows where consistency is critical"],"limitations":["Formatting is limited to cljfmt's capabilities; custom formatters are not supported","Formatting can be slow for large files","Configuration is static; changes to cljfmt config require server restart"],"requires":["cljfmt installed and available on the system","Configuration flag get-cljfmt set to true (default)","Valid cljfmt configuration file (optional)"],"input_types":["Clojure code (string)"],"output_types":["Formatted code (string)","Formatting validation result (boolean)"],"categories":["code-generation-editing"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":27,"verified":false,"data_access_risk":"high","permissions":["nREPL server running and accessible (default localhost:7888)","Clojure 1.10+ for nREPL compatibility","Network connectivity to nREPL endpoint","File system write access to project directories","Clojure syntax validation (via cljfmt or similar)","Configuration allowlist in .clojure-mcp/config.edn for permitted directories","Understanding of Clojure multimethods","Implementation of five core multimethods per tool","Tool registration via factory function","deps.edn or project.clj file in project root"],"failure_modes":["Repair heuristics are limited to common patterns; complex semantic errors require manual intervention","Requires an active nREPL server — cannot evaluate code in isolation","Error context is limited to REPL output; stack traces may be truncated for large errors","S-expression matching relies on pattern syntax; complex nested structures may be ambiguous","Formatting preservation is best-effort; some whitespace normalization may occur","No built-in merge conflict resolution for concurrent edits","Multimethod dispatch adds a small amount of overhead per tool invocation","Tool composition requires manual orchestration; no built-in workflow engine","No built-in error handling or retry logic at the dispatch level","Inspection is point-in-time; does not track real-time changes to deps.edn","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.05,"quality":0.32,"ecosystem":0.39999999999999997,"match_graph":0.25,"freshness":0.52,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-06-17T09:51:02.371Z","last_scraped_at":"2026-05-03T14:00:15.503Z","last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=clojure-mcp","compare_url":"https://unfragile.ai/compare?artifact=clojure-mcp"}},"signature":"uzJ77Gf7Q8YzkUbCHq/HkFxRIOPFCsTeIFS1NyAAHxfA+w3LsVkCJccf1Znedb6dNAubzGNdCwMqcE2q48pWBA==","signedAt":"2026-06-21T15:27:02.594Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/clojure-mcp","artifact":"https://unfragile.ai/clojure-mcp","verify":"https://unfragile.ai/api/v1/verify?slug=clojure-mcp","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}