MCP Dev Servers
 
Give Claude Code 95 tools that turn natural-language asks into real
git,gh,dotnet,cargo,uv, and Ollama operations. Seven MCP servers, onepip install, opt in per project — so "what changed since main?" becomes a structured diff and "are any NuGet packages vulnerable?" becomes a real audit.
You: what changed since main?
Claude calls: git_diff_summary(base="main")
Returns: { "files_changed": 3, "insertions": 47, "deletions": 12, ... }
Claude: "You changed 3 files since main: src/auth.py (+40 −5), tests/...
✅ For: Claude Code users on Windows / macOS / Linux working in git-backed projects (any language; .NET, Rust, and Ollama get bonus tooling).
Built with FastMCP and the Model Context Protocol.
Servers
| Server | Console script | Module | Tools | Description | |--------|----------------|--------|-------|-------------| | git-tools | mcp-git-tools | mcp_dev_servers.git_mcp | 34 | Git operations (status, diff, commit, tag, branch, push, fetch, reset, rebase, worktree, etc.) | | github-tools | mcp-github-tools | mcp_dev_servers.github_mcp | 17 | GitHub utilities not in the official GitHub MCP (releases, workflow dispatch/management, PR labels/auto-merge, branch protection) | | dotnet-tools | mcp-dotnet-tools | mcp_dev_servers.dotnet_mcp | 19 | .NET build, test, NuGet, EF migrations, code quality, coverage | | ollama-tools | mcp-ollama-tools | mcp_dev_servers.ollama_mcp | 6 | Local Ollama LLM operations (health, warmup, compression, JSON extraction) | | rust-tools | mcp-rust-tools | mcp_dev_servers.rust_mcp | 4 | Cargo build, test, clippy with structured diagnostics | | template-sync-tools | mcp-template-sync-tools | mcp_dev_servers.template_sync_mcp | 8 | Template manifest, status, diff, merge, placeholder ops, cross-variant sync | | python-tools | mcp-python-tools | mcp_dev_servers.python_tools_mcp | 7 | Python dev workflows (wheel/sdist inspect, smoke install, pytest, ruff, uv build, coverage) |
Prerequisites
Each server has its own external dependencies:
| Server | Requires | |--------|----------| | git-tools | Git installed and in PATH | | github-tools | Git + GitHub CLI (gh) installed and authenticated | | dotnet-tools | .NET SDK 8.0+ | | ollama-tools | Ollama running locally | | rust-tools | Rust toolchain (cargo, rustc) | | template-sync-tools | Git (for three-way merge ancestor lookup) | | python-tools | Python 3.11+, uv, pytest, ruff, coverage (in project environment) |
All servers require Python 3.11+.
Quick Start
Install directly from the GitHub repo (PyPI publishing is planned but not yet done — see Roadmap):
pip install "mcp-dev-servers[ollama] @ git+https://github.com/dagonet/mcp-dev-servers.git"
Once this package is on PyPI, the shorter form will also work:
pip install "mcp-dev-servers[ollama]" # future — not yet published
Available extras: ollama (pulls httpx), git, github, dotnet, rust, template-sync, python-tools, dev (for running tests). The non-ollama extras pull no Python packages today — they exist as documentation for which external tool each server expects (see Prerequisites).
The package installs 7 console scripts (mcp-git-tools, mcp-github-tools, mcp-dotnet-tools, mcp-ollama-tools, mcp-rust-tools, mcp-template-sync-tools, mcp-python-tools). Register them with claude mcp add:
# git-tools (user-level — works in every git repo)
claude mcp add --scope user --transport stdio git-tools -- mcp-git-tools
# github-tools (user-level)
claude mcp add --scope user --transport stdio github-tools \
-e GH_PROMPT_DISABLED=1 \
-- mcp-github-tools
# ollama-tools (user-level — if running Ollama)
claude mcp add --scope user --transport stdio ollama-tools \
-e OLLAMA_URL=http://127.0.0.1:11434 \
-e OLLAMA_MODEL_FIRST_PASS=mistral:7b-instruct-q4_K_M \
-e OLLAMA_MODEL_EXTRACT_JSON=qwen2.5:7b-instruct-q4_K_M \
-- mcp-ollama-tools
# rust-tools (user-level — works in every Rust project)
claude mcp add --scope user --transport stdio rust-tools -- mcp-rust-tools
# dotnet-tools (project-level — only in .NET projects)
claude mcp add --scope project --transport stdio dotnet-tools -- mcp-dotnet-tools
# template-sync-tools (user-level — template syncing for any project)
claude mcp add --scope user --transport stdio template-sync-tools -- mcp-template-sync-tools
# python-tools (user-level — works in every Python project)
claude mcp add --scope user --transport stdio python-tools -- mcp-python-tools
If
mcp-git-toolsisn't found on your PATH, install withpipxso the scripts land in a PATH-resolvable location: ``bash pipx install "mcp-dev-servers[ollama] @ git+https://github.com/dagonet/mcp-dev-servers.git"`Alternatively, pass the absolute path to each console script in yourclaude mcp add` commands.
Then grant tool permissions in your settings.json (user or project level):
{
"permissions": {
"allow": [
"mcp__git-tools__*",
"mcp__github-tools__*",
"mcp__dotnet-tools__*",
"mcp__ollama-tools__*",
"mcp__rust-tools__*",
"mcp__template-sync-tools__*",
"mcp__python-tools__*"
]
}
}
Registration Strategy
| Server | Scope | Rationale | |--------|-------|-----------| | git-tools | User | Every git repo benefits from these tools | | github-tools | User | Every GitHub repo benefits from these tools | | ollama-tools | User | Cross-project if running Ollama | | rust-tools | User | Every Rust project benefits from these tools | | dotnet-tools | Project | Only relevant in .NET projects | | template-sync-tools | User | Cross-project template syncing | | python-tools | User | Every Python project benefits from these tools |
Environment Variables
| Variable | Server | Default | |----------|--------|---------| | OLLAMA_URL | ollama-tools | http://127.0.0.1:11434 | | OLLAMA_MODEL_FIRST_PASS | ollama-tools | mistral:7b-instruct-q4_K_M | | OLLAMA_MODEL_EXTRACT_JSON | ollama-tools | qwen2.5:7b-instruct-q4_K_M | | GH_EXE | github-tools | Auto-detected |
Tool Reference
git-tools (34 tools)
| Tool | Description | |------|-------------| | git_env_info | Diagnostic info about git installation | | git_status | Fast porcelain git status | | git_add | Stage specific files | | git_rm | Remove files from tracking | | git_commit | Create a commit | | git_diff_summary | Compact diffstat summary | | git_diff | Full diff output | | git_log | Recent commit history | | git_branch_list | List branches | | git_branch_create | Create a branch without checking it out | | git_branch_delete | Delete a local branch (safe against current branch) | | git_checkout | Checkout branch/tag/commit | | git_pull | Pull from remote | | git_push | Push to remote (branches + optional --tags) | | git_fetch | Fetch from remote without merging | | git_reset | Reset HEAD to ref (soft/mixed/hard) | | git_stash | Stash operations (push/pop/list/drop/clear) | | git_remote_list | List configured remotes | | git_tag_list | List tags | | git_tag_create | Create an annotated or lightweight tag | | git_tag_delete | Delete a local tag | | git_describe | Derive a human-readable version string from a commit | | git_revert | Create a revert commit (merge-safe recovery) | | git_rebase | Rebase current branch onto another ref (non-interactive only) | | git_archive | Produce a tarball or zip of a tree at a given ref | | git_config_get | Read a single git config key | | git_config_set | Set a single git config key (allowlisted keys only) | | git_restore | Revert working-tree changes for files | | git_clean_dry_run | List files git clean -fd would remove (read-only) | | git_reflog | Read reflog entries for HEAD or a specific ref | | git_show | Show commit details | | git_worktree_list | List worktrees with parsed branch / detached / locked / prunable flags | | git_worktree_add | Add a worktree on a new or existing branch | | git_worktree_remove | Remove a worktree; returns the freed branch name for optional cleanup |
github-tools (17 tools)
| Tool | Description | |------|-------------| | gh_repo_from_origin | Get OWNER/REPO from local git remote | | gh_workflow_list | List GitHub Actions workflow runs | | github_release_create | Create a GitHub release (defaults to draft mode) | | github_release_edit | Edit an existing release (use draft=false to publish) | | github_release_delete | Delete a release (requires exact tag_name match) | | github_release_upload_asset | Upload a single asset to an existing release | | github_release_delete_asset | Remove an asset from a release (requires exact asset_name match) | | github_workflow_dispatch | Trigger a workflow_dispatch-enabled workflow | | github_workflow_run_wait | Block until a workflow run reaches a terminal state | | github_workflow_run_rerun | Re-run a failed or cancelled workflow run | | github_workflow_run_cancel | Cancel an in-progress workflow run | | github_check_runs_for_sha | List check runs for an arbitrary commit SHA | | github_branch_protection_get | Read branch protection rules for a branch | | github_pr_label_add | Add labels to a pull request | | github_pr_label_remove | Remove labels from a pull request | | github_pr_request_review | Request review from users or teams on a PR | | github_pr_auto_merge | Toggle auto-merge on a pull request |
dotnet-tools (19 tools)
| Tool | Description | |------|-------------| | build_and_extract_errors | Build and extract structured errors/warnings | | run_tests_summary | Run tests and parse TRX results | | analyze_namespace_conflicts | Find duplicate type definitions | | nuget_list_outdated | List outdated NuGet packages | | nuget_check_vulnerabilities | Check for NuGet security vulnerabilities | | nuget_dependency_tree | Full NuGet dependency tree | | parse_csproj | Parse .csproj file structure | | analyze_project_references | Analyze inter-project dependencies | | check_framework_compatibility | Check target framework mismatches | | ef_migrations_status | List EF Core migrations status | | ef_pending_migrations | Check for pending EF migrations | | ef_dbcontext_info | Get DbContext provider/connection info | | analyze_method_complexity | Estimate cyclomatic complexity | | find_large_files | Find files exceeding line count threshold | | find_god_classes | Find classes with too many members | | parse_stack_trace | Parse .NET stack traces | | parse_coverage_report | Parse Cobertura coverage XML | | run_coverage | Run tests with coverage collection | | map_dotnet_structure | Map .NET project file structure |
ollama-tools (6 tools)
| Tool | Description | |------|-------------| | ollama_health | Check Ollama server status | | ollama_list_models | List available Ollama models | | warm_models | Pre-load models for faster inference | | local_first_pass | Compress text via local LLM | | extract_json | Extract structured JSON from text | | map_project_structure | Map directory structure |
python-tools (7 tools)
| Tool | Description | |------|-------------| | wheel_inspect | Read METADATA, version, and entry points from a wheel | | sdist_inspect | Read PKG-INFO and file manifest from a source distribution | | python_smoke_install | Create throwaway venv, install wheel, run commands (cross-platform) | | uv_build | Build Python distributions with uv (clean+build+collect) | | pytest_run | Run pytest with structured output (typed counts + failure details) | | ruff | Run ruff linter (mode="check") or formatter (mode="format") | | coverage | Run tests under coverage and return typed coverage summary |
rust-tools (4 tools)
| Tool | Description | |------|-------------| | cargo_env_info | Diagnostic info about Rust/Cargo installation | | cargo_build | Build with structured error/warning diagnostics | | cargo_test | Run tests and return results | | cargo_clippy | Lint with structured clippy diagnostics |
template-sync-tools (8 tools)
| Tool | Description | |------|-------------| | template_load_manifest | Load and validate manifest (auto-migrates v1 to v2) | | template_compute_status | Per-file sync status (UP_TO_DATE, PROJECT_CUSTOM, AUTO_UPDATE, CONFLICT) | | template_get_diff | Unified diff with three-way merge support | | template_apply_file | Apply template/provided content or skip, returns manifest entry | | template_finalize_sync | Atomically write manifest after sync completes | | template_reverse_placeholders | Deterministic reverse placeholder replacement (longest-first) | | template_check_cross_variant | Check which variants share identical file content | | template_propagate_to_variants | Write template-ready content to multiple variant directories |
JSON Configuration
As an alternative to claude mcp add, you can configure servers directly in ~/.claude.json (user-level) or .claude/mcp.json (project-level):
{
"mcpServers": {
"git-tools": {
"command": "mcp-git-tools"
},
"github-tools": {
"command": "mcp-github-tools",
"env": {
"GH_PROMPT_DISABLED": "1"
}
},
"dotnet-tools": {
"command": "mcp-dotnet-tools"
},
"rust-tools": {
"command": "mcp-rust-tools"
},
"ollama-tools": {
"command": "mcp-ollama-tools",
"env": {
"OLLAMA_URL": "http://127.0.0.1:11434"
}
},
"template-sync-tools": {
"command": "mcp-template-sync-tools"
},
"python-tools": {
"command": "mcp-python-tools"
}
}
}
If mcp-* scripts aren't on your PATH, use the absolute path to the script (e.g. "command": "/full/path/to/venv/bin/mcp-git-tools") or switch to pipx which installs scripts in a PATH-resolvable location.
Design Decisions
- stdio transport: All servers use stdio for Claude Code compatibility
- Cross-platform: Windows
CREATE_NO_WINDOWflag prevents console popups; Unix process group handling for clean timeouts - No bash git:
git_mcp.pyresolvesgit.exedirectly to avoid.cmdwrapper issues on Windows - English locale: dotnet-tools forces
DOTNET_CLI_UI_LANGUAGE=enfor consistent output parsing - Output limits: Large outputs (diffs, logs) are truncated to prevent context overflow
Roadmap
- PyPI publishing. The package is fully PyPI-ready (pyproject.toml, hatchling build, console scripts, smoke tests) but not yet uploaded. Once published,
pip install "mcp-dev-servers[ollama]"will work without the git URL. - GitHub Actions. Automated test runs on PRs and Trusted-Publishing-based releases on tag push are planned.
Development
To contribute or run from source:
git clone https://github.com/dagonet/mcp-dev-servers.git
cd mcp-dev-servers
python -m venv .venv
.venv/Scripts/activate # Windows
# source .venv/bin/activate # Linux/macOS
pip install -e ".[ollama,dev]"
pytest tests/
pip install -e installs the package in editable mode, so the console scripts (mcp-git-tools, etc.) pick up your local edits immediately. pytest tests/ runs the smoke tests that verify each server imports cleanly and registers the expected number of tools.
Related Projects
Part of an ecosystem for AI-assisted development with Claude Code:
- claude-code-toolkit -- Template system for bootstrapping projects with Claude Code configuration, MCP server setup, and cross-platform setup scripts
- open-brain -- A personal AI memory system with a CLI, MCP server, and web dashboard; as of v0.3.0 it also compiles topic-level wiki pages with provenance and runs a contradiction-audit pass over your captured notes
Open Brain's MCP server runs alongside the servers here in the same Claude Code session -- its thoughts_, wiki_, and contradictions_ tools surface decisions, insights, and topic summaries that complement the git_, gh_, dotnet_, cargo_, ollama_, and template_* tools above.











