Skip to content

Commit 736589f

Browse files
consolidate all packages to one central package (#33)
1 parent 94351d4 commit 736589f

File tree

22 files changed

+233
-335
lines changed

22 files changed

+233
-335
lines changed

.github/VERSION

Lines changed: 0 additions & 1 deletion
This file was deleted.

.github/workflows/release.yml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,10 @@ jobs:
2424
with:
2525
enable-cache: true
2626

27-
- name: Build all packages
27+
- name: Build package
2828
run: |
2929
uv build
3030
31-
for package_dir in packages/*/; do
32-
if [ -f "$package_dir/pyproject.toml" ]; then
33-
uv build --package $(basename "$package_dir")
34-
fi
35-
done
36-
3731
- name: Upload release assets to GitHub
3832
env:
3933
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,27 @@ For multi-package releases, use package names as subsections:
2626

2727
## [Unreleased]
2828

29+
After splitting into separate packages in v2025.8.1 for security isolation, we're consolidating back into a single package, for a few reasons:
30+
31+
- It seemed like a good idea, but it's early and the extra complexity adds unnecessary friction
32+
- While production deployment would be nice eventually, the current focus is developer tooling and building a damn good MCP server for Django
33+
34+
The GitHub releases were previously using calendar versioning (e.g., v2025.8.1) while individual packages used semantic versioning. With the consolidation to a single package, GitHub releases will now use the package version directly. The consolidated package will be v0.10.0, continuing from the highest version among the previous packages (mcp-django-shell was at 0.9.0).
35+
36+
### Changed
37+
38+
- **BREAKING**: Consolidated mcp-django-shell functionality into main mcp-django package
39+
- Shell tools are now included by default (no longer optional via extras)
40+
- Tool names changed: `shell_django_shell``django_shell`, `shell_django_reset``django_shell_reset`
41+
42+
### Deprecated
43+
44+
- mcp-django-shell package is deprecated, functionality moved to mcp-django
45+
46+
### Removed
47+
48+
- Optional installation extras `[shell]` and `[all]` - shell is now always included
49+
2950
## [2025.8.1]
3051

3152
- mcp-django: 0.2.0

README.md

Lines changed: 9 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -38,35 +38,17 @@ cog.outl(f"- Django {', '.join([version for version in DJ_VERSIONS if version !=
3838

3939
## Installation
4040

41-
Choose the installation option that fits your use case:
42-
43-
### Core
44-
45-
Provides read-only Django project exploration resources (`django://project`, `django://apps`, `django://models`).
46-
4741
```bash
48-
# Read-only resources only - no shell access
4942
pip install mcp-django
5043

5144
# Or with uv
5245
uv add mcp-django
5346
```
5447

55-
56-
### Shell
48+
## Getting Started
5749

5850
⚠️ **DO NOT use in production!**
5951

60-
Adds `django_shell` and `django_reset` tools for executing Python code.
61-
62-
```bash
63-
# Includes shell tools for code execution
64-
pip install "mcp-django[shell]"
65-
66-
# Or with uv
67-
uv add "mcp-django[shell]"
68-
```
69-
7052
> [!WARNING]
7153
>
7254
> **Seriously, only enable in development!**
@@ -83,18 +65,6 @@ uv add "mcp-django[shell]"
8365
>
8466
> I suggest using something like [django-read-only](https://github.com/adamchainz/django-read-only) if you need some CYA protection against this. Or, you know, don't use this in any sensitive environments.
8567
86-
### All
87-
88-
```bash
89-
# Currently same as [shell]
90-
pip install "mcp-django[all]"
91-
92-
# Or with uv
93-
uv add "mcp-django[all]"
94-
```
95-
96-
## Getting Started
97-
9868
Run the MCP server directly from your Django project directory:
9969

10070
```bash
@@ -179,29 +149,23 @@ Don't see your client? [Submit a PR](CONTRIBUTING.md) with setup instructions.
179149

180150
## Features
181151

182-
mcp-django provides an MCP server with Django project exploration resources and optional shell access for LLM assistants. The base package offers safe, read-only resources while the shell extra adds stateful code execution capabilities.
152+
mcp-django provides an MCP server with Django project exploration resources and stateful shell access for LLM assistants.
183153

184154
It wouldn't be an MCP server README without a gratuitous list of features punctuated by emojis, so:
185155

186-
**Core (mcp-django):**
187-
188156
- 🔍 **Project exploration** - MCP resources for discovering apps, models, and configuration
189157
- 🚀 **Zero configuration** - No schemas, no settings, just Django
190-
- 🔒 **Safe by default** - Read-only resources, no code execution
191-
- 🌐 **Multiple transports** - STDIO, HTTP, SSE support
192-
193-
**Shell (mcp-django[shell]):**
194-
195158
- 🐚 **Stateful shell** - `django_shell` executes Python code in your Django environment
196159
- 🔄 **Persistent state** - Imports and variables stick around between calls
197-
- 🧹 **Reset when needed** - `django_reset` clears the session when things get weird
160+
- 🧹 **Reset when needed** - `django_shell_reset` clears the session when things get weird
198161
- 🤖 **LLM-friendly** - Designed for LLM assistants that already know Python
199162
- 📦 **Minimal dependencies** - Just FastMCP and Django (you already have Django)
200163
- 🎯 **Does one thing well** - Runs code. That's it. That's the feature.
164+
- 🌐 **Multiple transports** - STDIO, HTTP, SSE support
201165

202166
Inspired by Armin Ronacher's [Your MCP Doesn't Need 30 Tools: It Needs Code](https://lucumr.pocoo.org/2025/8/18/code-mcps/).
203167

204-
### Resources (mcp-django)
168+
### Resources
205169

206170
Read-only resources are provided for project exploration without executing code (note that resource support varies across MCP clients):
207171

@@ -211,12 +175,12 @@ Read-only resources are provided for project exploration without executing code
211175

212176
The idea is to give just enough information about the project to hopefully guide the LLM assistant and prevent needless shell exploration, allowing it to get straight to work.
213177

214-
### Tools (mcp-django-shell)
178+
### Tools
215179

216-
When installed with the shell extra, two tools handle shell operations and session management:
180+
Two tools handle shell operations and session management:
217181

218-
- `django_shell` - Execute Python code in a persistent Django shell session
219-
- `django_reset` - Reset the session, clearing all variables and imports
182+
- `shell` - Execute Python code in a persistent Django shell session
183+
- `shell_reset` - Reset the session, clearing all variables and imports
220184

221185
Imports and variables persist between calls within the shell tool, so the LLM can work iteratively - exploring your models, testing queries, debugging issues.
222186

RELEASING.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
# Releasing a New Version
22

3-
> [!NOTE]
4-
>
5-
> This is out-of-date and will be updated soon.
6-
73
When it comes time to cut a new release, follow these steps:
84

95
1. Create a new git branch off of `main` for the release.
Lines changed: 10 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,12 @@
11
# mcp-django-shell
22

3-
Django shell tools for the [mcp-django](https://github.com/joshuadavidthomas/mcp-django) Model Context Protocol server.
4-
5-
## ⚠️ Security Warning
6-
7-
This package provides unrestricted shell access to your Django project. It executes arbitrary Python code with full access to your database and file system.
8-
9-
**NEVER install this in production environments!**
10-
11-
## Installation
12-
13-
This package is distributed as an optional extra of the main `mcp-django` package:
14-
15-
```bash
16-
pip install "mcp-django[shell]"
17-
```
18-
19-
## Features
20-
21-
The `mcp-django-shell` package adds two tools to the base MCP server:
22-
23-
- **`django_shell`** - Execute Python code in a persistent Django shell session
24-
- **`django_reset`** - Reset the session, clearing all variables and imports
25-
26-
These tools enable LLM assistants to:
27-
28-
- Write and execute Python code directly in your Django environment
29-
- Maintain state between calls (imports, variables persist)
30-
- Query and modify your database using the Django ORM
31-
- Debug and test code interactively
32-
33-
## Documentation
34-
35-
For full documentation, configuration, and usage instructions, see the main package:
36-
37-
[https://github.com/joshuadavidthomas/mcp-django](https://github.com/joshuadavidthomas/mcp-django)
38-
39-
## License
40-
41-
mcp-django-shell is licensed under the MIT license. See the [LICENSE](https://github.com/joshuadavidthomas/mcp-django/blob/main/LICENSE) file for details.
3+
> [!CAUTION]
4+
> **This package is deprecated as of version 0.10.0**
5+
>
6+
> The shell functionality has been integrated into the main `mcp-django` package.
7+
> Please uninstall `mcp-django-shell` and install `mcp-django>=0.10.0` instead.
8+
>
9+
> ```bash
10+
> pip uninstall mcp-django-shell
11+
> pip install mcp-django>=0.10.0
12+
> ```

packages/mcp-django-shell/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ dependencies = [
5151
"mcp-django>=0.1.0,<1.0.0",
5252
"pydantic[email]>=2.11.7",
5353
]
54-
description = "MCP server providing a stateful Django shell for LLM assistants."
54+
description = "[DEPRECATED - Use mcp-django instead] MCP server providing a stateful Django shell for LLM assistants."
5555
license = { file = "LICENSE" }
5656
name = "mcp-django-shell"
5757
readme = "README.md"
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from __future__ import annotations
2+
3+
import warnings
4+
5+
warnings.warn(
6+
"mcp-django-shell is deprecated and will be removed in the next release. "
7+
"Shell functionality is now included in mcp-django>=0.10.0. "
8+
"Please uninstall mcp-django-shell and install mcp-django instead.",
9+
DeprecationWarning,
10+
stacklevel=2,
11+
)

packages/mcp-django-shell/src/mcp_django_shell/apps.py

Lines changed: 0 additions & 8 deletions
This file was deleted.

packages/mcp-django-shell/src/mcp_django_shell/py.typed

Whitespace-only changes.

0 commit comments

Comments
 (0)