mcpField
D
Dev-Kit MCP Server

Dev-Kit MCP Server

ローカル
dev-kit-mcp-server.readthedocs.io開発ツール66 日前に更新

Dev-Kit MCP Server について

Dev-Kit MCP Serverは、AIコーディングツール向けにプロジェクト内の操作を提供するMCPサーバーです。ファイル、Git、検索、コマンド実行をルートディレクトリ内に制限します。

主な機能

  1. 01ルートディレクトリ内に操作を制限
  2. 02ファイルの作成、編集、移動、削除
  3. 03Gitの状態確認、ステージング、コミット
  4. 04Makefileと定義済みコマンドの実行
  5. 05ファイル検索と指定行の読み取り

活用シーン

  1. 01定義済みコマンドでプロジェクトのチェックを実行
  2. 02Gitツールでコード変更を確認してステージング
  3. 03コードベースを検索し指定行を調査

MCP 対応

ファイル、Git、検索、コマンド実行のツールをMCPクライアントに公開します。操作範囲は設定したルートディレクトリ内に限定されます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"dev-kit": {
"command": "uvx",
"args": [
"dev-kit-mcp-server"
]
}
}
}
起動コマンドuvx dev-kit-mcp-server

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypidev-kit-mcp-server

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MseeP.ai Security Assessment Badge

Dev-Kit MCP サーバー

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

エージェント開発ツール向けの Model Context Protocol(MCP)サーバーで、プロジェクトのルートディレクトリ内で範囲を限定した認可済み操作を提供します。このパッケージを使用すると、makefile コマンドの実行やファイルの移動・削除などの操作を安全に実行できます。今後はコード編集用のツールも追加する予定です。VS Code Copilot など、AI 支援開発ツール向けの優れた MCP サーバーです。

dev-kit-mcp-server MCP server

機能

  • 🔒 安全な操作:範囲を限定した認可済みルートディレクトリ内で操作を実行
  • 🛠️ Makefile コマンドの実行:プロジェクト内で makefile コマンドを安全に実行
  • 📁 ファイル操作:認可されたディレクトリ内でファイルの移動、作成、名前変更、削除
  • 🔄 Git 操作:ステータス確認、追加、コミット、プッシュ、プル、チェックアウトなどの Git 操作を実行
  • 🔌 MCP 統合:あらゆるコードベースを MCP 準拠のシステムに変換
  • 🤖 AI 支援開発:VS Code Copilot やその他の AI ツールと優れた連携
  • 🔄 拡張可能なフレームワーク:コード編集やその他の操作用ツールを簡単に追加
  • 🚀 高速なパフォーマンス:高いパフォーマンスを実現する FastMCP で構築

インストール

pip install dev-kit-mcp-server

使用方法

サーバーの実行
# Recommended method (with root directory specified)
dev-kit-mcp-server --root-dir=workdir

# With custom TOML file for predefined commands
dev-kit-mcp-server --root-dir=workdir --commands-toml=custom_commands.toml

# 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

--root-dir パラメーターでは、ファイル操作を実行するディレクトリを指定します。セキュリティ上、このディレクトリ内でのみファイル操作を許可するため、重要な設定です。

--commands-toml パラメーターを使用すると、既定の pyproject.toml ファイルの代わりに、事前定義コマンド用のカスタム 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 ファイルに定義されたコマンドを実行します(デフォルト:[tool.dkmcp.commands] セクションがある pyproject.toml)。

定義済みコマンドの 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]
# Basic commands
hello = "echo Hello, World!"
date = "date"

# Development commands
test = "pytest"
lint = "ruff check ."
build = "python setup.py build"
MCP クライアントでの使用例
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"]})

        # Exploration Operations
        # Search for Python files
        result = await client.call_tool("search_files", {"pattern": ".*\\.py$"})

        # Search for files in a specific directory with output limit
        result = await client.call_tool("search_files", {
            "pattern": "test.*",
            "root": "tests",
            "max_chars": 1000
        })

        # Search for text patterns in files
        result = await client.call_tool("search_text", {"pattern": "def.*test"})

        # Search in specific files with context
        result = await client.call_tool("search_text", {
            "pattern": "import",
            "files": ["main.py", "utils.py"],
            "context": 2
        })

        # Read specific lines from a file
        result = await client.call_tool("read_lines", {"file_path": "README.md", "start": 1, "end": 10})

        # Read entire file with character limit
        result = await client.call_tool("read_lines", {
            "file_path": "config.json",
            "max_chars": 500
        })

        # Predefined Commands
        # Execute a predefined command
        result = await client.call_tool("predefined_commands", {"command": "test"})

        # Execute a predefined command with a parameter
        result = await client.call_tool("predefined_commands", {"command": "test", "param": "specific_test"})

開発

セットアップ
# 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
貢献

皆さまからの貢献を歓迎します!お気軽にプルリクエストを送信してください。

ライセンス

このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については LICENSE ファイルをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。