返回市场
开发工具包MCP服务器

开发工具包MCP服务器

作者:DanielAvdar5 星标更新:2025-11-24

项目介绍

MseeP.ai 安全评估徽章

Dev-Kit MCP 服务器

PyPI - Python 版本 版本 许可证 操作系统 操作系统 操作系统 测试 代码检查 代码覆盖率 Ruff 最近提交

一个面向代理开发工具的模型上下文协议(MCP)服务器,提供在项目根目录中授权操作的功能。此包允许安全执行诸如运行Makefile命令、移动和删除文件等操作,并计划在未来增加更多用于代码编辑的工具。它作为VS-Code Copilot和其他AI辅助开发工具的优秀MCP服务器。

<a href="https://glama.ai/mcp/servers/@DanielAvdar/dev-kit-mcp-server"> <img width="380" height="200" src="https://gips3.baidu.com/it/u=199770698,16453632&fm=3081&app=3081&f=PNG?w=760&h=400" alt="dev-kit-mcp-server MCP 服务器" /> </a>

功能

  • 🔒 安全操作:在授权的根目录范围内执行操作
  • 🛠️ Makefile 命令执行:在项目内安全地执行Makefile命令
  • 📁 文件操作:在授权目录内移动、创建、重命名和删除文件
  • 🔄 Git 操作:执行如状态、添加、提交、推送、拉取和检出等Git操作
  • 🔌 MCP 集成:将任何代码库转换为符合MCP规范的系统
  • 🤖 AI 辅助开发:与VS-Code Copilot和其他AI工具的良好集成
  • 🔄 可扩展框架:轻松添加新的工具进行代码编辑和其他操作
  • 🚀 快速性能:基于FastMCP构建,具有高性能

安装

pip install dev-kit-mcp-server

使用方法

运行服务器

# 推荐方法(指定根目录)
dev-kit-mcp-server --root-dir=workdir

# 使用自定义TOML文件预定义命令
dev-kit-mcp-server --root-dir=workdir --commands-toml=custom_commands.toml

# 其他方法
uv run python -m dev_kit_mcp_server.mcp_server --root-dir=workdir
python -m dev_kit_mcp_server.mcp_server --root-dir=workdir

--root-dir 参数指定了将在其中执行文件操作的目录。出于安全原因,这限制了文件操作仅限于该目录。

--commands-toml 参数允许您指定一个自定义TOML文件来预定义命令,而不是使用默认的pyproject.toml文件。当您希望为不同目的定义一组不同的命令时,这非常有用。

可用工具

服务器提供了以下工具:

文件操作

  • create_dir:在授权根目录内创建目录
  • edit_file:通过替换指定起始行和结束行之间的内容来编辑文件
  • move_dir:在授权根目录内移动文件和目录
  • remove_file:删除授权根目录内的文件
  • rename_file:重命名授权根目录内的文件和目录

Git 操作

  • git_status:获取Git仓库的状态(更改的文件、未跟踪的文件等)
  • git_add:将文件添加到Git索引(暂存区)
  • git_commit:将更改提交到Git仓库
  • git_push:将更改推送到远程Git仓库
  • git_pull:从远程Git仓库拉取更改
  • git_checkout:检出或创建Git仓库中的分支
  • git_diff:显示提交之间的差异,提交与工作树之间的差异等

Makefile 操作

  • exec_make_target:在项目内安全地执行Makefile命令

探索操作

  • search_files:根据正则表达式模式搜索项目目录中的文件。支持可选的根目录和输出长度限制。
  • search_text:搜索匹配给定模式的文件中的行。支持文件过滤、上下文行数和输出长度限制。
  • read_lines:读取文件中的特定行或范围。支持行范围选择和输出长度限制。

预定义命令

  • predefined_commands:从TOML文件中执行预定义命令(默认:pyproject.toml下的[tool.dkmcp.commands]部分)

预定义命令的TOML文件格式如下:

[tool.dkmcp.commands]
test = "uv run pytest"
lint = "ruff check"
check = "uvx pre-commit run --all-files"
doctest = "make doctest"

每个命令都定义为键值对,其中键是命令名称,值是要执行的命令。例如,当您调用预定义命令“test”时,它将在根目录下执行“uv run pytest”。

这是一个如何在自定义TOML文件中定义命令的简单示例:

# custom_commands.toml
[tool.dkmcp.commands]
# 基础命令
hello = "echo Hello, World!"
date = "date"

# 开发命令
test = "pytest"
lint = "ruff check ."
build = "python setup.py build"

示例使用MCP客户端

from fastmcp import Client
async def example():
    async with Client() as client:
        # 列出可用工具
        tools = await client.list_tools()

        # 文件操作
        # 创建目录
        result = await client.call_tool("create_dir", {"path": "new_directory"})

        # 移动文件
        result = await client.call_tool("move_dir", {"path1": "source.txt", "path2": "destination.txt"})

        # 删除文件
        result = await client.call_tool("remove_file", {"path": "file_to_remove.txt"})

        # 重命名文件
        result = await client.call_tool("rename_file", {"path": "old_name.txt", "new_name": "new_name.txt"})

        # 编辑文件
        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 操作
        # 获取仓库状态
        result = await client.call_tool("git_status")

        # 将文件添加到索引
        result = await client.call_tool("git_add", {"paths": ["file1.txt", "file2.txt"]})

        # 提交更改
        result = await client.call_tool("git_commit", {"message": "Add new files"})

        # 从远程拉取更改
        result = await client.call_tool("git_pull", {"remote": "origin", "branch": "main"})

        # 将更改推送到远程
        result = await client.call_tool("git_push")

        # 检出分支
        result = await client.call_tool("git_checkout", {"branch": "feature-branch", "create": True})

        # Makefile 操作
        # 执行Makefile命令
        result = await client.call_tool("exec_make_target", {"commands": ["test"]})

        # 探索操作
        # 搜索Python文件
        result = await client.call_tool("search_files", {"pattern": ".*\\.py$"})
        
        # 在特定目录中搜索文件并限制输出长度
        result = await client.call_tool("search_files", {
            "pattern": "test.*",
            "root": "tests",
            "max_chars": 1000
        })

        # 搜索文件中的文本模式
        result = await client.call_tool("search_text", {"pattern": "def.*test"})

        # 在特定文件中搜索带有上下文的文本
        result = await client.call_tool("search_text", {
            "pattern": "import",
            "files": ["main.py", "utils.py"],
            "context": 2
        })

        # 从文件中读取特定行
        result = await client.call_tool("read_lines", {"file_path": "README.md", "start": 1, "end": 10})

        # 以字符限制读取整个文件
        result = await client.call_tool("read_lines", {
            "file_path": "config.json",
            "max_chars": 500
        })

        # 预定义命令
        # 执行预定义命令
        result = await client.call_tool("predefined_commands", {"command": "test"})

        # 带参数执行预定义命令
        result = await client.call_tool("predefined_commands", {"command": "test", "param": "specific_test"})

开发

设置

# 克隆仓库
git clone https://github.com/DanielAvdar/dev-kit-mcp-server.git
cd dev-kit-mcp-server

# 安装开发依赖
pip install -e ".[dev]"

# 运行测试
pytest

贡献

欢迎贡献!请随时提交Pull Request。

许可证

该项目采用MIT许可证——详情见LICENSE文件。