Django Migrations MCP Service
Manages Django database migrations in distributed environments by wrapping Django's migration commands as MCP endpoints, providing functionality to check migration status, create new migrations, and apply migrations with additional validation and safety checks.
Provides containerized deployment options with various configurations for running the MCP service, including development, testing, and production environments with appropriate network setups.
Enables CI/CD pipeline integration for automating migration checks on pull requests, particularly when model or migration files are modified.
Integrates with Redis for MCP server communication, allowing the Django migrations service to use Redis as a transport layer for message passing in distributed environments.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Django Migrations MCP Serviceshow me which migrations haven't been applied yet"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Django Migrations MCP Service
A Model Context Protocol (MCP) service for managing Django migrations in distributed environments. This service wraps Django's migration commands and exposes them as MCP endpoints, making it easy to manage migrations across multiple services and integrate with CI/CD pipelines.
Features
Check migration status (equivalent to
showmigrations)Create new migrations with validation (equivalent to
makemigrations)Apply migrations with safety checks (equivalent to
migrate)Additional validation and safety checks:
Sequential migration order verification
Conflict detection
Dependency validation
Safety analysis of migration operations
Related MCP server: PocketBase MCP Server
Installation
Local Development
Clone the repository:
git clone https://github.com/mrrobotke/django-migrations-mcp.git
cd django-migrations-mcpInstall dependencies:
pip install -r requirements.txtConfiguration
Set the following environment variables:
export DJANGO_SETTINGS_MODULE="your_project.settings"
export MCP_SERVICE_PORT=8000 # Optional, defaults to 8000Usage
Running the Service
Directly with Python:
python -m migrations_mcp.serviceUsing Docker:
docker build -t django-migrations-mcp .
docker run -e DJANGO_SETTINGS_MODULE=your_project.settings \
-v /path/to/your/django/project:/app/project \
-p 8000:8000 \
django-migrations-mcpMCP Endpoints
Show Migrations:
from mcp import MCPClient
client = MCPClient()
migrations = await client.call("show_migrations")Make Migrations:
result = await client.call("make_migrations", {
"app_labels": ["myapp"], # Optional
"dry_run": True # Optional
})Apply Migrations:
result = await client.call("migrate", {
"app_label": "myapp", # Optional
"migration_name": "0001", # Optional
"fake": False, # Optional
"plan": True # Optional
})CI/CD Integration
Example GitHub Actions workflow:
name: Django Migrations Check
on:
pull_request:
paths:
- '*/migrations/*.py'
- '*/models.py'
jobs:
check-migrations:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install -r requirements.txt
- name: Start MCP service
run: |
python -m migrations_mcp.service &
- name: Check migrations
run: |
python ci/check_migrations.pyExample check_migrations.py script:
import asyncio
from mcp import MCPClient
async def check_migrations():
client = MCPClient()
# Check current status
migrations = await client.call("show_migrations")
# Try making migrations
result = await client.call("make_migrations", {"dry_run": True})
if not result.success:
print(f"Error: {result.message}")
exit(1)
print("Migration check passed!")
if __name__ == "__main__":
asyncio.run(check_migrations())Development
Running Tests
pytest migrations_mcp/tests/Code Style
The project follows PEP 8 guidelines. Format your code using:
black migrations_mcp/
isort migrations_mcp/License
MIT License. See LICENSE file for details.
Contributing
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
Docker Usage
The project includes a docker-commands.json file that provides structured commands for different deployment scenarios. You can use these commands directly or parse them in your scripts.
Available Docker Configurations
Redis MCP Server
# Run Redis MCP server
docker run -i --rm mcp/redis redis://host.docker.internal:6379Django Migrations MCP Server
# Basic setup
docker run -d \
--name django-migrations-mcp \
-e DJANGO_SETTINGS_MODULE=your_project.settings \
-e MCP_SERVICE_PORT=8000 \
-v /path/to/your/django/project:/app/project \
-p 8000:8000 \
django-migrations-mcp
# With Redis integration
docker run -d \
--name django-migrations-mcp \
-e DJANGO_SETTINGS_MODULE=your_project.settings \
-e MCP_SERVICE_PORT=8000 \
-e REDIS_URL=redis://host.docker.internal:6379 \
-v /path/to/your/django/project:/app/project \
-p 8000:8000 \
--network host \
django-migrations-mcpDevelopment Environment
# Using docker-compose
docker-compose up -d --buildTesting Environment
# Run tests in container
docker run --rm \
-e DJANGO_SETTINGS_MODULE=your_project.settings \
-e PYTHONPATH=/app \
-v ${PWD}:/app \
django-migrations-mcp \
pytestProduction Environment
# Production setup with health check
docker run -d \
--name django-migrations-mcp \
-e DJANGO_SETTINGS_MODULE=your_project.settings \
-e MCP_SERVICE_PORT=8000 \
-e REDIS_URL=redis://your-redis-host:6379 \
-v /path/to/your/django/project:/app/project \
-p 8000:8000 \
--restart unless-stopped \
--network your-network \
django-migrations-mcpUsing the Commands Programmatically
You can parse and use the commands programmatically:
import json
import subprocess
# Load commands
with open('docker-commands.json') as f:
commands = json.load(f)
# Run Redis MCP server
redis_config = commands['mcpServers']['redis']
subprocess.run([redis_config['command']] + redis_config['args'])
# Run Django Migrations MCP server
django_config = commands['mcpServers']['djangoMigrations']
subprocess.run([django_config['command']] + django_config['args'])Network Setup
Development Network
docker network create mcp-dev-networkProduction Network
docker network create --driver overlay --attachable mcp-prod-networkUsing MCP Tools
The service exposes several endpoints that can be accessed via curl or any HTTP client:
Show Migrations
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{"method": "show_migrations"}'Make Migrations
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{"method": "make_migrations", "params": {"apps": ["your_app"]}}'Apply Migrations
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{"method": "migrate", "params": {"app": "your_app"}}'This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceA server implementation of the Model Context Protocol (MCP) that provides REST API endpoints for managing and interacting with MCP resources.Last updated
- Alicense-qualityDmaintenanceA comprehensive MCP server for managing PocketBase database schemas and migrations via REST API. It enables users to generate and execute migrations for creating, modifying, and deleting collections and fields directly through MCP-compatible clients.Last updated16MIT
- Flicense-qualityDmaintenanceExposes Django runtime information (settings, apps, URLs, models, migrations) as MCP resources for AI agents to inspect a live Django project without static analysis.Last updated
- Alicense-qualityBmaintenanceA Model Context Protocol (MCP) server for developing Django applications. It exposes Django project information through MCP tools, enabling AI assistants to better understand and interact with Django codebases.Last updated107MIT
Related MCP Connectors
MCP (Model Context Protocol) server for Appwrite
The official MCP Server from Mia-Platform to interact with Mia-Platform Console
MCP server for managing Prisma Postgres.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mrrobotke/django-migrations-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server