just-mcp

just-mcp

An MCP server that integrates with the Just command runner, enabling AI assistants to discover, execute, and introspect Justfile recipes through the MCP protocol.

Category
访问服务器

README

just-mcp

CI Release Crates.io License: MIT

Trust Score

👋 A way to let LLMs speak Just

A production-ready MCP server that provides seamless integration with Just command runner, enabling AI assistants to discover, execute, and introspect Justfile recipes through the standardized MCP protocol.

🎯 Why Just + MCP = Better Agent Execution

Context-Saving Abstraction

If it isn't immediately obvious, the benefit of having LLMs use Just vs. bash is that running Just commands (via MCP) provides a context-saving abstraction where they don't need to waste context opening/reading bash files, Python scripts, or other build artifacts. The LLM via MCP simply gets the command, parameters, and hints - it's in their memory as "these are commands available to you."

Eliminates the Justfile Learning Curve

No more watching LLMs execute just -l to get command lists, inevitably start reading the justfile, then try to write justfile syntax (like it's a Makefile), corrupt the justfile, and create a bad experience. Just's evolving syntax simply doesn't have a large enough corpus in frontier models today - we need more popular repos with justfiles in the training dataset.

Safer Than Raw Bash Access

Just-mcp is fundamentally safer than bash. If you read HackerNews, there's a story at least once daily about operators whose LLMs start forgetting, hallucinating, and eventually breaking down - deleting files and doing nasty unwanted things. Giving LLMs unsupervised, unrestricted bash access without carefully monitoring context consumption is a recipe for disaster.

Using Justfile fixes that. Even if the LLM modifies its own justfile, the next context is memoized by the justfile (hopefully in an idempotent git repo). This abstraction shields the llm from the command line complexity where hallucinations or attention tracking the current working directory cause it to go over the rails and off the cliff.

Powerful Agent Execution Tool

Just-mcp is perfect for anybody doing agent execution:

  • Ultra-low overhead - probably better than every other tool
  • Human-friendly - justfiles are easy for humans and low overhead for LLMs
  • Quick and dirty - while some prefer full Python FastAPI servers, just-mcp is just easy-as
  • sm0l model friendly - works great with self-hostable GPU/CPU open source models with 8k-32k context limits

Built-in Safety Patterns

Just has useful patterns for introducing:

  • Transparent logging without distracting the agent
  • Secondary model inspection - use sm0l models to scan commands asking "is this harmful?" before execution
  • Python decorator-like patterns for command validation
  • Idempotent execution backed by git repos

b00t

b00t mcp create just-mcp -- bash just-mcp --stdio "${REPO_ROOT}"
b00t mcp export just-mcp

🚀 Current Status: 67% Complete (8/12 core tasks)

Implemented Features

  • 🏗️ Complete MCP Server - Full rmcp 0.3.0 integration with MCP 2024-11-05 protocol
  • 📋 Recipe Discovery - Parse and list all available Justfile recipes
  • ⚡ Recipe Execution - Execute recipes with parameters and capture structured output
  • 🔍 Recipe Introspection - Get detailed recipe information, parameters, and documentation
  • ✅ Justfile Validation - Syntax and semantic validation with error reporting
  • 🌍 Environment Management - Comprehensive .env file support and variable expansion
  • 🧪 Full Test Coverage - 33 passing tests across integration and unit test suites

🎯 MCP Tools Available

  1. list_recipes - List all available recipes in the justfile
  2. run_recipe - Execute a specific recipe with optional arguments
  3. get_recipe_info - Get detailed information about a specific recipe
  4. validate_justfile - Validate the justfile for syntax and semantic errors

🏃 Quick Start

Installation

Choose your preferred installation method:

npm (JavaScript/TypeScript)

# Install globally
npm install -g just-mcp

# Or use with npx (no installation required)
npx just-mcp --stdio

pip (Python)

# Install with pip
pip install just-mcp

# Or use with uvx (recommended)
uvx just-mcp --stdio

Cargo (Rust)

# Install from crates.io
cargo install just-mcp

# Or build from source
git clone https://github.com/promptexecution/just-mcp
cd just-mcp
cargo build --release

pkgx (pkgxdev)

pkgx just-mcp --stdio

pkgx downloads the platform-specific tarball that GitHub releases expose (just-mcp-*-*.tar.gz), extracts the executable into ${PKGX_DIR:-$HOME/.pkgx}/bin, and runs the CLI with the arguments you pass. Add that bin directory to your shell’s PATH if you need just-mcp available long-term. The packaging manifest lives in pkgx/projects/github.com/promptexecution/just-mcp/package.yml and mirrors the pkgxdev/pantry entry.

Using Docker

# Pull the latest image from GitHub Container Registry
docker pull ghcr.io/promptexecution/just-mcp:latest

# Run with Docker
docker run --rm -v $(pwd):/workspace ghcr.io/promptexecution/just-mcp:latest --stdio

# Build locally
docker build -t just-mcp:local .
docker run --rm -v $(pwd):/workspace just-mcp:local --stdio

Available Docker image tags:

  • latest - Latest stable release
  • X.Y.Z - Specific version (e.g., 0.1.0)
  • X.Y - Latest patch version (e.g., 0.1)
  • X - Latest minor version (e.g., 0)

Claude Desktop Integration

Using npm/npx

Add to your Claude Desktop MCP configuration:

Using Binary

{
  "mcpServers": {
    "just-mcp": {
      "command": "npx",
      "args": ["-y", "just-mcp", "--stdio"]
    }
  }
}

Using pip/uvx

{
  "mcpServers": {
    "just-mcp": {
      "command": "uvx",
      "args": ["just-mcp", "--stdio"]
    }
  }
}

Using cargo or manual install

{
  "mcpServers": {
    "just-mcp": {
      "command": "/path/to/just-mcp",
      "args": ["--stdio"]
    }
  }
}

Using Docker

{
  "mcpServers": {
    "just-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-v",
        "${workspaceFolder}:/workspace",
        "ghcr.io/promptexecution/just-mcp:latest",
        "--stdio"
      ]
    }
  }
}

Usage Examples

# Run as MCP server
just-mcp --stdio

# Run in specific directory  
just-mcp --directory /path/to/project --stdio

# Using Docker
docker run --rm -v $(pwd):/workspace ghcr.io/promptexecution/just-mcp:latest --stdio

🧪 Testing

Comprehensive Test Suite

# Run all tests (33 tests)
cargo test

# Run specific test suites
cargo test --test basic_mcp_test      # Protocol compliance testing
cargo test --test mcp_integration_working  # SDK integration testing

Test Architecture

  • basic_mcp_test.rs - Direct protocol compliance testing using raw JSON-RPC
  • mcp_integration_working.rs - Type-safe SDK integration testing with rmcp client
  • Unit tests - 25+ tests covering parser, executor, validator, and environment modules

📚 Architecture

Project Structure

just-mcp/
├── src/main.rs              # CLI binary
├── just-mcp-lib/           # Core library
│   ├── parser.rs           # Justfile parsing
│   ├── executor.rs         # Recipe execution  
│   ├── validator.rs        # Validation logic
│   ├── environment.rs      # Environment management
│   └── mcp_server.rs       # MCP protocol implementation
├── tests/                  # Integration tests
└── justfile               # Demo recipes

Tech Stack

  • Rust 1.82+ with async/await support
  • rmcp 0.3.0 - Official MCP SDK for Rust
  • serde/serde_json - JSON serialization
  • snafu - Structured error handling
  • tokio - Async runtime

🔄 Development Roadmap

🎯 Next Priority Tasks (Remaining 33%)

  1. LSP-Style Completion System - Intelligent autocompletion for recipes and parameters
  2. Enhanced Diagnostics - Advanced syntax error reporting and suggestions
  3. Virtual File System - Support for stdin, remote sources, and in-memory buffers
  4. Release Preparation - Documentation, CI/CD, and crate publication

🚀 Future Enhancements

  • Plugin system for custom recipe types
  • Integration with other build tools
  • Performance optimizations for large justfiles
  • Advanced dependency visualization

📖 Usage Patterns

Recipe Execution

// List available recipes
await client.callTool("list_recipes", {});

// Execute recipe with parameters  
await client.callTool("run_recipe", {
  "recipe_name": "build",
  "args": "[\"--release\"]"
});

// Get recipe information
await client.callTool("get_recipe_info", {
  "recipe_name": "test"
});

Validation

// Validate justfile
await client.callTool("validate_justfile", {
  "justfile_path": "./custom.justfile"  
});

🤝 Contributing

This project follows the b00t development methodology:

  • TDD Approach - Tests first, implementation second
  • Feature Branches - Never work directly on main branch
  • Structured Errors - Use snafu for error management
  • Git Workflow - Clean commits with descriptive messages

Development Commands

just build    # Build the project
just test     # Run tests  
just server   # Start MCP server
just clean    # Clean build artifacts

📄 License

This project is licensed under LICENSE.

🚀 Release Setup & CI/CD

Completed Setup

Cocogitto & Conventional Commits

  • Installed cocogitto for conventional commit enforcement
  • Configured cog.toml with proper commit types and changelog settings
  • Set up git hooks for commit message linting (commit-msg) and pre-push testing

GitHub Actions CI/CD

  • CI Pipeline (ci.yml): Multi-platform testing (Ubuntu, Windows, macOS), formatting, clippy, commit linting
  • Release Pipeline (release.yml): Automated versioning, changelog generation, GitHub releases, and crates.io publishing
  • Binary Builds (build-binaries.yml): Cross-platform binary compilation for npm and pip packages
  • Container Pipeline (container.yaml): Multi-platform Docker image builds (linux/amd64, linux/arm64) pushed to GitHub Container Registry

Docker Images

  • Multi-platform builds for linux/amd64 and linux/arm64
  • Minimal image size using static musl binaries and scratch base image
  • Automatic tagging with semantic versioning (major, major.minor, major.minor.patch, latest)
  • Published to GitHub Container Registry (ghcr.io)
  • Integrated with release workflow for automatic deployment

Crates.io Preparation

  • Updated both Cargo.toml files with complete metadata (description, keywords, categories, license, etc.)
  • Added proper exclusions for development-only files
  • Verified MIT license is in place

Documentation & Structure

  • README.md is production-ready with installation and usage instructions
  • Created initial CHANGELOG.md for release tracking
  • Updated .gitignore with Rust-specific entries

🚀 Production Deployment

Development Workflow:

  • All commits must follow conventional commit format (enforced by git hooks)
  • Use feat:, fix:, docs:, etc. prefixes for automatic versioning
  • Push to main branch triggers automated releases and crates.io publishing
  • Library tests pass ✅ (25/25) with comprehensive test coverage

Release Process:

  • Automated Versioning: Cocogitto analyzes commit messages for semantic versioning
  • GitHub Releases: Automatic changelog generation and GitHub release creation
  • Binary Distribution: Pre-built binaries for Linux (x86_64, aarch64), macOS (x86_64, aarch64), and Windows (x86_64)
  • Crates.io Publishing: Library crate (just-mcp-lib) publishes first, then binary crate (just-mcp)
  • npm Publishing: Wrapper package for easy Node.js/TypeScript integration
  • PyPI Publishing: Python wrapper package for pip/uvx installation
  • CI/CD Pipeline: Multi-platform testing (Ubuntu, Windows, macOS) with formatting and clippy checks

Installation Methods:

# npm (JavaScript/TypeScript ecosystems)
npm install -g just-mcp
# or
npx just-mcp --stdio

# pip (Python ecosystems)
pip install just-mcp
# or
uvx just-mcp --stdio

# cargo (Rust ecosystem)
cargo install just-mcp

# Download pre-built binaries
wget https://github.com/promptexecution/just-mcp/releases/latest/download/just-mcp-x86_64-unknown-linux-gnu.tar.gz
# Or use Docker
docker pull ghcr.io/promptexecution/just-mcp:latest

# Or download from GitHub releases
wget https://github.com/promptexecution/just-mcp/releases/latest/download/just-mcp

🔗 Related Projects

Friends of just-mcp

  • just-vscode - VSCode extension with LSP integration for enhanced Just authoring
  • just-awesome-agents - Collection of patterns and tools for agent execution with Just# Test change to trigger pre-push hook

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选