Skip to main content

A Model Context Protocol server for turning repositories into navigable MCP systems

Project description

Dev-Kit MCP Server

PyPI - Python Version version License OS OS OS Tests Code Checks codecov Ruff Last Commit

A Model Context Protocol (MCP) server targeted for agent development tools, providing scoped authorized operations in the root project directory. This package enables secure execution of operations such as running makefile commands, moving and deleting files, with future plans to include more tools for code editing. It serves as an excellent MCP server for VS-Code copilot and other AI-assisted development tools.

dev-kit-mcp-server MCP server

Features

  • 🔒 Secure Operations: Execute operations within a scoped, authorized root directory
  • 🛠️ Makefile Command Execution: Run makefile commands securely within the project
  • 📁 File Operations: Move, Create, Rename and Delete files within the authorized directory
  • 🔄 Git Operations: Perform Git operations like status, add, commit, push, pull, and checkout
  • 🔌 MCP Integration: Turn any codebase into an MCP-compliant system
  • 🤖 AI-Assisted Development: Excellent integration with VS-Code copilot and other AI tools
  • 🔄 Extensible Framework: Easily add new tools for code editing and other operations
  • 🚀 Fast Performance: Built with FastMCP for high performance

Installation

pip install dev-kit-mcp-server

Usage

Running the Server

# Recommended method (with root directory specified)
dev-kit-mcp-server --root-dir=workdir

# Alternative methods
uv run python -m dev_kit_mcp_server.mcp_server --root-dir=workdir
python -m dev_kit_mcp_server.mcp_server --root-dir=workdir

The --root-dir parameter specifies the directory where file operations will be performed. This is important for security reasons, as it restricts file operations to this directory only.

Available Tools

The server provides the following tools:

File Operations

  • create_dir: Create directories within the authorized root directory
  • edit_file: Edit files by replacing lines between specified start and end lines with new text
  • move_dir: Move files and directories within the authorized root directory
  • remove_file: Delete files within the authorized root directory
  • rename_file: Rename files and directories within the authorized root directory

Git Operations

  • git_status: Get the status of the Git repository (changed files, untracked files, etc.)
  • git_add: Add files to the Git index (staging area)
  • git_commit: Commit changes to the Git repository
  • git_push: Push changes to a remote Git repository
  • git_pull: Pull changes from a remote Git repository
  • git_checkout: Checkout or create a branch in the Git repository
  • git_diff: Show diffs between commits, commit and working tree, etc.

Makefile Operations

  • exec_make_target: Run makefile commands securely within the project

Example Usage with MCP Client

from fastmcp import Client
async def example():
    async with Client() as client:
        # List available tools
        tools = await client.list_tools()

        # File Operations
        # Create a directory
        result = await client.call_tool("create_dir", {"path": "new_directory"})

        # Move a file
        result = await client.call_tool("move_dir", {"path1": "source.txt", "path2": "destination.txt"})

        # Remove a file
        result = await client.call_tool("remove_file", {"path": "file_to_remove.txt"})

        # Rename a file
        result = await client.call_tool("rename_file", {"path": "old_name.txt", "new_name": "new_name.txt"})

        # Edit a file
        result = await client.call_tool("edit_file", {
            "path": "file_to_edit.txt",
            "start_line": 2,
            "end_line": 4,
            "text": "This text will replace lines 2-4"
        })

        # Git Operations
        # Get repository status
        result = await client.call_tool("git_status")

        # Add files to the index
        result = await client.call_tool("git_add", {"paths": ["file1.txt", "file2.txt"]})

        # Commit changes
        result = await client.call_tool("git_commit", {"message": "Add new files"})

        # Pull changes from remote
        result = await client.call_tool("git_pull", {"remote": "origin", "branch": "main"})

        # Push changes to remote
        result = await client.call_tool("git_push")

        # Checkout a branch
        result = await client.call_tool("git_checkout", {"branch": "feature-branch", "create": True})

        # Makefile Operations
        # Run a makefile command
        result = await client.call_tool("exec_make_target", {"commands": ["test"]})

Development

Setup

# Clone the repository
git clone https://github.com/DanielAvdar/dev-kit-mcp-server.git
cd dev-kit-mcp-server

# Install development dependencies
pip install -e ".[dev]"

# Run tests
pytest

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

dev_kit_mcp_server-0.1.1b0.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

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

dev_kit_mcp_server-0.1.1b0-py3-none-any.whl (24.9 kB view details)

Uploaded Python 3

File details

Details for the file dev_kit_mcp_server-0.1.1b0.tar.gz.

File metadata

File hashes

Hashes for dev_kit_mcp_server-0.1.1b0.tar.gz
Algorithm Hash digest
SHA256 893011bf4fe0154df2103d46b045e23fdfcc630baa50894d6c0d3a780136a1e6
MD5 690e034ec02f389b058cce4257ff7ee5
BLAKE2b-256 7d17abc0b48d2410f4686aa40da9b6d1c68bc0c0461284e8658b5325d1238b62

See more details on using hashes here.

File details

Details for the file dev_kit_mcp_server-0.1.1b0-py3-none-any.whl.

File metadata

File hashes

Hashes for dev_kit_mcp_server-0.1.1b0-py3-none-any.whl
Algorithm Hash digest
SHA256 bf98d462cfc13d73e45b6c87623830f420aa4d11212801be07d60e85fe659383
MD5 c6801e6f03b705475154bda30057a04e
BLAKE2b-256 5266155b585458617c622ac8072962de285b5e565cc8d2bbfa82cf3c00d83e55

See more details on using hashes here.

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