This guide covers development workflows, project architecture, and contribution guidelines for mcp-tasks.
../mcp-clj/projects/serverStart a REPL for interactive development:
clj
Run clj-kondo to check code quality:
clj-kondo --lint src test --fail-level warning
The project uses --fail-level warning to ensure both errors and warnings are addressed.
Run tests using the test alias:
# Run unit tests only (default)
clojure -M:dev:test --focus :unit
# Run integration tests
clojure -M:dev:test --focus :integration
# Run all tests
clojure -M:dev:test
# Run specific test namespace
clojure -M:dev:test --focus mcp-tasks.main-test
# Run specific test
clojure -M:dev:test --focus mcp-tasks.main-test/config-threading-integration-test
Format code with cljstyle:
cljstyle fix
Always run cljstyle fix before making commits.
mcp-tasks is a task management layer built on top of the clojure-mcp server library:
Tasks are stored in EDNL (EDN Lines) format:
.mcp-tasks/ # Task tracking directory
├── .git/ # Optional: Version control for task history
├── tasks.ednl # Active tasks (EDN lines format)
├── complete.ednl # Completed task archive (EDN lines format)
└── prompts/ # Category-specific instructions (optional)
└── feature.md
EDNL Format: Each line in tasks.ednl and complete.ednl is a complete EDN map representing a task record.
Task Discovery and Category Management (src/mcp_tasks/prompts.clj:29)
.mcp-tasks/prompts/ directory for category definitions.md filenamesMCP Prompt Generation (src/mcp_tasks/prompts.clj:85)
prompt://category-<name>)Custom Instruction Loading (src/mcp_tasks/prompts.clj:76)
Tasks are represented as EDN maps with the following structure (defined in src/mcp_tasks/schema.clj):
{:id ;; int - unique task identifier
:parent-id ;; int or nil - optional parent task reference
:status ;; :open | :closed | :in-progress | :blocked
:title ;; string - task title
:description ;; string - detailed task description
:design ;; string - design notes
:category ;; string - execution category
:type ;; :task | :bug | :feature | :story | :chore
:meta ;; map - arbitrary string key-value metadata
:relations ;; vector of Relation maps
}
Relation Schema:
{:id ;; int - relation identifier
:relates-to ;; int - target task ID
:as-type ;; :blocked-by | :related | :discovered-during
}
The server exposes three types of MCP capabilities:
Tools: Operations for task management
add-task, select-tasks, complete-task, etc.src/mcp_tasks/tools/Prompts: Workflow execution instructions
prompt://category-<name>prompt://refine-task, etc.resources/prompts/ and .mcp-tasks/prompts/Resources: Queryable information
resource://current-execution - Current execution stateBuild a JAR file:
# Build
clj -T:build jar
# Clean build artifacts
clj -T:build clean
# Check version
clj -T:build version
For native binary builds using GraalVM, see Building from Source.
The test suite is organized by scope:
:unit metadata): Fast, isolated tests:integration metadata): Tests with external dependencies (filesystem, git)Integration tests may require:
GitHub Actions workflows:
test.yml: Runs on all pushes and PRs
--fail-level warningrelease.yml: Manual release workflow
Status: Alpha
Core functionality is stable, but the API may evolve based on user feedback and real-world usage patterns.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |