项目简介

'mcp-django' 是一个遵循 Model Context Protocol (MCP) 标准的服务器实现,旨在将您的Django项目转化为LLM可理解和操作的上下文。它允许大型语言模型 (LLM) 客户端以结构化的方式获取Django项目的内部信息(如应用程序、模型、配置),并提供一个有状态的Python shell,使LLM能够直接执行Python代码,与Django环境进行深度交互,从而实现自动化开发、调试和数据操作。

主要功能点

  • Django项目探索: 提供一系列只读的MCP资源,让LLM能够快速了解Django项目的结构,包括:
    • 'django://project': Python环境和Django配置的详细信息。
    • 'django://apps': 所有已安装的Django应用程序及其包含的模型列表。
    • 'django://models': 项目中所有Django模型的详细信息,包括导入路径、源代码位置和字段类型。
  • 有状态的Python Shell: 提供一个可供LLM调用的 'shell' 工具,允许在持久的Django环境中执行任意Python代码。这意味着变量和导入在多次调用之间会保持状态,便于LLM进行迭代式探索、测试和问题排查。
  • 会话管理: 提供 'shell_reset' 工具,允许LLM在需要时清空当前Shell会话中的所有变量和历史记录,以便重新开始一个干净的交互。
  • 多种传输协议支持: 支持通过标准输入输出 (STDIO)、HTTP 或 Server-Sent Events (SSE) 等多种方式与MCP客户端进行通信,适应不同的部署和集成场景。

安装步骤

  1. 环境准备: 确保您的系统已安装Python 3.10或更高版本,并且您的Django项目已准备就绪。
  2. 安装 'mcp-django': 打开命令行终端,运行以下命令:
    pip install mcp-django
    # 或者如果您使用 uv 作为包管理器
    # uv add mcp-django
  3. (可选)添加到 'INSTALLED_APPS': 如果您希望通过Django的管理命令('python manage.py mcp')运行服务器,请将 'mcp_django' 添加到您的Django项目的 'settings.py' 文件中的 'INSTALLED_APPS' 列表中:
    # myproject/settings.py
    INSTALLED_APPS = [
        # ... 其他应用
        "mcp_django",
        # ...
    ]

服务器配置

MCP服务器是供MCP客户端连接和使用的。以下是一个MCP客户端配置 'mcp-django' 服务器的示例(JSON格式),您需要根据您使用的MCP客户端(如Claude Code, Opencode等)进行相应的配置。

{
  "mcpServers": {
    "django": {
      "command": "python", // 用于启动 mcp-django 服务器的 Python 解释器路径
      "args": ["-m", "mcp_django"], // 启动 mcp-django 服务器所需的命令行参数
      "cwd": "/path/to/your/django/project", // MCP服务器的运行目录,应设置为您的Django项目根目录
      "env": {
        "DJANGO_SETTINGS_MODULE": "myproject.settings" // 您的Django项目设置模块的完整路径
      }
    }
  }
}

服务器启动参数说明: 您可以通过命令行参数在启动 'mcp-django' 服务器时进行配置:

  • '--settings <module_path>': 指定您的Django项目设置模块(例如 'myproject.settings')。这会覆盖环境变量 'DJANGO_SETTINGS_MODULE'。
  • '--pythonpath <path>': 将指定的路径添加到Python模块搜索路径中,这在您的Django项目模块不在标准路径时非常有用。
  • '--debug': 启用详细的调试日志输出,有助于排查问题。
  • '--transport <protocol>': 指定服务器使用的传输协议。可选值包括 'stdio' (默认,通过标准输入输出通信)、'http' (通过HTTP协议) 或 'sse' (通过Server-Sent Events协议)。
  • '--host <ip_address>': 当使用 'http' 或 'sse' 传输时,指定服务器监听的IP地址(默认为 '127.0.0.1')。
  • '--port <port_number>': 当使用 'http' 或 'sse' 传输时,指定服务器监听的端口号(默认为 '8000')。
  • '--path <url_path>': 当使用 'http' 传输时,指定MCP服务的URL路径(默认为 '/mcp')。

基本使用方法

在您的Django项目根目录下,选择以下任一方式启动 'mcp-django' 服务器:

  1. 通过Python模块直接运行(推荐): 这是最常用的启动方式,无需修改 'INSTALLED_APPS'。

    python -m mcp_django

    如果您需要指定Django设置模块或更改传输协议,可以这样运行:

    python -m mcp_django --settings myproject.settings --transport http --host 0.0.0.0 --port 8000 --debug
  2. 通过Django管理命令运行(需要已添加到 'INSTALLED_APPS'):

    python manage.py mcp

    您也可以添加 '--debug' 参数:

    python manage.py mcp --debug

服务器启动后,您的MCP客户端即可通过配置的 'command' 和 'args' 连接到 'mcp-django' 服务器。客户端可以读取例如 'django://models' 资源来获取项目模型信息,然后调用 'shell' 工具并传入Python代码来执行ORM查询或任何Django操作。

信息

分类

开发者工具