Metadata-Version: 2.5
Name: django-dg-core
Version: 1.0.0
Summary: What the DataGroceries apps share: one MCP endpoint for all of them, people, notifications, and the checks on every way in.
Project-URL: Homepage, https://github.com/datagroceries/django-dg
Project-URL: Source, https://github.com/datagroceries/django-dg
Project-URL: Documentation, https://github.com/datagroceries/django-dg/blob/main/docs/integrating.md
Project-URL: Changelog, https://github.com/datagroceries/django-dg/blob/main/packages/django-dg-core/CHANGELOG.md
Author: Jasper Cramwinckel
License-Expression: MIT
License-File: LICENSE
Keywords: ai agents,claude,django,mcp,model context protocol
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 5.2
Classifier: Framework :: Django :: 6.0
Classifier: Framework :: Django :: 6.1
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Requires-Python: >=3.11
Requires-Dist: django-simple-history
Requires-Dist: django>=5.2
Requires-Dist: djangorestframework
Requires-Dist: markdown
Requires-Dist: nh3
Requires-Dist: pymdown-extensions
Requires-Dist: requests
Description-Content-Type: text/markdown

# django-dg-core

What the [DataGroceries](https://github.com/datagroceries/django-dg) apps share. You do not install it on its own: every DataGroceries
app, such as [django-dg-board](https://pypi.org/project/django-dg-board/), brings it along.

- **One MCP endpoint for every installed app** (`dg/mcp`). Each app registers its tools; an agent
  connects once and gets them all. A tool runs the app's own REST view, so the API and the tools follow
  the same rules. Stateless, over plain HTTP, so it runs on any WSGI server.
- **The checks on every way in.** Core issues no tokens: it lets in whatever the project and the DataGroceries
  packages register (personal tokens and the Claude connector's OAuth from
  [django-dg-connect](https://pypi.org/project/django-dg-connect/), or the project's own DRF
  authentication), and on every request checks that the person may still use the app and that the
  token covers it. A request without credentials gets a `401` that tells MCP clients where to sign in.
- **People.** Who may use an app is a Django permission; how DataGroceries names people, their @-handles,
  their email address and their image come from one class a project may subclass. No assumptions about
  the user model.
- **Notifications** by email, Slack, or Slack with email as fallback, once the change is committed.
- **A layout of its own**, with Bootstrap and Bootstrap Icons in the package, so the apps' pages work in
  any project; override one template to show them in yours.
- **Markdown**, rendered and sanitised the same way in every app (GitHub's lists, tables, task lists),
  with the Markdown editor, and **references between apps**: an app registers what it recognises in text,
  such as the board's ticket keys, and every app's Markdown links it while that app is installed.
- **One URL include** for every app, and **system checks** that say what a project still has to add.

Django 5.2 LTS and 6.x, Python 3.11 and newer. How to install the apps, and every setting, is in
[docs/integrating.md](https://github.com/datagroceries/django-dg/blob/main/docs/integrating.md).

MIT licensed.
