Skip to main content
Glama

MCP Build Environment Service

by jbroll
README.md6.04 kB
# MCP Build Service A Model Context Protocol (MCP) server that provides access to git repositories for build and test operations. This allows AI assistants to run builds, execute tests, and inspect git repositories on your behalf. ## What does it do? This service provides AI assistants with tools to: - List available git repositories - Execute git commands (status, log, checkout, pull, fetch, diff, show, branch) - Run make targets (build, test, clean, etc.) - List directory contents - Read files from repositories - Query installed build tools and versions The service runs in a directory containing git repositories and exposes them through the MCP protocol. ## Use case The typical workflow is: 1. You develop code in your workspace and push to a git branch 2. AI assistant uses this service to checkout your branch in a build environment 3. AI assistant runs builds and tests on that branch 4. AI assistant reports results back to you 5. You make fixes based on feedback and repeat This separates your development environment from the build/test environment that the AI uses. ## Installation ```bash git clone <this-repo-url> cd mcp-build pip install -e . ``` ## Setup Create or designate a directory containing your git repositories: ```bash /path/to/build-area/ ├── project-one/ # git repository ├── project-two/ # git repository └── project-three/ # git repository ``` ## Usage ### Local mode (stdio) Start the service in the directory containing your repositories: ```bash cd /path/to/build-area mcp-build ``` Configure Claude Desktop to use it. Add to your Claude Desktop config file: **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows:** `%APPDATA%\Claude\claude_desktop_config.json` ```json { "mcpServers": { "build": { "command": "mcp-build", "cwd": "/path/to/build-area" } } } ``` ### Remote mode (HTTP) Start with HTTP transport: ```bash cd /path/to/build-area mcp-build --transport http --host 0.0.0.0 --port 3344 ``` The service generates a session key on startup. Configure Claude Desktop with: ```json { "mcpServers": { "build": { "url": "http://your-server:3344/sse?key=SESSION_KEY" } } } ``` ## Command-line options ```bash mcp-build --help # Show all options mcp-build # stdio mode (default) mcp-build --transport http # HTTP mode, auto-generate session key mcp-build --transport http --session-key YOUR_KEY mcp-build --transport http --host 0.0.0.0 --port 8080 ``` ## Available tools The service exposes these MCP tools: - **list** - List available repositories - **git** - Execute git commands (limited to: status, log, checkout, pull, branch, diff, fetch, show) - **make** - Run make with specified arguments (executes whatever is in the Makefile) - **ls** - List files and directories - **env** - Show installed tools and versions - **read_file** - Read file contents (with optional line range for large files) ## Security considerations **Git operations:** The service restricts git commands to a whitelist (status, log, checkout, pull, branch, diff, fetch, show). Dangerous operations like `git push --force` or `git reset --hard` are blocked. **Command validation:** The service blocks path traversal patterns (`../`) and some command injection patterns (pipes, redirects, command substitution). **Make targets:** The service runs whatever make targets you specify. These execute the commands defined in the repository's Makefile, which could be anything. The service does not sandbox or restrict what Makefiles can do. **Authentication (HTTP mode):** Requires a session key passed as a Bearer token or query parameter. Keys can be auto-generated or provided. **Recommendation:** Run this service in an environment appropriate for build operations (e.g., a dedicated build VM, container, or CI environment). It validates some inputs but does not provide comprehensive sandboxing. ## Example usage with AI assistant Once configured, you can ask your AI assistant: - "List the available repositories" - "Checkout the feature-branch in my-project and run make test" - "What's the build output from the latest commit on main?" - "Show me the diff between main and feature-branch" The AI will use the service automatically through MCP tool calls. ## Troubleshooting **No repositories found** - Verify you started mcp-build in the parent directory of your git repos - Check each directory has a `.git` subdirectory **Repository not found** - Repository names must match directory names exactly - Use the list tool to see available names **Build failures** - Use the env tool to check installed build tools - Verify the Makefile exists and has the target you're trying to run **Connection issues (HTTP mode)** - Check the session key matches what the service printed at startup - Verify firewall allows the port - Test with curl: `curl -H "Authorization: Bearer KEY" http://host:port/api/repos` ## HTTP API In addition to the MCP protocol, the service provides HTTP endpoints: **Quick operations (REST):** - `GET /api/repos` - List repositories - `GET /api/repos/{repo}/env` - Environment info - `POST /api/repos/{repo}/ls` - List files - `POST /api/repos/{repo}/read_file` - Read file contents - `POST /api/repos/{repo}/git/quick` - Quick git operations (status, branch, log) **Long operations (streaming SSE):** - `POST /stream/repos/{repo}/make` - Stream build output - `POST /stream/repos/{repo}/git` - Stream git operations (pull, fetch, diff, show, checkout) All endpoints require authentication via session key. ## Development Run tests: ```bash pip install -e ".[dev]" pytest tests/ ``` Project structure: ``` mcp-build/ ├── src/ │ ├── server.py # Main server │ └── validators.py # Input validation ├── tests/ # Tests ├── README.md # This file (user docs) └── MCP-BUILD.md # Agent usage guide ``` ## License MIT License

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jbroll/mcp-build'

If you have feedback or need assistance with the MCP directory API, please join our Discord server