🚀 最佳實踐MCP服務器
這是一個模型上下文協議(MCP)服務器,它能讓AI代理訪問多種編程語言和框架的開發最佳實踐、安全指南和編碼標準。
🚀 快速開始
安裝
- 克隆倉庫:
git clone https://github.com/abderrahimghazali/bestpractices_mcp.git
cd bestpractices_mcp
- 創建並激活虛擬環境:
python -m venv venv
source venv/bin/activate
- 安裝依賴:
pip install -r requirements.txt
- 複製環境配置文件:
cp .env.example .env
運行服務器
獨立可執行文件方式
./bestpractices-server
通過Python模塊方式
source venv/bin/activate
python -m src.server
測試
運行測試套件:
python -m pytest tests/ -v
✨ 主要特性
- 插件架構:可擴展系統,便於添加新的語言和框架。
- 內存存儲:快速的內存數據存儲,支持即時查詢。
- 動態CSV加載:自動從插件數據目錄加載所有CSV文件。
- 284+條編碼標準:全面涵蓋安全、可訪問性、性能和最佳實踐等方面。
- MCP工具:四個用於查詢標準的工具:
get_standards
:按類別、子類別和嚴重程度過濾。
search_standards
:對所有標準進行全文搜索。
get_categories
:列出所有可用的類別。
get_standard_by_id
:獲取特定標準的詳細信息。
📦 安裝指南
安裝步驟
- 克隆倉庫:
git clone https://github.com/abderrahimghazali/bestpractices_mcp.git
cd bestpractices_mcp
- 創建並激活虛擬環境:
python -m venv venv
source venv/bin/activate
- 安裝依賴:
pip install -r requirements.txt
- 複製環境配置文件:
cp .env.example .env
💻 使用示例
基礎用法
import subprocess
import json
proc = subprocess.Popen(
["/path/to/bestpractices_mcp/bestpractices-server"],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
text=True
)
request = {
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_standards",
"arguments": {
"category": "drupal_security",
"severity": "critical"
}
},
"id": 1
}
proc.stdin.write(json.dumps(request) + "\n")
proc.stdin.flush()
response = json.loads(proc.stdout.readline())
print(response)
高級用法
可以根據不同的需求,靈活組合MCP工具的參數進行查詢。例如,使用search_standards
工具進行全文搜索時,可以指定搜索的類別和標籤:
import subprocess
import json
proc = subprocess.Popen(
["/path/to/bestpractices_mcp/bestpractices-server"],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
text=True
)
request = {
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "search_standards",
"arguments": {
"query": "SQL injection",
"categories": ["drupal_security"],
"tags": ["security"]
}
},
"id": 1
}
proc.stdin.write(json.dumps(request) + "\n")
proc.stdin.flush()
response = json.loads(proc.stdout.readline())
print(response)
📚 詳細文檔
包含的標準
服務器目前包含284+條跨多個類別的編碼標準:
Drupal標準(263條標準)
- 編碼標準(130+條標準):PHP標準、PSR - 4合規性、命名約定、代碼組織、文檔。
- 安全(70條標準):SQL注入、XSS、CSRF、訪問控制、文件上傳、身份驗證、輸入驗證。
- 最佳實踐(16條標準):字段API、依賴注入、配置管理、實體處理。
- 前端(11條標準):主題開發、響應式設計、CSS/JS聚合、Twig模板。
- 可訪問性(8條標準):WCAG合規性、ARIA屬性、語義HTML、鍵盤導航。
- 測試(7條標準):PHPUnit、Behat、功能測試、測試覆蓋率、模擬。
- 文檔(7條標準):代碼註釋、README文件、API文檔、DocBlocks。
- API(6條標準):REST、JSON:API、GraphQL最佳實踐、HTTP方法。
- 構建(6條標準):構建過程、優化、資產管理。
- DevOps(6條標準):CI/CD、部署、環境管理、GitHub Actions。
- 數據庫(5條標準):模式設計、遷移、查詢優化、數據庫API。
- 集成(5條標準):第三方集成、外部服務、API。
- Git(4條標準):Git工作流、提交消息、分支策略。
- JavaScript(3條標準):Drupal行為、現代JS模式、優化。
- 配置(1條標準):配置管理。
- 表單(1條標準):表單API和處理。
- 鉤子(1條標準):鉤子實現。
- Twig(1條標準):模板最佳實踐。
OWASP標準(20條標準)
- OWASP Top 10 2021:關鍵安全漏洞,包括訪問控制破壞、加密失敗、注入攻擊、不安全設計、安全配置錯誤、易受攻擊的組件、身份驗證失敗、軟件完整性失敗、日誌記錄失敗和服務器端請求偽造。
項目結構
bestpractices_mcp/
├── src/
│ ├── server.py # MCP服務器實現
│ ├── config.py # 配置管理
│ ├── plugins/ # 插件系統
│ │ ├── base.py # 基礎插件類
│ │ ├── manager.py # 插件管理器
│ │ └── drupal.py # Drupal標準插件
│ └── data/ # 數據存儲層
│ ├── database.py # 兼容性包裝器
│ └── memory_store.py # 內存數據存儲
├── data/ # 標準數據文件
│ ├── drupal/
│ │ └── drupal_standards.csv
│ └── owasp/
│ ├── owasp_top10_2021.csv
│ └── OWASP_RESOURCES.md
├── tests/ # 測試套件
├── requirements.txt # Python依賴項
└── README.md # 本文件
添加新的標準
1. 添加到現有插件
在插件的數據目錄(data/{plugin_name}/*.csv
)中創建或編輯任何CSV文件。插件將自動加載所有CSV文件:
id,category,subcategory,title,description,severity,examples,references,tags,rationale,fix_guidance
NEW001,drupal_security,new_issue,New Security Issue,Description here,high,"{""good"": ""example"", ""bad"": ""example""}","[""https://example.com""]",security|new,Why this matters,How to fix it
注意:Drupal插件會動態加載data/drupal/
中的所有CSV文件,因此你可以將標準組織到多個文件中(例如,security_standards.csv
、performance_standards.csv
等)。
2. 創建新插件
- 在
src/plugins/
中創建一個新的插件文件:
from .base import StandardsPlugin, Standard
class MyPlugin(StandardsPlugin):
@property
def name(self) -> str:
return "myplugin"
- 創建數據目錄和CSV文件:
mkdir data/myplugin
MCP客戶端配置
Claude桌面版
在你的Claude桌面版配置文件(在macOS上為~/Library/Application Support/Claude/claude_desktop_config.json
)中添加以下內容:
{
"mcpServers": {
"bestpractices": {
"command": "/path/to/bestpractices_mcp/bestpractices-server"
}
}
}
添加配置後,重啟Claude桌面版。
帶有Continue.dev的VSCode
Continue.dev是一個支持MCP服務器的VSCode AI編碼助手。
- 在VSCode中安裝Continue擴展。
- 打開Continue的配置文件(
~/.continue/config.json
)。
- 添加MCP服務器配置:
{
"models": [...],
"mcpServers": {
"bestpractices": {
"command": "/path/to/bestpractices_mcp/bestpractices-server"
}
}
}
Cursor編輯器
Cursor通過其AI配置支持MCP服務器:
- 打開Cursor設置(在macOS上按Cmd + ,)。
- 導航到“AI” → “模型上下文協議”。
- 添加服務器配置:
{
"bestpractices": {
"command": "/path/to/bestpractices_mcp/bestpractices-server",
"description": "Drupal編碼標準和最佳實踐"
}
}
Zed編輯器
對於具有AI助手功能的Zed編輯器:
- 打開Zed設置(
~/.config/zed/settings.json
)。
- 添加到助手配置中:
{
"assistant": {
"mcp_servers": {
"bestpractices": {
"command": "/path/to/bestpractices_mcp/bestpractices-server"
}
}
}
}
通用MCP客戶端配置
對於任何與MCP兼容的客戶端,使用以下設置:
- 命令:
/path/to/bestpractices_mcp/bestpractices-server
- 協議:stdio(標準輸入/輸出)
- 傳輸:通過stdio的JSON - RPC
- 初始化:不需要特殊參數
可用的MCP工具
1. get_standards
使用過濾器查詢編碼標準:
- category:按類別過濾(例如,“drupal_security”,“drupal_performance”)。
- subcategory:按子類別過濾(例如,“sql_injection”,“xss”)。
- severity:按嚴重程度級別過濾(“critical”,“high”,“medium”,“low”,“info”)。
- limit:最大結果數(默認:50)。
示例查詢:“給我展示所有Drupal的關鍵安全標準”
2. search_standards
對所有標準進行全文搜索:
- query:搜索文本(必需)。
- categories:要搜索的類別列表(可選)。
- tags:要過濾的標籤列表(可選)。
- limit:最大結果數(默認:50)。
示例查詢:“搜索關於SQL注入的標準”
3. get_categories
列出所有可用的類別及其描述和數量。
示例查詢:“有哪些類別的標準可用?”
4. get_standard_by_id
獲取特定標準的詳細信息:
- standard_id:唯一標識符(例如,“DS001”,“SEC001”)。
示例查詢:“給我展示標準DS001的詳細信息”
AI助手的示例提示
使用此服務器的MCP客戶端時,你可以詢問:
- “我在Drupal開發中應該遵循哪些關鍵安全標準?”
- “給我展示Drupal表單的最佳實踐”
- “搜索關於緩存和性能的標準”
- “我應該如何處理用戶輸入以防止XSS攻擊?”
- “使用Drupal數據庫API的正確方法是什麼?”
- “列出所有可訪問性標準”
- “給我展示SQL查詢的好壞代碼示例”
- “OWASP Top 10 2021漏洞有哪些以及如何預防?”
- “給我展示所有類別的關鍵安全標準”
- “搜索關於訪問控制破壞的標準”
貢獻
- 分叉倉庫。
- 創建一個功能分支。
- 添加你的更改。
- 編寫測試。
- 提交拉取請求。
🔧 技術細節
插件架構
採用可擴展的插件架構,便於添加新的語言和框架。插件系統通過動態加載CSV文件來管理編碼標準。
內存存儲
使用快速的內存數據存儲,實現即時查詢。數據存儲在內存中,提高了查詢效率。
動態CSV加載
插件會自動加載數據目錄中的所有CSV文件,方便管理和更新編碼標準。
📄 許可證
本項目採用MIT許可證,詳情請參閱LICENSE文件。