devtoolkit-mcp 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- devtoolkit_mcp-0.1.0/PKG-INFO +371 -0
- devtoolkit_mcp-0.1.0/README.md +347 -0
- devtoolkit_mcp-0.1.0/pyproject.toml +51 -0
- devtoolkit_mcp-0.1.0/pyproject.toml.orig +51 -0
- devtoolkit_mcp-0.1.0/src/devtoolkit_mcp/__init__.py +2 -0
- devtoolkit_mcp-0.1.0/src/devtoolkit_mcp/server.py +23 -0
- devtoolkit_mcp-0.1.0/src/devtoolkit_mcp/tools/__init__.py +0 -0
- devtoolkit_mcp-0.1.0/src/devtoolkit_mcp/tools/analyze_error.py +108 -0
- devtoolkit_mcp-0.1.0/src/devtoolkit_mcp/tools/check_dependencies.py +366 -0
- devtoolkit_mcp-0.1.0/src/devtoolkit_mcp/tools/explain_code.py +233 -0
- devtoolkit_mcp-0.1.0/src/devtoolkit_mcp/tools/repository.py +134 -0
- devtoolkit_mcp-0.1.0/src/devtoolkit_mcp/tools/run_tests.py +332 -0
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: devtoolkit-mcp
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: An open-source MCP server providing essential software development tools for AI assistants.
|
|
5
|
+
Keywords: mcp,model-context-protocol,developer-tools,python,ai,code-analysis
|
|
6
|
+
Author: Prashil001
|
|
7
|
+
Author-email: Prashil001 <151838442+Prashil001@users.noreply.github.com>
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Requires-Dist: fastmcp>=4.1.6
|
|
17
|
+
Requires-Dist: httpx>=0.28.1
|
|
18
|
+
Requires-Dist: packaging>=26.3
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Project-URL: Homepage, https://github.com/Prashil001/devtoolkit-mcp
|
|
21
|
+
Project-URL: Repository, https://github.com/Prashil001/devtoolkit-mcp
|
|
22
|
+
Project-URL: Issues, https://github.com/Prashil001/devtoolkit-mcp/issues
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
# DevToolkit MCP
|
|
26
|
+
|
|
27
|
+
**A lightweight, model-independent MCP server that gives AI assistants practical software development tools.**
|
|
28
|
+
|
|
29
|
+
[](https://pypi.org/project/devtoolkit-mcp/)
|
|
30
|
+
[](https://pypi.org/project/devtoolkit-mcp/)
|
|
31
|
+
[](LICENSE)
|
|
32
|
+
[](https://github.com/Prashil001/devtoolkit-mcp)
|
|
33
|
+
|
|
34
|
+
DevToolkit MCP is an open-source **Model Context Protocol (MCP) server** that exposes essential software development utilities as tools that AI assistants can call.
|
|
35
|
+
|
|
36
|
+
It helps AI assistants inspect Python projects, understand code, analyze errors, check dependencies, and execute tests through a standardized MCP interface.
|
|
37
|
+
|
|
38
|
+
The server is designed to be simple, extensible, and independent of any specific AI model or provider.
|
|
39
|
+
|
|
40
|
+
## Features
|
|
41
|
+
|
|
42
|
+
- **Repository Analysis:** Inspect project structure, file types, and configuration files.
|
|
43
|
+
- **Code Explanation:** Analyze Python code using Abstract Syntax Trees (AST).
|
|
44
|
+
- **Error Analysis:** Extract useful information from Python exceptions and tracebacks.
|
|
45
|
+
- **Dependency Checking:** Identify dependency versions and check for known vulnerabilities.
|
|
46
|
+
- **Test Execution:** Detect and execute pytest or unittest test suites.
|
|
47
|
+
- **MCP Integration:** Connect compatible AI assistants through the Model Context Protocol.
|
|
48
|
+
- **Model Independent:** Works with MCP-compatible clients without requiring a specific LLM provider.
|
|
49
|
+
|
|
50
|
+
## Available Tools
|
|
51
|
+
|
|
52
|
+
DevToolkit MCP currently provides five tools.
|
|
53
|
+
|
|
54
|
+
### 1. `analyze_repository`
|
|
55
|
+
|
|
56
|
+
Analyzes a local project directory and returns information about its structure.
|
|
57
|
+
|
|
58
|
+
**Parameters**
|
|
59
|
+
|
|
60
|
+
| Parameter | Type | Default | Description |
|
|
61
|
+
|---|---|---|---|
|
|
62
|
+
| `repository_path` | string | Required | Path to the project directory |
|
|
63
|
+
| `max_files` | integer | 5000 | Maximum number of files to inspect |
|
|
64
|
+
|
|
65
|
+
**Returns**
|
|
66
|
+
|
|
67
|
+
- Project directory information
|
|
68
|
+
- File and directory statistics
|
|
69
|
+
- File extension distribution
|
|
70
|
+
- Detected languages and configuration files
|
|
71
|
+
- Project structure information
|
|
72
|
+
|
|
73
|
+
### 2. `explain_code`
|
|
74
|
+
|
|
75
|
+
Analyzes Python source code or a Python file using AST parsing.
|
|
76
|
+
|
|
77
|
+
**Parameters**
|
|
78
|
+
|
|
79
|
+
| Parameter | Type | Default | Description |
|
|
80
|
+
|---|---|---|---|
|
|
81
|
+
| `code` | string or null | None | Python source code |
|
|
82
|
+
| `file_path` | string or null | None | Path to a Python file |
|
|
83
|
+
|
|
84
|
+
Provide either `code` or `file_path`.
|
|
85
|
+
|
|
86
|
+
**Returns**
|
|
87
|
+
|
|
88
|
+
- Functions and classes
|
|
89
|
+
- Methods and imports
|
|
90
|
+
- Code structure and statistics
|
|
91
|
+
- Syntax errors, when present
|
|
92
|
+
|
|
93
|
+
### 3. `analyze_error`
|
|
94
|
+
|
|
95
|
+
Analyzes Python exceptions and traceback text.
|
|
96
|
+
|
|
97
|
+
**Parameters**
|
|
98
|
+
|
|
99
|
+
| Parameter | Type | Description |
|
|
100
|
+
|---|---|---|
|
|
101
|
+
| `error_text` | string | Python exception or traceback |
|
|
102
|
+
|
|
103
|
+
**Returns**
|
|
104
|
+
|
|
105
|
+
- Exception type
|
|
106
|
+
- Error message
|
|
107
|
+
- File and line information, when available
|
|
108
|
+
- Traceback details
|
|
109
|
+
- Structured error information
|
|
110
|
+
|
|
111
|
+
### 4. `check_dependencies`
|
|
112
|
+
|
|
113
|
+
Checks project dependencies and retrieves package information from external vulnerability and package registries.
|
|
114
|
+
|
|
115
|
+
**Parameters**
|
|
116
|
+
|
|
117
|
+
| Parameter | Type | Description |
|
|
118
|
+
|---|---|---|
|
|
119
|
+
| `project_path` | string | Path to the Python project |
|
|
120
|
+
|
|
121
|
+
**Supported dependency files**
|
|
122
|
+
|
|
123
|
+
- `requirements.txt`
|
|
124
|
+
- `pyproject.toml`
|
|
125
|
+
|
|
126
|
+
**Returns**
|
|
127
|
+
|
|
128
|
+
- Detected dependencies
|
|
129
|
+
- Declared dependency versions
|
|
130
|
+
- Latest available versions from PyPI
|
|
131
|
+
- Known vulnerability information from OSV, when available
|
|
132
|
+
|
|
133
|
+
Network access is required for live PyPI and OSV checks. Network failures are handled without treating unavailable data as a clean security result.
|
|
134
|
+
|
|
135
|
+
### 5. `run_tests`
|
|
136
|
+
|
|
137
|
+
Automatically detects and executes Python test suites.
|
|
138
|
+
|
|
139
|
+
**Parameters**
|
|
140
|
+
|
|
141
|
+
| Parameter | Type | Default | Description |
|
|
142
|
+
|---|---|---|---|
|
|
143
|
+
| `project_path` | string | Required | Path to the project directory |
|
|
144
|
+
| `timeout` | integer | 120 | Maximum execution time in seconds (1–600) |
|
|
145
|
+
|
|
146
|
+
**Supported frameworks**
|
|
147
|
+
|
|
148
|
+
- pytest
|
|
149
|
+
- unittest
|
|
150
|
+
|
|
151
|
+
**Returns**
|
|
152
|
+
|
|
153
|
+
- Detected testing framework
|
|
154
|
+
- Test execution status
|
|
155
|
+
- Process exit code
|
|
156
|
+
- Test output
|
|
157
|
+
- Timeout or execution error information, when applicable
|
|
158
|
+
|
|
159
|
+
The tool prefers pytest when both frameworks are detected and uses the project's virtual environment when available.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Installation
|
|
164
|
+
|
|
165
|
+
### Using uv (recommended)
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
uv tool install devtoolkit-mcp
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Alternatively, run it without permanently installing:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
uvx devtoolkit-mcp
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Using pip
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
pip install devtoolkit-mcp
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## MCP Client Configuration
|
|
184
|
+
|
|
185
|
+
Add DevToolkit MCP to an MCP-compatible client.
|
|
186
|
+
|
|
187
|
+
### Claude Desktop
|
|
188
|
+
|
|
189
|
+
Open your Claude Desktop configuration file and add:
|
|
190
|
+
|
|
191
|
+
```json
|
|
192
|
+
{
|
|
193
|
+
"mcpServers": {
|
|
194
|
+
"devtoolkit-mcp": {
|
|
195
|
+
"command": "uvx",
|
|
196
|
+
"args": ["devtoolkit-mcp"]
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Restart Claude Desktop after saving the configuration.
|
|
203
|
+
|
|
204
|
+
### Other MCP-compatible clients
|
|
205
|
+
|
|
206
|
+
Use the following command to launch the server:
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
uvx devtoolkit-mcp
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Configure your client to launch this command using its supported MCP transport configuration.
|
|
213
|
+
|
|
214
|
+
## Example Use Cases
|
|
215
|
+
|
|
216
|
+
Once connected to an MCP-compatible AI assistant, you can ask it to:
|
|
217
|
+
|
|
218
|
+
- "Analyze the structure of my Python project."
|
|
219
|
+
- "Explain the classes and functions in this Python file."
|
|
220
|
+
- "Analyze this traceback and identify the exception."
|
|
221
|
+
- "Check my project's dependencies for outdated or vulnerable packages."
|
|
222
|
+
- "Run the tests in my project and show me the results."
|
|
223
|
+
|
|
224
|
+
The AI assistant decides when to invoke the available tools based on the user's request and the MCP client.
|
|
225
|
+
|
|
226
|
+
## Architecture
|
|
227
|
+
|
|
228
|
+
```text
|
|
229
|
+
AI Assistant
|
|
230
|
+
|
|
|
231
|
+
|
|
|
232
|
+
MCP-Compatible Client
|
|
233
|
+
|
|
|
234
|
+
|
|
|
235
|
+
DevToolkit MCP
|
|
236
|
+
|
|
|
237
|
+
+--------+--------+
|
|
238
|
+
| | |
|
|
239
|
+
v v v
|
|
240
|
+
Repository Code Error
|
|
241
|
+
Analysis Analysis Analysis
|
|
242
|
+
|
|
|
243
|
+
+----------------+
|
|
244
|
+
| |
|
|
245
|
+
v v
|
|
246
|
+
Dependency Test
|
|
247
|
+
Checking Execution
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
DevToolkit MCP uses the Model Context Protocol to expose development utilities through standardized tool interfaces.
|
|
251
|
+
|
|
252
|
+
## Technology Stack
|
|
253
|
+
|
|
254
|
+
| Technology | Purpose |
|
|
255
|
+
|---|---|
|
|
256
|
+
| Python 3.11+ | Core implementation |
|
|
257
|
+
| FastMCP | MCP server and tool registration |
|
|
258
|
+
| AST | Python source code analysis |
|
|
259
|
+
| httpx | HTTP requests to external APIs |
|
|
260
|
+
| packaging | Python dependency version parsing |
|
|
261
|
+
| pytest | Automated testing |
|
|
262
|
+
| Ruff | Linting and formatting |
|
|
263
|
+
| uv | Python project and package management |
|
|
264
|
+
|
|
265
|
+
## Project Structure
|
|
266
|
+
|
|
267
|
+
```text
|
|
268
|
+
devtoolkit-mcp/
|
|
269
|
+
│
|
|
270
|
+
├── src/
|
|
271
|
+
│ └── devtoolkit_mcp/
|
|
272
|
+
│ ├── tools/
|
|
273
|
+
│ │ ├── repository.py
|
|
274
|
+
│ │ ├── explain_code.py
|
|
275
|
+
│ │ ├── analyze_error.py
|
|
276
|
+
│ │ ├── check_dependencies.py
|
|
277
|
+
│ │ └── run_tests.py
|
|
278
|
+
│ │
|
|
279
|
+
│ └── server.py
|
|
280
|
+
│
|
|
281
|
+
├── tests/
|
|
282
|
+
│
|
|
283
|
+
├── .github/
|
|
284
|
+
│ └── workflows/
|
|
285
|
+
│ └── publish.yml
|
|
286
|
+
│
|
|
287
|
+
├── LICENSE
|
|
288
|
+
├── README.md
|
|
289
|
+
├── pyproject.toml
|
|
290
|
+
└── uv.lock
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
## Development Setup
|
|
294
|
+
|
|
295
|
+
### 1. Clone the repository
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
git clone https://github.com/Prashil001/devtoolkit-mcp.git
|
|
299
|
+
cd devtoolkit-mcp
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### 2. Install dependencies
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
uv sync --dev
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### 3. Run tests
|
|
309
|
+
|
|
310
|
+
```bash
|
|
311
|
+
uv run pytest -v
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### 4. Run linting
|
|
315
|
+
|
|
316
|
+
```bash
|
|
317
|
+
uv run ruff check .
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### 5. Check formatting
|
|
321
|
+
|
|
322
|
+
```bash
|
|
323
|
+
uv run ruff format --check .
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
### 6. Run the MCP server
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
uv run devtoolkit-mcp
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
## Security Considerations
|
|
333
|
+
|
|
334
|
+
- Repository inspection is restricted to validated local project directories.
|
|
335
|
+
- Test execution uses subprocesses without shell command interpretation.
|
|
336
|
+
- Test execution has a configurable timeout.
|
|
337
|
+
- Dependency vulnerability checks use external public APIs.
|
|
338
|
+
- Tool execution should only be allowed on project directories the user trusts.
|
|
339
|
+
- Do not expose sensitive project files or credentials to AI clients unnecessarily.
|
|
340
|
+
|
|
341
|
+
## Contributing
|
|
342
|
+
|
|
343
|
+
Contributions, bug reports, and feature suggestions are welcome.
|
|
344
|
+
|
|
345
|
+
1. Fork the repository.
|
|
346
|
+
2. Create a feature branch.
|
|
347
|
+
3. Make your changes.
|
|
348
|
+
4. Add or update tests.
|
|
349
|
+
5. Run the test suite and Ruff checks.
|
|
350
|
+
6. Submit a pull request.
|
|
351
|
+
|
|
352
|
+
Please keep contributions focused on improving the existing five tools unless the project scope is explicitly expanded.
|
|
353
|
+
|
|
354
|
+
## License
|
|
355
|
+
|
|
356
|
+
This project is licensed under the **MIT License**.
|
|
357
|
+
|
|
358
|
+
See the [LICENSE](LICENSE) file for details.
|
|
359
|
+
|
|
360
|
+
## Author
|
|
361
|
+
|
|
362
|
+
**Prashil001**
|
|
363
|
+
|
|
364
|
+
- GitHub: https://github.com/Prashil001
|
|
365
|
+
- Repository: https://github.com/Prashil001/devtoolkit-mcp
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
If you find DevToolkit MCP useful, consider giving the repository a ⭐ on GitHub.
|
|
370
|
+
|
|
371
|
+
**Built to make AI-assisted software development more capable through MCP.**
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
# DevToolkit MCP
|
|
2
|
+
|
|
3
|
+
**A lightweight, model-independent MCP server that gives AI assistants practical software development tools.**
|
|
4
|
+
|
|
5
|
+
[](https://pypi.org/project/devtoolkit-mcp/)
|
|
6
|
+
[](https://pypi.org/project/devtoolkit-mcp/)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
[](https://github.com/Prashil001/devtoolkit-mcp)
|
|
9
|
+
|
|
10
|
+
DevToolkit MCP is an open-source **Model Context Protocol (MCP) server** that exposes essential software development utilities as tools that AI assistants can call.
|
|
11
|
+
|
|
12
|
+
It helps AI assistants inspect Python projects, understand code, analyze errors, check dependencies, and execute tests through a standardized MCP interface.
|
|
13
|
+
|
|
14
|
+
The server is designed to be simple, extensible, and independent of any specific AI model or provider.
|
|
15
|
+
|
|
16
|
+
## Features
|
|
17
|
+
|
|
18
|
+
- **Repository Analysis:** Inspect project structure, file types, and configuration files.
|
|
19
|
+
- **Code Explanation:** Analyze Python code using Abstract Syntax Trees (AST).
|
|
20
|
+
- **Error Analysis:** Extract useful information from Python exceptions and tracebacks.
|
|
21
|
+
- **Dependency Checking:** Identify dependency versions and check for known vulnerabilities.
|
|
22
|
+
- **Test Execution:** Detect and execute pytest or unittest test suites.
|
|
23
|
+
- **MCP Integration:** Connect compatible AI assistants through the Model Context Protocol.
|
|
24
|
+
- **Model Independent:** Works with MCP-compatible clients without requiring a specific LLM provider.
|
|
25
|
+
|
|
26
|
+
## Available Tools
|
|
27
|
+
|
|
28
|
+
DevToolkit MCP currently provides five tools.
|
|
29
|
+
|
|
30
|
+
### 1. `analyze_repository`
|
|
31
|
+
|
|
32
|
+
Analyzes a local project directory and returns information about its structure.
|
|
33
|
+
|
|
34
|
+
**Parameters**
|
|
35
|
+
|
|
36
|
+
| Parameter | Type | Default | Description |
|
|
37
|
+
|---|---|---|---|
|
|
38
|
+
| `repository_path` | string | Required | Path to the project directory |
|
|
39
|
+
| `max_files` | integer | 5000 | Maximum number of files to inspect |
|
|
40
|
+
|
|
41
|
+
**Returns**
|
|
42
|
+
|
|
43
|
+
- Project directory information
|
|
44
|
+
- File and directory statistics
|
|
45
|
+
- File extension distribution
|
|
46
|
+
- Detected languages and configuration files
|
|
47
|
+
- Project structure information
|
|
48
|
+
|
|
49
|
+
### 2. `explain_code`
|
|
50
|
+
|
|
51
|
+
Analyzes Python source code or a Python file using AST parsing.
|
|
52
|
+
|
|
53
|
+
**Parameters**
|
|
54
|
+
|
|
55
|
+
| Parameter | Type | Default | Description |
|
|
56
|
+
|---|---|---|---|
|
|
57
|
+
| `code` | string or null | None | Python source code |
|
|
58
|
+
| `file_path` | string or null | None | Path to a Python file |
|
|
59
|
+
|
|
60
|
+
Provide either `code` or `file_path`.
|
|
61
|
+
|
|
62
|
+
**Returns**
|
|
63
|
+
|
|
64
|
+
- Functions and classes
|
|
65
|
+
- Methods and imports
|
|
66
|
+
- Code structure and statistics
|
|
67
|
+
- Syntax errors, when present
|
|
68
|
+
|
|
69
|
+
### 3. `analyze_error`
|
|
70
|
+
|
|
71
|
+
Analyzes Python exceptions and traceback text.
|
|
72
|
+
|
|
73
|
+
**Parameters**
|
|
74
|
+
|
|
75
|
+
| Parameter | Type | Description |
|
|
76
|
+
|---|---|---|
|
|
77
|
+
| `error_text` | string | Python exception or traceback |
|
|
78
|
+
|
|
79
|
+
**Returns**
|
|
80
|
+
|
|
81
|
+
- Exception type
|
|
82
|
+
- Error message
|
|
83
|
+
- File and line information, when available
|
|
84
|
+
- Traceback details
|
|
85
|
+
- Structured error information
|
|
86
|
+
|
|
87
|
+
### 4. `check_dependencies`
|
|
88
|
+
|
|
89
|
+
Checks project dependencies and retrieves package information from external vulnerability and package registries.
|
|
90
|
+
|
|
91
|
+
**Parameters**
|
|
92
|
+
|
|
93
|
+
| Parameter | Type | Description |
|
|
94
|
+
|---|---|---|
|
|
95
|
+
| `project_path` | string | Path to the Python project |
|
|
96
|
+
|
|
97
|
+
**Supported dependency files**
|
|
98
|
+
|
|
99
|
+
- `requirements.txt`
|
|
100
|
+
- `pyproject.toml`
|
|
101
|
+
|
|
102
|
+
**Returns**
|
|
103
|
+
|
|
104
|
+
- Detected dependencies
|
|
105
|
+
- Declared dependency versions
|
|
106
|
+
- Latest available versions from PyPI
|
|
107
|
+
- Known vulnerability information from OSV, when available
|
|
108
|
+
|
|
109
|
+
Network access is required for live PyPI and OSV checks. Network failures are handled without treating unavailable data as a clean security result.
|
|
110
|
+
|
|
111
|
+
### 5. `run_tests`
|
|
112
|
+
|
|
113
|
+
Automatically detects and executes Python test suites.
|
|
114
|
+
|
|
115
|
+
**Parameters**
|
|
116
|
+
|
|
117
|
+
| Parameter | Type | Default | Description |
|
|
118
|
+
|---|---|---|---|
|
|
119
|
+
| `project_path` | string | Required | Path to the project directory |
|
|
120
|
+
| `timeout` | integer | 120 | Maximum execution time in seconds (1–600) |
|
|
121
|
+
|
|
122
|
+
**Supported frameworks**
|
|
123
|
+
|
|
124
|
+
- pytest
|
|
125
|
+
- unittest
|
|
126
|
+
|
|
127
|
+
**Returns**
|
|
128
|
+
|
|
129
|
+
- Detected testing framework
|
|
130
|
+
- Test execution status
|
|
131
|
+
- Process exit code
|
|
132
|
+
- Test output
|
|
133
|
+
- Timeout or execution error information, when applicable
|
|
134
|
+
|
|
135
|
+
The tool prefers pytest when both frameworks are detected and uses the project's virtual environment when available.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Installation
|
|
140
|
+
|
|
141
|
+
### Using uv (recommended)
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
uv tool install devtoolkit-mcp
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Alternatively, run it without permanently installing:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
uvx devtoolkit-mcp
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Using pip
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
pip install devtoolkit-mcp
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## MCP Client Configuration
|
|
160
|
+
|
|
161
|
+
Add DevToolkit MCP to an MCP-compatible client.
|
|
162
|
+
|
|
163
|
+
### Claude Desktop
|
|
164
|
+
|
|
165
|
+
Open your Claude Desktop configuration file and add:
|
|
166
|
+
|
|
167
|
+
```json
|
|
168
|
+
{
|
|
169
|
+
"mcpServers": {
|
|
170
|
+
"devtoolkit-mcp": {
|
|
171
|
+
"command": "uvx",
|
|
172
|
+
"args": ["devtoolkit-mcp"]
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Restart Claude Desktop after saving the configuration.
|
|
179
|
+
|
|
180
|
+
### Other MCP-compatible clients
|
|
181
|
+
|
|
182
|
+
Use the following command to launch the server:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
uvx devtoolkit-mcp
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Configure your client to launch this command using its supported MCP transport configuration.
|
|
189
|
+
|
|
190
|
+
## Example Use Cases
|
|
191
|
+
|
|
192
|
+
Once connected to an MCP-compatible AI assistant, you can ask it to:
|
|
193
|
+
|
|
194
|
+
- "Analyze the structure of my Python project."
|
|
195
|
+
- "Explain the classes and functions in this Python file."
|
|
196
|
+
- "Analyze this traceback and identify the exception."
|
|
197
|
+
- "Check my project's dependencies for outdated or vulnerable packages."
|
|
198
|
+
- "Run the tests in my project and show me the results."
|
|
199
|
+
|
|
200
|
+
The AI assistant decides when to invoke the available tools based on the user's request and the MCP client.
|
|
201
|
+
|
|
202
|
+
## Architecture
|
|
203
|
+
|
|
204
|
+
```text
|
|
205
|
+
AI Assistant
|
|
206
|
+
|
|
|
207
|
+
|
|
|
208
|
+
MCP-Compatible Client
|
|
209
|
+
|
|
|
210
|
+
|
|
|
211
|
+
DevToolkit MCP
|
|
212
|
+
|
|
|
213
|
+
+--------+--------+
|
|
214
|
+
| | |
|
|
215
|
+
v v v
|
|
216
|
+
Repository Code Error
|
|
217
|
+
Analysis Analysis Analysis
|
|
218
|
+
|
|
|
219
|
+
+----------------+
|
|
220
|
+
| |
|
|
221
|
+
v v
|
|
222
|
+
Dependency Test
|
|
223
|
+
Checking Execution
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
DevToolkit MCP uses the Model Context Protocol to expose development utilities through standardized tool interfaces.
|
|
227
|
+
|
|
228
|
+
## Technology Stack
|
|
229
|
+
|
|
230
|
+
| Technology | Purpose |
|
|
231
|
+
|---|---|
|
|
232
|
+
| Python 3.11+ | Core implementation |
|
|
233
|
+
| FastMCP | MCP server and tool registration |
|
|
234
|
+
| AST | Python source code analysis |
|
|
235
|
+
| httpx | HTTP requests to external APIs |
|
|
236
|
+
| packaging | Python dependency version parsing |
|
|
237
|
+
| pytest | Automated testing |
|
|
238
|
+
| Ruff | Linting and formatting |
|
|
239
|
+
| uv | Python project and package management |
|
|
240
|
+
|
|
241
|
+
## Project Structure
|
|
242
|
+
|
|
243
|
+
```text
|
|
244
|
+
devtoolkit-mcp/
|
|
245
|
+
│
|
|
246
|
+
├── src/
|
|
247
|
+
│ └── devtoolkit_mcp/
|
|
248
|
+
│ ├── tools/
|
|
249
|
+
│ │ ├── repository.py
|
|
250
|
+
│ │ ├── explain_code.py
|
|
251
|
+
│ │ ├── analyze_error.py
|
|
252
|
+
│ │ ├── check_dependencies.py
|
|
253
|
+
│ │ └── run_tests.py
|
|
254
|
+
│ │
|
|
255
|
+
│ └── server.py
|
|
256
|
+
│
|
|
257
|
+
├── tests/
|
|
258
|
+
│
|
|
259
|
+
├── .github/
|
|
260
|
+
│ └── workflows/
|
|
261
|
+
│ └── publish.yml
|
|
262
|
+
│
|
|
263
|
+
├── LICENSE
|
|
264
|
+
├── README.md
|
|
265
|
+
├── pyproject.toml
|
|
266
|
+
└── uv.lock
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
## Development Setup
|
|
270
|
+
|
|
271
|
+
### 1. Clone the repository
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
git clone https://github.com/Prashil001/devtoolkit-mcp.git
|
|
275
|
+
cd devtoolkit-mcp
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### 2. Install dependencies
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
uv sync --dev
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### 3. Run tests
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
uv run pytest -v
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### 4. Run linting
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
uv run ruff check .
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### 5. Check formatting
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
uv run ruff format --check .
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### 6. Run the MCP server
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
uv run devtoolkit-mcp
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
## Security Considerations
|
|
309
|
+
|
|
310
|
+
- Repository inspection is restricted to validated local project directories.
|
|
311
|
+
- Test execution uses subprocesses without shell command interpretation.
|
|
312
|
+
- Test execution has a configurable timeout.
|
|
313
|
+
- Dependency vulnerability checks use external public APIs.
|
|
314
|
+
- Tool execution should only be allowed on project directories the user trusts.
|
|
315
|
+
- Do not expose sensitive project files or credentials to AI clients unnecessarily.
|
|
316
|
+
|
|
317
|
+
## Contributing
|
|
318
|
+
|
|
319
|
+
Contributions, bug reports, and feature suggestions are welcome.
|
|
320
|
+
|
|
321
|
+
1. Fork the repository.
|
|
322
|
+
2. Create a feature branch.
|
|
323
|
+
3. Make your changes.
|
|
324
|
+
4. Add or update tests.
|
|
325
|
+
5. Run the test suite and Ruff checks.
|
|
326
|
+
6. Submit a pull request.
|
|
327
|
+
|
|
328
|
+
Please keep contributions focused on improving the existing five tools unless the project scope is explicitly expanded.
|
|
329
|
+
|
|
330
|
+
## License
|
|
331
|
+
|
|
332
|
+
This project is licensed under the **MIT License**.
|
|
333
|
+
|
|
334
|
+
See the [LICENSE](LICENSE) file for details.
|
|
335
|
+
|
|
336
|
+
## Author
|
|
337
|
+
|
|
338
|
+
**Prashil001**
|
|
339
|
+
|
|
340
|
+
- GitHub: https://github.com/Prashil001
|
|
341
|
+
- Repository: https://github.com/Prashil001/devtoolkit-mcp
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
If you find DevToolkit MCP useful, consider giving the repository a ⭐ on GitHub.
|
|
346
|
+
|
|
347
|
+
**Built to make AI-assisted software development more capable through MCP.**
|