A short description of your project.
Project description
mcp-devtools: multi-functional development tools MCP server over SSE
mcp-devtoolsoffers a comprehensive suite of development tools, including extensive Git operations- (
git_status,git_diff_all,git_stage_and_commit,git_reset,git_log, branch management,git_checkout,git_show,git_apply_diff,git_read_file) - general file manipulation (
search_and_replace,write_to_file) - ability to execute shell commands (
execute_command)
- (
- All these functionalities are accessible via Server-Sent Events (SSE), making it a powerful and versatile server for various development needs.
- Filesystem access boundaries are maintained via passing
repo_pathto every file command, so AI assistant only has read/write access to files in the current workspace (or whatever it decides to pass asrepo_path, make sure system prompt is solid on that part). - It also won't stop assistant from
execute_commandrm -rf ~/* , so execise extreme caution with auto-allowing command execution tool or at least don't leave assistant unattended when doing so.
Prerequisites
pip install uv
Running from pypi
uvx mcp-devtools@latest -p 1337
Running from git
Linux/macOS
git clone "https://github.com/daoch4n/zen-ai-mcp-devtools/"
cd zen-ai-mcp-devtools
./server.sh -p 1337
Windows
git clone "https://github.com/daoch4n/zen-ai-mcp-devtools/"
cd zen-ai-mcp-devtools
.\server.ps1 -p 1337
AI System Prompt
You have development tools at your disposal. Use relevant tools from devtools MCP server for git management, file operations, and terminal access. When using any tool from devtools, always provide the current repository full current working directory path as the 'repo_path' option, do not set it to any other folder. 'repo_path' must be explicitly asked from user in beginning of conversation. When using execute_command tool, the current working directory will be set to repo_path provided. When using it for file manipulations, make sure to pass full path in the terminal command including repo_path prefix as manipulated file path.
Integration
mcp-devtools is designed to be used in conjunction with MCP-SuperAssistant or similar projects to extend online chat-based assistants such as ChatGPT, Google Gemini, Perplexity, Grok, Google AI Studio, OpenRouter Chat, DeepSeek, Kagi, T3 Chat with direct access to local files, git and cli tools.
MCP Server Configuration
To integrate mcp-devtools with your AI assistant, add the following configuration to your MCP settings file:
{
"mcpServers": {
"devtools": {
"url": "http://127.0.0.1:1337/sse",
"disabled": false,
"alwaysAllow": [],
"timeout": 300
}
}
}
Aider Integration
When using the ai_edit tool (which leverages Aider), please refer to the Aider Configuration documentation.
Known Issues and Workarounds
Issue:
write_to_file and 💾 Direct Code Editing vs 🤖 Delegated Editing by Coding Agent
- 🔍 When using the
write_to_filetool for direct code editing, especially with languages like JavaScript that utilize template literals (strings enclosed by backticks), you may encounter unexpected syntax errors. This issue stems from how the AI assistant generates thecontentstring, where backticks and dollar signs within template literals might be incorrectly escaped with extra backslashes (\).
Mitigation:
- 🔨 The
write_to_filetool integrates withtsc(TypeScript compiler) for.js,.mjs, and.tsfiles. The output oftsc --noEmit --allowJsis provided as part of the tool's response. AI assistants should parse this output to detect any compiler errors and should not proceed with further actions if errors are reported, indicating a problem with the written code.
Workarounds:
- 🤖 (most reliable) Instruct your AI assistant to delegate editing files to MCP-compatible coding agent by adding it as another MCP server, as it is more suitable for direct code manipulation, and let AI assistant act as task orchestrator that will write down plans and docs with
write_to_fileand delegate coding to specialized agent, then usegit_read_fileorgit_diffto check up on agent's work, and manage commits and branches (Aider via its MCP bridge is already integrated asai_edit_filestool). - 🖥️ (if you're feeling lucky) Instruct your AI assistant to craft a terminal command to edit problematic file via
execute_commandtool.
Available Tools
git_status
- Description: Shows the working tree status.
- Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" } }, "required": [ "repo_path" ] }
git_diff_all
- Description: Shows all changes in the working directory (staged and unstaged, compared to HEAD).
- Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" } }, "required": [ "repo_path" ] }
git_diff
- Description: Shows differences between branches or commits.
- Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" }, "target": { "type": "string" } }, "required": [ "repo_path", "target" ] }
git_stage_and_commit
- Description: Records changes to the repository. If
filesare provided, only those files will be staged and committed. Iffilesare not provided, all changes in the working directory will be staged and committed. - Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" }, "message": { "type": "string" }, "files": { "type": "array", "items": { "type": "string" }, "nullable": true } }, "required": [ "repo_path", "message" ] }
git_reset
- Description: Unstages all staged changes.
- Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" } }, "required": [ "repo_path" ] }
git_log
- Description: Shows the commit logs.
- Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" }, "max_count": { "type": "integer", "default": 10 } }, "required": [ "repo_path" ] }
git_create_branch
- Description: Creates a new branch from an optional base branch.
- Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" }, "branch_name": { "type": "string" }, "base_branch": { "type": "string", "nullable": true } }, "required": [ "repo_path", "branch_name" ] }
git_checkout
- Description: Switches branches.
- Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" }, "branch_name": { "type": "string" } }, "required": [ "repo_path", "branch_name" ] }
git_show
- Description: Shows the contents of a commit.
- Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" }, "revision": { "type": "string" } }, "required": [ "repo_path", "revision" ] }
git_apply_diff
- Description: Applies a diff to the working directory. Also outputs a diff of the changes made after successful application and
tsc --noEmit --allowJsoutput for.js,.mjs, and.tsfiles to facilitate clean edits. - Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" }, "diff_content": { "type": "string" } }, "required": [ "repo_path", "diff_content" ] }
git_read_file
- Description: Reads the content of a file in the repository.
- Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" }, "file_path": { "type": "string" } }, "required": [ "repo_path", "file_path" ] }
search_and_replace
- Description: Searches for a string or regex pattern in a file and replaces it with another string. It first attempts to use
sedfor the replacement. Ifsedfails or makes no changes, it falls back to a Python-based logic that first attempts a literal search and then a regex search if no literal matches are found. Also outputs a diff of the changes made after successful replacement andtsc --noEmit --allowJsoutput for.js,.mjs, and.tsfiles to facilitate clean edits. - Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" }, "file_path": { "type": "string" }, "search_string": { "type": "string" }, "replace_string": { "type": "string" }, "ignore_case": { "type": "boolean", "default": false }, "start_line": { "type": "integer", "nullable": true }, "end_line": { "type": "integer", "nullable": true } }, "required": [ "repo_path", "file_path", "search_string", "replace_string" ] }
write_to_file
- Description: Writes content to a specified file, creating it if it doesn't exist or overwriting it if it does. Also outputs a diff of the changes made after successful write and
tsc --noemit --allowJsoutput for.js.mjs.tsfiles to facilitate clean edits. - Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" }, "file_path": { "type": "string" }, "content": { "type": "string" } }, "required": [ "repo_path", "file_path", "content" ] }
execute_command
- Description: Executes a custom shell command. The
repo_pathparameter is used to set the current working directory (cwd) for the executed command. - Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" }, "command": { "type": "string" } }, "required": [ "repo_path", "command" ] }
ai_edit
-
Description: AI pair programming tool for making targeted code changes using Aider. Use this tool to:
- Implement new features or functionality in existing code
- Add tests to an existing codebase
- Fix bugs in code
- Refactor or improve existing code
- Make structural changes across multiple files
The tool requires:
- A repository path where the code exists
- A detailed message describing what changes to make. Please only describe one change per message. If you need to make multiple changes, please submit multiple requests.
Best practices for messages:
- Be specific about what files or components to modify
- Describe the desired behavior or functionality clearly
- Provide context about the existing codebase structure
- Include any constraints or requirements to follow
Examples of good messages:
- "Add unit tests for the Customer class in src/models/customer.rb testing the validation logic"
- "Implement pagination for the user listing API in the controllers/users_controller.js file"
- "Fix the bug in utils/date_formatter.py where dates before 1970 aren't handled correctly"
- "Refactor the authentication middleware in middleware/auth.js to use async/await instead of callbacks"
-
Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" }, "message": { "type": "string" }, "options": { "type": "array", "items": { "type": "string" }, "nullable": true } }, "required": [ "repo_path", "message" ] }
aider_status
- Description: Check the status of Aider and its environment. Use this to:
- Verify Aider is correctly installed
- Check that API keys are set up
- View the current configuration
- Diagnose connection or setup issues
- Input Schema:
{ "type": "object", "properties": { "repo_path": { "type": "string" }, "check_environment": { "type": "boolean", "default": true } }, "required": [ "repo_path" ] }
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_devtools-1.1.4.tar.gz.
File metadata
- Download URL: mcp_devtools-1.1.4.tar.gz
- Upload date:
- Size: 16.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4662e5ea351d41b58734b4215ff99084c8fd02bb9e90a23456bbe2dab9eefb36
|
|
| MD5 |
a3fb506902e8bac7976f556afd0b5fbb
|
|
| BLAKE2b-256 |
4d3068e896da064c0a69a832c3db4b1b411a37d8123f8501d8144ed7f531a6a2
|
Provenance
The following attestation bundles were made for mcp_devtools-1.1.4.tar.gz:
Publisher:
python-package.yml on daoch4n/zen-ai-mcp-devtools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_devtools-1.1.4.tar.gz -
Subject digest:
4662e5ea351d41b58734b4215ff99084c8fd02bb9e90a23456bbe2dab9eefb36 - Sigstore transparency entry: 230398221
- Sigstore integration time:
-
Permalink:
daoch4n/zen-ai-mcp-devtools@67c80fdd3ab8e118a2630cd3040bc996e99df6f0 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/daoch4n
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-package.yml@67c80fdd3ab8e118a2630cd3040bc996e99df6f0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mcp_devtools-1.1.4-py3-none-any.whl.
File metadata
- Download URL: mcp_devtools-1.1.4-py3-none-any.whl
- Upload date:
- Size: 16.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29683fa97508018b72b86c3bba4ab22a3d2faabfbddf80630e77777d1e76217d
|
|
| MD5 |
1ea45a0b13dbcf633809b12375cc7552
|
|
| BLAKE2b-256 |
776584e8cce983f6432ec2cfef749b253fa00824ddb8fac12afa77605eddd64c
|
Provenance
The following attestation bundles were made for mcp_devtools-1.1.4-py3-none-any.whl:
Publisher:
python-package.yml on daoch4n/zen-ai-mcp-devtools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_devtools-1.1.4-py3-none-any.whl -
Subject digest:
29683fa97508018b72b86c3bba4ab22a3d2faabfbddf80630e77777d1e76217d - Sigstore transparency entry: 230398224
- Sigstore integration time:
-
Permalink:
daoch4n/zen-ai-mcp-devtools@67c80fdd3ab8e118a2630cd3040bc996e99df6f0 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/daoch4n
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-package.yml@67c80fdd3ab8e118a2630cd3040bc996e99df6f0 -
Trigger Event:
push
-
Statement type: