Bestpractices_mcp

Bestpractices_mcp

🚀 最佳实践MCP服务器

这是一个模型上下文协议(MCP)服务器,它能让AI代理访问多种编程语言和框架的开发最佳实践、安全指南和编码标准。

🚀 快速开始

安装

  1. 克隆仓库:
git clone https://github.com/abderrahimghazali/bestpractices_mcp.git
cd bestpractices_mcp
  1. 创建并激活虚拟环境:
python -m venv venv
source venv/bin/activate  # 在Windows上:venv\Scripts\activate
  1. 安装依赖:
pip install -r requirements.txt
  1. 复制环境配置文件:
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:获取特定标准的详细信息。

📦 安装指南

安装步骤

  1. 克隆仓库:
git clone https://github.com/abderrahimghazali/bestpractices_mcp.git
cd bestpractices_mcp
  1. 创建并激活虚拟环境:
python -m venv venv
source venv/bin/activate  # 在Windows上:venv\Scripts\activate
  1. 安装依赖:
pip install -r requirements.txt
  1. 复制环境配置文件:
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.csvperformance_standards.csv等)。

2. 创建新插件

  1. src/plugins/中创建一个新的插件文件:
from .base import StandardsPlugin, Standard

class MyPlugin(StandardsPlugin):
    @property
def name(self) -> str:
return "myplugin"

# ... 实现所需的方法
  1. 创建数据目录和CSV文件:
mkdir data/myplugin
# 添加包含标准的CSV文件

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编码助手。

  1. 在VSCode中安装Continue扩展。
  2. 打开Continue的配置文件(~/.continue/config.json)。
  3. 添加MCP服务器配置:
{
"models": [...],
"mcpServers": {
"bestpractices": {
"command": "/path/to/bestpractices_mcp/bestpractices-server"
}
}
}

Cursor编辑器

Cursor通过其AI配置支持MCP服务器:

  1. 打开Cursor设置(在macOS上按Cmd + ,)。
  2. 导航到“AI” → “模型上下文协议”。
  3. 添加服务器配置:
{
"bestpractices": {
"command": "/path/to/bestpractices_mcp/bestpractices-server",
"description": "Drupal编码标准和最佳实践"
}
}

Zed编辑器

对于具有AI助手功能的Zed编辑器:

  1. 打开Zed设置(~/.config/zed/settings.json)。
  2. 添加到助手配置中:
{
"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漏洞有哪些以及如何预防?”
  • “给我展示所有类别的关键安全标准”
  • “搜索关于访问控制破坏的标准”

贡献

  1. 分叉仓库。
  2. 创建一个功能分支。
  3. 添加你的更改。
  4. 编写测试。
  5. 提交拉取请求。

🔧 技术细节

插件架构

采用可扩展的插件架构,便于添加新的语言和框架。插件系统通过动态加载CSV文件来管理编码标准。

内存存储

使用快速的内存数据存储,实现即时查询。数据存储在内存中,提高了查询效率。

动态CSV加载

插件会自动加载数据目录中的所有CSV文件,方便管理和更新编码标准。

📄 许可证

本项目采用MIT许可证,详情请参阅LICENSE文件。

  • 0 关注
  • 0 收藏,10 浏览
  • system 提出于 2025-09-30 07:21

相似服务问题