AI Dev Assistant
# š¤ AI Dev Assistant ā MCP Server
> A production-ready **Model Context Protocol (MCP) Server** that bridges Claude Desktop directly to your local Windows 10 development environment. Give Claude the ability to read your code, run scripts, search docs, and execute safe terminal commands ā all without leaving the chat.
---
## ⨠What It Does
This server extends Claude Desktop with four powerful developer tools:
| Tool | What It Does |
|------|-------------|
| `github_repo_reader` | Recursively reads any local repo (ignores `.git`, `node_modules`, binaries) |
| `code_executor` | Runs Python or Node.js snippets in isolated child processes |
| `doc_search` | Full-text keyword search across your local `docs/` folder |
| `terminal_commander` | Executes safe CMD/PowerShell commands via a strict allowlist |
---
## šļø Project Structure
```
ai-dev-assistant-mcp/
āāā main.py ā MCP server entry point & tool implementations
āāā pyproject.toml ā Python project configuration
āāā claude_desktop_config.json ā Example Claude Desktop config block
āāā README.md
```
---
## āļø Setup (Windows 10)
### Prerequisites
- [Python 3.8+](https://python.org/) ā verify with `python --version`
- [Node.js](https://nodejs.org/) (optional, only needed for the `code_executor` Node.js runtime)
- [Claude Desktop](https://claude.ai/download) installed
- [uv](https://github.com/astral-sh/uv) (optional, for faster installs) or pip
### Step 1 ā Clone / Place the Project
Place this project folder somewhere permanent, for example:
```
C:\ai-dev-assistant-mcp\
```
> ā ļø **Do not move the folder later** ā Claude Desktop will reference the script path.
### Step 2 ā Install Dependencies
Open a terminal in the project root and run:
```cmd
cd C:\ai-dev-assistant-mcp
pip install -e .
```
Or with uv:
```cmd
uv pip install -e .
```
### Step 3 ā Configure Claude Desktop
Open (or create) the Claude Desktop config file at:
```
%APPDATA%\Claude\claude_desktop_config.json
```
Paste in the following block (adjust the path if you placed the project elsewhere):
```json
{
"mcpServers": {
"ai-dev-assistant": {
"command": "python",
"args": [
"C:\\ai-dev-assistant-mcp\\main.py"
],
"env": {}
}
}
}
```
> š” **Already have other MCP servers?** Just add the `"ai-dev-assistant"` key inside your existing `"mcpServers"` object.
### Step 4 ā Restart Claude Desktop
Fully quit and relaunch Claude Desktop. You should see the š§ tools icon in the chat input bar ā click it to confirm all four tools appear.
---
## š Security Architecture
### Terminal Commander Safe List
The `terminal_commander` tool will **refuse to run any command** whose base name is not on the explicit allowlist in `main.py`:
```python
SAFE_COMMANDS_ALLOWLIST = {
"dir", "ls", "git", "node", "npm", "npx", "python",
"tsc", "docker", "ipconfig", "ping", "whoami", ...
}
```
**Additionally**, even allowlisted commands are blocked if they match any dangerous pattern:
```
rm -rf del /s format C: shutdown
taskkill net user netsh Invoke-Expression
curl | bash registry edits UAC elevation ...
```
To **add a new command**, edit `SAFE_COMMANDS_ALLOWLIST` in `main.py`.
### Code Executor Sandbox
- Scripts run in **isolated temp files** ā no persistent state between calls
- **15-second hard timeout** ā runaway processes are killed automatically
- **64 KB output cap** ā prevents memory exhaustion from verbose output
- Temp files are **deleted immediately** after execution
### Repo Reader Limits
- Ignores: `.git`, `node_modules`, `.next`, `dist`, `__pycache__`, `.venv`, etc.
- Skips: binary files, images, archives, `.lock` files
- **500 KB per-file cap** ā large generated files are skipped automatically
- **500 file maximum** per call
---
## š ļø Usage Examples
Once connected to Claude Desktop, you can ask Claude:
```
"Read my repo at C:\Projects\my-api and explain the architecture."
"Run this Python script and tell me the output:
import json; print(json.dumps({'status': 'ok', 'count': 42}))"
"Search my docs folder at C:\Projects\my-api\docs for 'authentication'"
"Run git status in C:\Projects\my-api"
"What files are in C:\Projects? Run dir."
```
---
## š§ Development
### Run Directly
```cmd
python main.py
```
### Add a New Tool
1. Add a new `@Tool()` decorated function in `main.py`
2. The server will automatically register it
---
## šŖ Windows Path Notes
Windows paths use backslashes. In JSON config files, **always double-escape** them:
```json
"C:\\Users\\YourName\\Projects\\my-repo"
```
In Claude prompts, you can use either style ā the tools normalize paths internally using `pathlib.Path.resolve()`.
---
## š¦ Tech Stack
| Layer | Technology |
|-------|-----------|
| Language | Python 3.8+ |
| MCP SDK | `mcp` |
| Process execution | `asyncio.subprocess` |
| Transport | stdio (standard MCP transport) |
---
## š¤ How It Bridges Claude and Windows
```
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Claude Desktop ā
ā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā ā
ā ā Claude AI (Claude Sonnet / Opus) ā ā
ā ā ā Decides which tool to call ā ā
ā āāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā ā
āāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā MCP Protocol (stdio JSON-RPC)
āāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā AI Dev Assistant MCP Server ā
ā āāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāāā ā
ā ā Repo Reader ā ā Code Executor ā ā
ā ā (pathlib) ā ā (asyncio.subprocess) ā ā
ā āāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāāā ā
ā āāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāāā ā
ā ā Doc Search ā ā Terminal Commander ā ā
ā ā (os.walk) ā ā (cmd.exe / pwsh.exe) ā ā
ā āāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāāā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāā
ā
āāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāā
ā Windows 10 File System ā
ā Python / Node Runtimes ā
ā Git / npm / Docker ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
```
Claude sends a tool-call request over stdio. The MCP server validates it, executes the appropriate handler, and returns formatted Markdown back to Claude ā which presents it naturally in the conversation.
---
## š License
MIT ā free to use, modify, and build upon.
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose with no overlap: code_executor runs code snippets, doc_search searches documents, github_repo_reader reads repository files, and terminal_commander executes system commands. The descriptions make it easy to differentiate between them, as they target different resources and use cases.
The naming follows a consistent snake_case pattern with descriptive names (e.g., code_executor, doc_search), but there is a minor deviation with github_repo_reader using a compound term that could be more aligned (e.g., repo_reader). Overall, the naming is readable and mostly predictable.
With 4 tools, the count is well-scoped for an AI Dev Assistant, covering key development tasks like code execution, documentation search, repository reading, and terminal commands. Each tool earns its place without feeling excessive or insufficient for the server's purpose.
The tool set covers essential development workflows, including code execution, documentation, repository management, and system operations. A minor gap exists in not having tools for more advanced tasks like debugging or version control beyond basic commands, but agents can work around this with the provided tools.