

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1234567# Project Context89## Project Overview1011You are an expert Python developer working on a production-grade MCP (Model Context Protocol) server for UniFi Network Controller integration. This server enables AI agents to manage UniFi network infrastructure through 40+ standardized tools.1213## AI Assistant Guidelines1415- Project-specific guidance for AI coding assistants is in `CLAUDE.md` and `AGENTS.md`16- Follow the development workflow and coding standards documented in these files17- Maintain consistency across all AI-assisted development1819## Technology Stack2021**Core Technologies:**22- Python 3.10+ with type hints and async/await patterns23- FastMCP framework for MCP server implementation24- Pydantic for data validation and schema generation25- Redis for optional caching layer26- pytest for testing (target 80%+ coverage)27- Pre-commit hooks: black, isort, ruff, mypy, bandit2829**Architecture:**30- Async-first design for high concurrency31- Tool-based API (40+ MCP tools across devices, networks, clients, firewall, WiFi, DPI)32- Resource endpoints for read-only data access33- Optional Redis caching with automatic invalidation34- Webhook support for real-time event handling35- Multi-site UniFi controller support3637## Project Structure3839```40unifi-mcp-server/41├── src/42│ ├── main.py # MCP server registration and entry point43│ ├── api/ # UniFi API client with rate limiting44│ ├── tools/ # MCP tool implementations (grouped by domain)45│ ├── resources/ # MCP resource definitions46│ ├── webhooks/ # Event handlers47│ ├── config/ # Configuration management48│ ├── utils/ # Validators, formatters, helpers49│ └── cache.py # Redis caching implementation50├── tests/51│ ├── unit/ # Fast, isolated tests with mocks52│ └── integration/ # Tests requiring UniFi controller53├── docs/54│ └── AI-Coding/ # AI coding guidelines55├── .env.example # Environment variable template56└── pyproject.toml # Dependencies and project config57```5859## File Naming Conventions6061- **Python files:** Use `snake_case` (e.g., `device_manager.py`)62- **Classes:** Use `PascalCase` (e.g., `UniFiClient`)63- **Functions/variables:** Use `snake_case` (e.g., `get_devices()`)64- **Constants:** Use `UPPER_SNAKE_CASE` (e.g., `DEFAULT_TIMEOUT`)65- **Test files:** Prefix with `test_` (e.g., `test_device_manager.py`)6667## Version6869**UniFi MCP Server v0.1.2**70Python 3.10+ | FastMCP | Async-first Architecture71
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| enuno/unifi-mcp-server.claude/skills/fastmcp/CLAUDE.md · 226 | CLAUDE.md | no sections | 25/100 | today | |
| enuno/unifi-mcp-server.clinerules · 226 | Cline rules | setuptestlint-formatstyle+10 | 96/100 | today | |
| enuno/unifi-mcp-server.cursor/rules/common-mistakes.mdc · 226 | Cursor rules | testlint-formatgitdo-not | 93/100 | today | |
| enuno/unifi-mcp-server.cursor/rules/core-principles.mdc · 226 | Cursor rules | teststyletypestesting-strategy+3 | 59/100 | today | |
| enuno/unifi-mcp-server.cursor/rules/environment-setup.mdc · 226 | Cursor rules | setupgitsecurityapi+2 | 57/100 | today | |
| enuno/unifi-mcp-server.cursor/rules/mcp-tools.mdc · 226 | Cursor rules | no sections | 45/100 | today | |
| enuno/unifi-mcp-server.cursor/rules/unifi-api.mdc · 226 | Cursor rules | setupsecurityapiui+1 | 62/100 | today | |
| enuno/unifi-mcp-server.cursor/rules/workflow.mdc · 226 | Cursor rules | testlint-formatgitagent-behaviour | 86/100 | today | |
| enuno/unifi-mcp-server.cursorrules · 226 | .cursorrules | setuptestlint-formatstyle+7 | 93/100 | today | |
| enuno/unifi-mcp-serverAGENTS.md · 226 | AGENTS.md | setuptestlint-formatstyle+10 | 84/100 | today | |
| enuno/unifi-mcp-serverCLAUDE.md · 226 | CLAUDE.md | testlint-formatarchtesting-strategy+4 | 90/100 | today | |
| enuno/unifi-mcp-serverGEMINI.md · 226 | GEMINI.md | setuptestlint-formatstyle+8 | 89/100 | today |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 46 | Cursor rules | testlint-formatstylearch+5 | 100/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/20-hermes-api-tests.mdc · 46 | Cursor rules | teststyletesting-strategysecurity+3 | 97/100 | 14 days ago | |
| langflow-ai/langflow.cursor/rules/docs_development.mdc · 153k | Cursor rules | setupbuildtestlint-format+7 | 97/100 | 14 days ago | |
| nerds-odd-e/doughnut.cursor/rules/cli.mdc · 49 | Cursor rules | setupbuildteststyle+4 | 96/100 | 14 days ago | |
| pr-pm/prpm.cursor/rules/github-actions-testing.mdc · 121 | Cursor rules | setupbuildstylearch+4 | 93/100 | 14 days ago | |
| enuno/unifi-mcp-server.cursor/rules/common-mistakes.mdc · 226 | Cursor rules | testlint-formatgitdo-not | 93/100 | today | |
| pr-pm/prpm.cursor/rules/creating-agents-md.mdc · 121 | Cursor rules | testlint-formatstylearch+7 | 92/100 | 14 days ago | |
| iloveitaly/llm-ide-rules.cursor/rules/general.mdc · 13 | Cursor rules | teststyledo-notagent-behaviour+1 | 92/100 | 14 days ago |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/enuno-unifi-mcp-server-cursor-rules-project-context)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.