Dev-Kit MCP Server について
Dev-Kit MCP Serverは、AIコーディングツール向けにプロジェクト内の操作を提供するMCPサーバーです。ファイル、Git、検索、コマンド実行をルートディレクトリ内に制限します。
主な機能
- 01ルートディレクトリ内に操作を制限
- 02ファイルの作成、編集、移動、削除
- 03Gitの状態確認、ステージング、コミット
- 04Makefileと定義済みコマンドの実行
- 05ファイル検索と指定行の読み取り
活用シーン
- 01定義済みコマンドでプロジェクトのチェックを実行
- 02Gitツールでコード変更を確認してステージング
- 03コードベースを検索し指定行を調査
MCP 対応
ファイル、Git、検索、コマンド実行のツールをMCPクライアントに公開します。操作範囲は設定したルートディレクトリ内に限定されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Dev-Kit MCP サーバー
エージェント開発ツール向けの Model Context Protocol(MCP)サーバーで、プロジェクトのルートディレクトリ内で範囲を限定した認可済み操作を提供します。このパッケージを使用すると、makefile コマンドの実行やファイルの移動・削除などの操作を安全に実行できます。今後はコード編集用のツールも追加する予定です。VS Code Copilot など、AI 支援開発ツール向けの優れた MCP サーバーです。
機能
- 🔒 安全な操作:範囲を限定した認可済みルートディレクトリ内で操作を実行
- 🛠️ 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 ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
