Skip to main content

MCP Server for GNU Make

Project description

mcp-server-make

CI Release PyPI version

MCP Server for GNU Make - providing controlled and secure access to Make systems from LLMs.

Features

Resources

  • make://current/makefile - Access current Makefile content securely
  • make://targets - List available Make targets with documentation

Tools

  • list-targets: List available Make targets
    • Returns target names and documentation
    • Optional pattern filtering for searching targets
  • run-target: Execute Make targets safely
    • Required: target name
    • Optional: timeout (1-3600 seconds, default 300)

Quick Start

Prerequisites

  • Python 3.12+
  • GNU Make
  • pip or uv package manager

Installation

Using uv (recommended):

uvx mcp-server-make

Using pip:

pip install mcp-server-make

Claude Desktop Integration

Add to your Claude Desktop configuration:

MacOS:

nano ~/Library/Application\ Support/Claude/claude_desktop_config.json

Windows:

notepad %APPDATA%\Claude\claude_desktop_config.json

Add configuration:

{
  "mcpServers": {
    "mcp-server-make": {
      "command": "uv",
      "args": [
        "--directory", 
        "/path/to/server",
        "run",
        "mcp-server-make", 
        "--makefile-dir", "/path/to/project"
      ]
    }
  }
}
  • --directory: Path to the installed mcp-server-make package
  • --makefile-dir: Directory containing the Makefile to manage

Restart Claude Desktop to activate the Make server.

Usage Examples

List Available Targets

I see you have a Makefile. Can you list the available targets?

View Target Documentation

What does the 'build' target do?

Run Tests

Please run the test target with a 2 minute timeout.

View Makefile

Show me the current Makefile content.

Development

Local Development Setup

# Clone repository
git clone https://github.com/wrale/mcp-server-make
cd mcp-server-make

# Create virtual environment
uv venv
source .venv/bin/activate  # Unix/MacOS
.venv\Scripts\activate     # Windows

# Install dependencies
make dev-setup

# Run tests and checks
make check

Testing with MCP Inspector

Test the server using the MCP Inspector:

npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-server-make run mcp-server-make --makefile-dir /path/to/project

Security Features

Version 0.1.5 implements several security controls:

  • Path validation and directory boundary enforcement
  • Target name sanitization and command validation
  • Resource and timeout limits for command execution
  • Restricted environment access and cleanup
  • Error isolation and safe propagation

Behavior Details

Resource Access

  • Makefile content is read-only and validated
  • Target listing includes names and documentation
  • Full path validation prevents traversal attacks
  • Resources require proper make:// URIs

Tool Execution

  • Targets are sanitized and validated
  • Execution occurs in controlled environment
  • Timeouts prevent infinite execution
  • Clear error messages for failures
  • Resource cleanup after execution

Error Handling

  • Type-safe error propagation
  • Context-aware error messages
  • Clean error isolation
  • No error leakage

Known Limitations

Version 0.1.5 has the following scope limitations:

  • Read-only Makefile access
  • Single Makefile per working directory
  • No support for include directives
  • Basic target pattern matching only
  • No variable expansion in documentation

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Add tests for new features
  4. Ensure all checks pass (make check)
  5. Submit a pull request

License

MIT - See LICENSE file for details.

Support

  • GitHub Issues: Bug reports and feature requests
  • GitHub Discussions: Questions and community help

Version History

0.1.5

  • Version bump
  • Added workflow status badges
  • Bug fixes and improvements

0.1.0

  • Initial stable release
  • Basic Makefile access and target execution
  • Core security controls
  • Claude Desktop integration
  • Configurable Makefile directory

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_server_make-0.1.6.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_server_make-0.1.6-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file mcp_server_make-0.1.6.tar.gz.

File metadata

  • Download URL: mcp_server_make-0.1.6.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for mcp_server_make-0.1.6.tar.gz
Algorithm Hash digest
SHA256 611e7fa64d7a8711a02086d6818ee0b91813670b23fcee5d084bf86689f2a560
MD5 c7c287b25ed180ab1bba89b339e7bc50
BLAKE2b-256 c165c19d5d4547691450511d6788d2d1e8506e76a994808057046e029b60c935

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_server_make-0.1.6.tar.gz:

Publisher: release.yml on wrale/mcp-server-make

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcp_server_make-0.1.6-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_server_make-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 f69ce8556b74fb18414bf3fe918354bd68e6692b378ff40e6a6be2815151a38e
MD5 20892f01eda85f7ca7696cc271efd1ef
BLAKE2b-256 ab7b47bbc0d94548e1355b1d2c6289265efed5b0c17345355619bbc994c50c31

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_server_make-0.1.6-py3-none-any.whl:

Publisher: release.yml on wrale/mcp-server-make

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page