mcpField
D
Django Admin MCP

Django Admin MCP

本地服务
7tg.github.io开发工具301 天前更新

关于 Django Admin MCP

django-admin-mcp 是一个 Django 应用,只需为 ModelAdmin 添加一个 mixin,即可让 MCP 客户端通过 Django admin 访问模型数据。它沿用 Django 的权限、校验和审计机制,适合希望让 Agent 操作数据但保持访问控制的 Django 项目。

主要功能

  1. 01从现有 ModelAdmin 自动生成 CRUD 工具
  2. 02复用 Django 权限检查与 full_clean 校验
  3. 03管理员操作可作为工具调用
  4. 04写入操作记录到 LogEntry 变更历史
  5. 05通过 mcp_fields 隐藏敏感字段
  6. 06令牌按用户权限范围授权

适用场景

  1. 01让 Agent 查询和修改 Django 后台中的记录
  2. 02通过已有的管理员动作执行批量发布或导出
  3. 03为 Agent 提供可审计的数据修改入口

MCP 相关

该包通过 HTTP 暴露 MCP 端点,提供模型的增删改查、动作、关联查询和历史等工具,以及 models:// 与 data:// 只读资源。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"7tg-django-admin": {
"command": "uvx",
"args": [
"django-admin-mcp"
],
"env": {
"host": "<host>"
}
}
}
}
启动命令uvx django-admin-mcp
需要配置的环境变量
hostHostname of your Django deployment that mounts django_admin_mcp.urls (e.g. admin.example.com)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypidjango-admin-mcp0.11.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

django-admin-mcp

PyPI version PyPI downloads Python versions Django Tests codecov Documentation License MCP Registry Glama MCP server

只需为 ModelAdmin 添加一个 mixin,MCP 客户端即可在 Django 现有权限体系内使用 CRUD、管理操作和关系遍历功能。依赖项只有 Django 和 Pydantic。

认识 django-admin-mcp:一个 mixin 即可将 ModelAdmin 转换为 MCP 工具,每次调用都会经过管理后台的权限检查、验证和审计日志,每位用户一个令牌、与 Agent 的对话,以及如何开始使用

一个 mixin、请求在管理后台中的处理路径、一个令牌、与 Agent 的对话,然后开始使用。50 秒 · 1080p · 60 fps · 原声配乐。观看视频。

为什么不直接让 Agent 访问数据库?

数据库连接会让 Agent 直接接触原始数据表。Django 管理后台已经定义了谁可以操作哪些内容、如何验证记录,以及哪些批量操作是允许的。这个软件包让 Agent 经过这一层,而不是绕过它:

  • 权限 — 每次调用都会经过 ModelAdmin.has_*_permission()。令牌只能执行其关联用户有权执行的操作;在你授予权限之前,令牌没有任何访问权限。
  • 验证 — 写入操作会运行 full_clean() 和你的 save_model() / save_related() 钩子,因此 Agent 无法保存管理表单会拒绝的记录。
  • 审计历史 — 每次创建、更新、删除和操作都会以令牌对应的用户身份写入 Django 的 LogEntry。你可以查看 Agent 修改了什么,Agent 也可以读取历史记录。
  • 管理操作 — “发布”、“退款”、“导出 CSV”等已注册操作都会成为工具,也支持两步确认流程。Agent 使用你设计的操作,而不是自行编写 SQL。
  • 限定暴露范围 — mcp_fields / mcp_exclude_fields 可防止密码哈希和密钥出现在 Agent 的视野中;get_queryset() 仍会限制它可以查看的行。

对比

通用 Django MCP 服务或手动编写的 FastMCP 封装会要求你逐个函数自行定义工具、架构和权限检查。这个软件包会读取你已有的 ModelAdmin 类并据此生成工具,因此字段选择、查询集、验证、操作和权限都集中在一处,Agent 也会继承你对管理后台所做的每项更改。此外,它以普通 Django 应用的形式提供,无需 MCP SDK 或额外的 HTTP 技术栈。

安装

pip install django-admin-mcp
# settings.py
INSTALLED_APPS = [
    'django_admin_mcp',
    # ...
]

# urls.py
urlpatterns = [
    path('mcp/', include('django_admin_mcp.urls')),
    # ...
]
python manage.py migrate django_admin_mcp

快速开始

1. 暴露一个模型。 设置 mcp_expose = True,为其生成工具。具有该 mixin 但未设置此标志的模型,只能通过 find_models 发现。

from django.contrib import admin
from django_admin_mcp import MCPAdminMixin
from .models import Article, Author

@admin.register(Article)
class ArticleAdmin(MCPAdminMixin, admin.ModelAdmin):
    mcp_expose = True                    # list_article, get_article, create_article, ...
    mcp_exclude_fields = ['internal_notes']
    list_display = ['title', 'author', 'published']

@admin.register(Author)
class AuthorAdmin(MCPAdminMixin, admin.ModelAdmin):
    pass                                 # discoverable, no direct tools

2. 创建令牌,路径为 /admin/django_admin_mcp/mcptoken/。仅授予 Agent 所需的权限和组。关联用户会限制令牌的能力,并作为其变更日志中记录的身份。

3. 将 MCP 客户端指向该服务,例如在 Claude Code 的 .mcp.json 中:

{
  "mcpServers": {
    "django-admin": {
      "type": "http",
      "url": "http://localhost:8000/mcp/",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}

4. 向 Agent 提问。

User: Show me the latest 10 articles
Agent: [calls list_article with limit=10]

User: Mark articles 1, 2 and 3 as published
Agent: [calls action_article with action="mark_as_published", ids=[1, 2, 3]]

User: What changed on article 42?
Agent: [calls history_article with id=42]

工具

对于每个暴露的模型(此处为 Article),服务会生成:

工具用途
list_article, get_article读取数据,支持分页和筛选(需要 view)
create_article, update_article, delete_article写入单条记录(需要 add / change / delete)
bulk_article一次创建、更新或删除多条记录
actions_article, action_article列出并运行已注册的管理操作,包括返回文件的导出操作
describe_article字段定义、类型和约束
related_article跟进外键和反向关联
history_articleDjango 管理后台变更历史
autocomplete_article为外键字段搜索建议

此外,还提供用于发现所有暴露模型的 find_models、面向常见工作流的 MCP 提示词,以及 models:// 和 data:// URI 下的只读资源。此端点通过 HTTP 使用 JSON-RPC 2.0,并提供 GET /mcp/health/ 健康检查。完整参考请参阅文档。

安全概要

  • 令牌格式为 mcp_<key>.<secret>;仅存储 secret 的加盐哈希。
  • 每个令牌都有自己的权限和组,并与其用户的权限取交集。停用用户会使其令牌失效。
  • 可配置有效期;在管理后台停用或删除令牌即可撤销。
  • 日志消息中的敏感值会被隐藏,较大的操作下载文件会受 MCP_ACTION_MAX_FILE_BYTES 限制(默认值为 5 MiB)。

详情请参阅权限和令牌管理。

要求

Python 3.10 至 3.14、Django 3.2 至 6.0、Pydantic 2。已针对该范围内的每个 Django 版本进行测试。

支持此项目

如果它为你节省了时间,请在 GitHub 上点个星,帮助其他人发现此项目。欢迎提交 Issue 和 PR;请参阅贡献指南。

星标历史图表

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。