Best Practices MCP Server
A Model Context Protocol (MCP) server that provides Python coding best practices and guidelines for general coding and API development using FastAPI.
Features
- Search Best Practices: Search by keyword across all categories
- Category Browsing: Explore practices by category (general_coding, fastapi_specific, performance, code_quality)
- Code Examples: Get practical code examples for specific topics
- Code Review: Analyze code against best practices with specific recommendations
- Improvement Suggestions: Get prioritized, actionable improvements with before/after examples
- MCP Resources: Access best practices via URI (e.g.,
bestpractices://fastapi/async_operations) - Pre-built Prompts: Quick access to common tasks like code review and examples
Installation
pip install -r requirements.txt
Configuration
The server supports the following environment variables:
BEST_PRACTICES_FILE: Path to the best practices JSON file (default:data/python_best_practices.json)LOG_LEVEL: Logging level (default:INFO)
Example:
export BEST_PRACTICES_FILE=/path/to/custom_practices.json
export LOG_LEVEL=DEBUG
Running the Server
python bestpractices_mcp_server.py
Usage with Kiro IDE
- Add the server to your MCP configuration (
.kiro/settings/mcp.json):
{
"mcpServers": {
"bestpractices": {
"command": "python",
"args": ["/path/to/bestpractices_mcp_server.py"],
"env": {
"BEST_PRACTICES_FILE": "data/python_best_practices.json"
}
}
}
}
-
Restart Kiro IDE or reconnect the MCP server
-
Use the tools in your AI assistant conversations
Available Tools
search_best_practices
Search for best practices by keyword.
search_best_practices(keyword="async")
get_practice_by_category
Get practices for a specific category or topic.
get_practice_by_category(category="fastapi_specific", topic="pydantic_models")
list_categories
List all available categories.
list_categories()
get_examples_tool
Get code examples for a specific topic.
get_examples_tool(topic="type_hints")
review_code
Review code against best practices.
review_code(code="def test(): pass", context="general")
suggest_improvements
Get improvement suggestions for code.
suggest_improvements(code="def test(): pass", focus_area="type_hints")
Available Resources
Access best practices directly via URI:
bestpractices://general/{topic}- General Python practicesbestpractices://fastapi/{topic}- FastAPI-specific practicesbestpractices://performance/{topic}- Performance optimizationbestpractices://code_quality/{topic}- Code quality practicesbestpractices://all- Complete guide
Available Prompts
review_python_code- Comprehensive Python code reviewreview_fastapi_endpoint- FastAPI-specific code reviewsuggest_code_improvements- Get improvement suggestionsshow_examples- Retrieve examples for a topic
Best Practices Database
The server reads from data/python_best_practices.json which contains:
- general_coding: Naming conventions, type hints, error handling, documentation, code organization
- fastapi_specific: Routes, Pydantic models, dependency injection, async operations, middleware, security
- performance: Caching, database optimization
- code_quality: Linting, logging
The database is read dynamically on each request, so updates are reflected immediately without restarting the server.
Examples
The examples/ directory contains usage examples demonstrating the server's functionality:
- search_example.py - Search for best practices by keyword
- code_review_example.py - Review code against best practices
- resource_access_example.py - Access practices via categories and topics
Run examples:
python examples/search_example.py
python examples/code_review_example.py
python examples/resource_access_example.py
See examples/README.md for detailed documentation.
Development
Running Tests
pytest test_data_manager.py -v
Adding New Best Practices
Edit data/python_best_practices.json and add your practices following the structure:
{
"python_best_practices": {
"category_name": {
"topic_name": {
"description": "Description of the practice",
"examples": {
"example_name": "code example"
}
}
}
}
}
Troubleshooting
Server won't start
- Check that
data/python_best_practices.jsonexists - Verify the JSON file is valid
- Check file permissions
No results from search
- Verify the keyword exists in the database
- Try broader search terms
- Use
list_categories()to see available topics
Tools not appearing in Kiro
- Verify MCP configuration is correct
- Restart Kiro IDE
- Check server logs for errors
License
MIT License
