这是一个模型上下文协议(MCP)服务器,它能让AI代理访问多种编程语言和框架的开发最佳实践、安全指南和编码标准。
git clone https://github.com/abderrahimghazali/bestpractices_mcp.git
cd bestpractices_mcp
python -m venv venv
source venv/bin/activate # 在Windows上:venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
./bestpractices-server
source venv/bin/activate
python -m src.server
运行测试套件:
python -m pytest tests/ -v
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 # 在Windows上:venv\Scripts\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+条跨多个类别的编码标准:
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 # 本文件
在插件的数据目录(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
等)。
src/plugins/
中创建一个新的插件文件:from .base import StandardsPlugin, Standard
class MyPlugin(StandardsPlugin):
@property
def name(self) -> str:
return "myplugin"
# ... 实现所需的方法
mkdir data/myplugin
# 添加包含标准的CSV文件
在你的Claude桌面版配置文件(在macOS上为~/Library/Application Support/Claude/claude_desktop_config.json
)中添加以下内容:
{
"mcpServers": {
"bestpractices": {
"command": "/path/to/bestpractices_mcp/bestpractices-server"
}
}
}
添加配置后,重启Claude桌面版。
Continue.dev是一个支持MCP服务器的VSCode AI编码助手。
~/.continue/config.json
)。{
"models": [...],
"mcpServers": {
"bestpractices": {
"command": "/path/to/bestpractices_mcp/bestpractices-server"
}
}
}
Cursor通过其AI配置支持MCP服务器:
{
"bestpractices": {
"command": "/path/to/bestpractices_mcp/bestpractices-server",
"description": "Drupal编码标准和最佳实践"
}
}
对于具有AI助手功能的Zed编辑器:
~/.config/zed/settings.json
)。{
"assistant": {
"mcp_servers": {
"bestpractices": {
"command": "/path/to/bestpractices_mcp/bestpractices-server"
}
}
}
}
对于任何与MCP兼容的客户端,使用以下设置:
/path/to/bestpractices_mcp/bestpractices-server
使用过滤器查询编码标准:
示例查询:“给我展示所有Drupal的关键安全标准”
对所有标准进行全文搜索:
示例查询:“搜索关于SQL注入的标准”
列出所有可用的类别及其描述和数量。
示例查询:“有哪些类别的标准可用?”
获取特定标准的详细信息:
示例查询:“给我展示标准DS001的详细信息”
使用此服务器的MCP客户端时,你可以询问:
采用可扩展的插件架构,便于添加新的语言和框架。插件系统通过动态加载CSV文件来管理编码标准。
使用快速的内存数据存储,实现即时查询。数据存储在内存中,提高了查询效率。
插件会自动加载数据目录中的所有CSV文件,方便管理和更新编码标准。
本项目采用MIT许可证,详情请参阅LICENSE文件。