MCP服务器Semgrep
](https://smithery.ai/server/@VetCoders/mcp-server-semgrep) 
技术支持:

关于本项目

MCP服务器Semgrep是一个 模型上下文协议 兼容服务器,将强大的Semgrep静态分析工具与Anthropic Claude等人工智能助手集成在一起。它通过对话界面直接实现高级代码分析、安全漏洞检测和代码质量改进。
整合的好处
对于开发人员和开发团队:
- 整体源代码分析 -检测整个项目中的问题,而不仅仅是单个文件中的问题
- 主动错误检测 -在潜在问题成为关键错误之前识别它们
- 持续代码质量改进 -定期扫描和重构可逐步改进代码库
- 风格一致性 -识别和修复代码中的不一致,例如:
- CSS中的任意z索引层 - 命名约定不一致 - 代码重复 - “幻数”而不是命名常量
为了安全:
- 已知漏洞的自动代码验证 -扫描已知的安全问题模式
- 自定义安全规则 -创建特定于项目的规则
- 团队教育 -通过检测潜在问题教授安全编程实践
项目维护和开发:
- “实时”文档 -AI可以解释为什么代码片段有问题以及如何修复它
- 技术债务减免 -系统地检测和修复问题区域
- 改进的代码审查 -对常见问题的自动检测使我们能够专注于更复杂的问题
主要特点
- 与官方MCP SDK直接集成
- 具有整合处理程序的简化架构
- 清洁ES模块实施
- 高效的错误处理和路径验证以确保安全
- 英语和波兰语的界面和文档
- 综合单元测试
- 大量文件
- 跨平台兼容性(Windows、macOS、Linux)
- 灵活的Semgrep安装检测和管理
函数
Semgrep MCP服务器提供以下工具:
- scan_directory:扫描源代码以查找潜在问题
- list_rules:显示Semgrep支持的可用规则和语言
- 分析结果:扫描结果的详细分析
- 创建规则:创建自定义Semgrep规则
- 筛选器_结果:按各种标准筛选结果
- 导出结果:以各种格式导出结果
- 比较结果:比较两组结果(例如,更改前后)
常见用例
- 部署前的代码安全分析
- 常见编程错误的检测
- 在团队中执行编码标准
- 重构和提高现有代码的质量
- 识别样式和代码结构的不一致性(例如CSS、组件组织)
- 关于最佳实践的开发人员教育
- 验证修复正确性(扫描前后比较)
安装
先决条件
- Node.js v18+
- TypeScript(用于开发)
选项1:从Smithery.ai安装(推荐)
安装和使用MCP Server Semgrep的最简单方法是通过Smithery.ai:
- 访问 Smithery.ai上的MCP服务器Semgrep
- 按照安装说明将其添加到MCP兼容客户端
- 配置任何可选设置,如Semgrep API令牌和允许的工作空间根
这是Claude Desktop和其他MCP客户端的推荐方法,因为它会自动处理所有依赖关系和配置。
选项2:从NPM注册表安装
# Using npm
npm install -g mcp-server-semgrep
# Using pnpm
pnpm add -g mcp-server-semgrep
# Using yarn
yarn global add mcp-server-semgrep该软件包也可在其他注册表上使用:
选项3:从GitHub安装
# Using npm
npm install -g git+https://github.com/VetCoders/mcp-server-semgrep.git
# Using pnpm
pnpm add -g git+https://github.com/VetCoders/mcp-server-semgrep.git
# Using yarn
yarn global add git+https://github.com/VetCoders/mcp-server-semgrep.git选项4:地方发展设置
- 克隆存储库:
git clone https://github.com/VetCoders/mcp-server-semgrep.git
cd mcp-server-semgrep- 安装依赖项(支持所有主要包管理器):
# Using pnpm (recommended)
pnpm install
# Using npm
npm install
# Using yarn
yarn install- 构建项目:
# Using pnpm
pnpm run build
# Using npm
npm run build
# Using yarn
yarn build备注:安装过程将自动检查Semgrep的可用性。如果找不到Semgrep,您将收到如何安装它的说明。
工作区根合同
此服务器仅读取和写入明确允许的工作区根目录内的文件。
- 默认情况下,允许的根目录是进程工作目录(
process.cwd()). - 对于Claude Desktop、Smithery或任何不在项目根目录中启动服务器的启动器,请设置
MCP_SERVER_SEMGREP_ALLOWED_ROOTS到一个或多个绝对目录。 - 对多个根使用平台路径分隔符:
:在macOS/Linux上,;在Windows上。
身份验证模式
此服务器不实现自己的Semgrep帐户处理。它外壳安装 semgrep CLI,并依赖于Semgrep的正常身份验证行为。
- 本地终端和本地开发运行通常可以使用现有的
semgrep login当前操作系统帐户中的会话。 - 托管启动(如Claude Desktop、Smithery、容器或CI)应首选显式
SEMGREP_APP_TOKEN对于确定性行为。 SEMGREP_APP_TOKEN当您需要跨机器或跑步者进行便携式配置时,这仍然是最安全的选择。
Semgrep安装选项
Semgrep可以通过多种方式安装:
- 通过包管理器:
# Using pnpm
pnpm add -g semgrep
# Using npm
npm install -g semgrep
# Using yarn
yarn global add semgrep- Python pip:
pip install semgrep- 家酿 (macOS):
brew install semgrep- Linux:
sudo apt-get install semgrep
# or
curl -sSL https://install.semgrep.dev | sh- 视窗:
pip install semgrep与Claude Desktop集成
有两种方法可以将MCP Server Semgrep与Claude Desktop集成:
方法1:通过Smithery.ai安装(推荐)
- 访问 Smithery.ai上的MCP服务器Semgrep
- 点击“在Claude Desktop中安装”
- 按照屏幕上的说明进行操作
方法2:手动配置
- 安装克劳德桌面
- 更新Claude Desktop配置文件(
claude_desktop_config.json)并将其添加到您的服务器部分。
对于在已通过身份验证的用户帐户下启动的本地启动 semgrep login,Semgrep CLI可能能够重用该登录名。对于桌面管理或共享环境,我们仍然建议设置 SEMGREP_APP_TOKEN 明确地:
{
"mcpServers": {
"semgrep": {
"command": "node",
"args": [
"/your_path/mcp-server-semgrep/build/index.js"
],
"env": {
"SEMGREP_APP_TOKEN": "your_semgrep_app_token",
"MCP_SERVER_SEMGREP_ALLOWED_ROOTS": "/Users/you/projects"
}
}
}
}- 启动Claude Desktop并开始询问有关代码分析的问题。
如果要扫描多个工作区,请设置 MCP_SERVER_SEMGREP_ALLOWED_ROOTS 以平台分隔的绝对路径列表。
用法示例
项目扫描
Could you scan my source code in the /projects/my-application directory for potential security issues? That directory is already included in MCP_SERVER_SEMGREP_ALLOWED_ROOTS.风格一致性分析
Analyze the z-index values in the project's CSS files and identify inconsistencies and potential layer conflicts.创建自定义规则
Create a Semgrep rule that detects improper use of input sanitization functions.筛选结果
Show me only scan results related to SQL injection vulnerabilities.识别有问题的模式
Find all "magic numbers" in the code and suggest replacing them with named constants.创建自定义规则
您可以为项目的特定需求创建自定义规则。以下是您可以创建的规则示例:
检测不一致z索引的规则:
rules:
- id: inconsistent-z-index
pattern: z-index: $Z
message: "Z-index $Z may not comply with the project's layering system"
languages: [css, scss]
severity: WARNING检测已弃用导入的规则:
rules:
- id: deprecated-import
pattern: import $X from 'old-library'
message: "You're using a deprecated library. Consider using 'new-library'"
languages: [javascript, typescript]
severity: WARNING发展
测试
pnpm test项目结构
├── src/
│ └── index.ts # Main entry point and all handler implementations
├── scripts/
│ └── check-semgrep.js # Semgrep detection and installation helper
├── build/ # Compiled JavaScript (after build)
└── tests/ # Unit tests更多文件
有关使用该工具的详细信息,请参阅:
- 用法.md -详细的使用说明
- README_PL.md -波兰语文档
- 示例/ -有趣实用的Semgrep规则示例-“代码恐怖大厅”
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
由...开发
从CLI新手到MCP工具开发人员的旅程

