docs: add mcpdoc setup instructions for IDE integration

This commit is contained in:
Dmitry Sichkar 2025-05-01 19:30:00 +03:00
parent aaf0f70565
commit f615d46c58
3 changed files with 207 additions and 1 deletions

View File

@ -69,6 +69,8 @@
- [Handling updates with a service](#handling-updates-with-a-service)
- [DX (Developer Experience)](#dx-developer-experience)
- [`mypy` / type annotations](#mypy--type-annotations)
- [MCP Documentation Server](#mcp-documentation-server)
- [Setting up MCP Documentation Server](#setting-up-mcp-documentation-server)
- [Django Styleguide in the Wild](#django-styleguide-in-the-wild)
- [Additional resources / Alternatives](#additional-resources--alternatives)
- [Inspiration](#inspiration)
@ -334,7 +336,7 @@ This can actually be a downside (_this is not the case, starting from Django 4.1
The Django's documentation on constraints is quite lean, so you can check the following articles by Adam Johnson, for examples of how to use them:
1. [Using Django Check Constraints to Ensure Only One Field Is Set](https://adamj.eu/tech/2020/03/25/django-check-constraints-one-field-set/)
1. [Djangos Field Choices Dont Constrain Your Data](https://adamj.eu/tech/2020/01/22/djangos-field-choices-dont-constrain-your-data/)
1. [Django's Field Choices Don't Constrain Your Data](https://adamj.eu/tech/2020/01/22/djangos-field-choices-dont-constrain-your-data/)
1. [Using Django Check Constraints to Prevent Self-Following](https://adamj.eu/tech/2021/02/26/django-check-constraints-prevent-self-following/)
### Properties
@ -2763,6 +2765,14 @@ Additionally, this particular project - <https://github.com/wemake-services/wema
Figure out what is going to work best for you.
### MCP Documentation Server
To enhance the developer experience when working with the Django Styleguide, we provide an MCP (Machine Context Protocol) documentation server that integrates with various IDEs like Cursor, Windsurf, and Claude.
This allows you to get contextual help and documentation while working with the Django Styleguide directly in your IDE.
For setup instructions, see [Setting up MCP Documentation Server](tools/setup_mpc.md).
## Django Styleguide in the Wild
Here's a collection of different folks & companies, that have found the styleguide useful:

71
llms.txt Normal file
View File

@ -0,0 +1,71 @@
# Django Styleguide Documentation Index
This is a documentation index for the Django Styleguide, providing links to key sections and concepts.
## Core Concepts
- Overview and Philosophy
https://github.com/HackSoftware/Django-Styleguide#overview
- Models
https://github.com/HackSoftware/Django-Styleguide#models
- Base Model: https://github.com/HackSoftware/Django-Styleguide#base-model
- Validation: https://github.com/HackSoftware/Django-Styleguide#validation---clean-and-full_clean
- Properties: https://github.com/HackSoftware/Django-Styleguide#properties
- Methods: https://github.com/HackSoftware/Django-Styleguide#methods
- Services
https://github.com/HackSoftware/Django-Styleguide#services
- Function-based Services: https://github.com/HackSoftware/Django-Styleguide#example---function-based-service
- Class-based Services: https://github.com/HackSoftware/Django-Styleguide#example---class-based-service
- Naming Conventions: https://github.com/HackSoftware/Django-Styleguide#naming-convention
- Modules: https://github.com/HackSoftware/Django-Styleguide#modules
- APIs & Serializers
https://github.com/HackSoftware/Django-Styleguide#apis--serializers
- List APIs: https://github.com/HackSoftware/Django-Styleguide#list-apis
- Detail API: https://github.com/HackSoftware/Django-Styleguide#detail-api
- Create API: https://github.com/HackSoftware/Django-Styleguide#create-api
- Update API: https://github.com/HackSoftware/Django-Styleguide#update-api
## Project Structure
- Settings
https://github.com/HackSoftware/Django-Styleguide#settings
- Environment Variables: https://github.com/HackSoftware/Django-Styleguide#prefixing-environment-variables-with-django_
- Integrations: https://github.com/HackSoftware/Django-Styleguide#integrations
- URLs
https://github.com/HackSoftware/Django-Styleguide#urls
## Advanced Topics
- Error Handling
https://github.com/HackSoftware/Django-Styleguide#errors--exception-handling
- Exception Handling Overview: https://github.com/HackSoftware/Django-Styleguide#how-exception-handling-works-in-the-context-of-drf
- HackSoft's Approach: https://github.com/HackSoftware/Django-Styleguide#approach-2---hacksofts-proposed-way
- Testing
https://github.com/HackSoftware/Django-Styleguide#testing
- Overview: https://github.com/HackSoftware/Django-Styleguide#overview-1
- Naming Conventions: https://github.com/HackSoftware/Django-Styleguide#naming-conventions
- Factories: https://github.com/HackSoftware/Django-Styleguide#factories
- Celery Integration
https://github.com/HackSoftware/Django-Styleguide#celery
- Basics: https://github.com/HackSoftware/Django-Styleguide#the-basics
- Error Handling: https://github.com/HackSoftware/Django-Styleguide#error-handling
- Periodic Tasks: https://github.com/HackSoftware/Django-Styleguide#periodic-tasks
## Developer Experience
- Type Annotations & mypy
https://github.com/HackSoftware/Django-Styleguide#mypy--type-annotations
## Examples & Resources
- Django Styleguide Example Project
https://github.com/HackSoftware/Django-Styleguide-Example
- Additional Resources
https://github.com/HackSoftware/Django-Styleguide#additional-resources--alternatives

125
tools/setup_mpc.md Normal file
View File

@ -0,0 +1,125 @@
# Setting up MCP Documentation Server
This guide explains how to set up the MCP documentation server for the Django Styleguide, which allows IDEs like Cursor and Windsurf to access the documentation context.
## Overview
We use [mcpdoc](https://github.com/langchain-ai/mcpdoc) to expose our `llms.txt` documentation index to IDEs. This allows for better context when working with the Django Styleguide.
## Installation
1. First, install mcpdoc:
```bash
pip install mcpdoc
```
2. Configure your IDE to use the MCP server:
### For Cursor
1. Open Cursor settings and navigate to the MCP configuration
2. Create or edit `~/.cursor/mcp.json`:
```json
{
"mcpServers": {
"django-styleguide-docs-mcp": {
"command": "uvx",
"args": [
"--from",
"mcpdoc",
"mcpdoc",
"--urls",
"DjangoStyleguide:https://raw.githubusercontent.com/HackSoftware/Django-Styleguide/master/llms.txt",
"--transport",
"stdio"
]
}
}
}
```
3. Update Cursor Global Rules (Settings/Rules) with:
```
for ANY question about Django Styleguide, use the django-styleguide-docs-mcp server to help answer --
+ call list_doc_sources tool to get the available llms.txt file
+ call fetch_docs tool to read it
+ reflect on the urls in llms.txt
+ reflect on the input question
+ call fetch_docs on any urls relevant to the question
+ use this to answer the question
```
### For Windsurf
1. Open Cascade with `CMD+L` (on Mac)
2. Click Configure MCP to open `~/.codeium/windsurf/mcp_config.json`
3. Add the same configuration as shown above for Cursor
4. Update Windsurf Rules/Global rules with the same rule pattern shown above
### For Claude Desktop
1. Open Settings/Developer to update `~/Library/Application\ Support/Claude/claude_desktop_config.json`
2. Add the same configuration as shown above
3. Restart Claude Desktop app
Note: Currently, Claude Desktop doesn't support global rules, so you'll need to include the rules in your prompts:
```
<rules>
for ANY question about Django Styleguide, use the django-styleguide-docs-mcp server to help answer --
+ call list_doc_sources tool to get the available llms.txt file
+ call fetch_docs tool to read it
+ reflect on the urls in llms.txt
+ reflect on the input question
+ call fetch_docs on any urls relevant to the question
</rules>
```
### For Claude Code
In a terminal after installing Claude Code, run:
```bash
claude mcp add-json django-styleguide-docs '{"type":"stdio","command":"uvx" ,"args":["--from", "mcpdoc", "mcpdoc", "--urls", "DjangoStyleguide:https://raw.githubusercontent.com/HackSoftware/Django-Styleguide/master/llms.txt"]}' -s local
```
## Testing the Setup
To test if the setup is working:
1. Open your IDE
2. Ask a question about the Django Styleguide
3. The IDE should use the MCP server to fetch relevant documentation and provide context-aware answers
## Troubleshooting
If you run into issues with Python version incompatibility, you can explicitly specify the filepath to the Python executable in the `uvx` command:
```json
{
"mcpServers": {
"django-styleguide-docs-mcp": {
"command": "uvx",
"args": [
"--python",
"/path/to/python",
"--from",
"mcpdoc",
"mcpdoc",
"--urls",
"DjangoStyleguide:https://raw.githubusercontent.com/HackSoftware/Django-Styleguide/master/llms.txt",
"--transport",
"stdio",
"--port",
"8082",
"--host",
"localhost"
]
}
}
}
```