MCP安全
███╗ ███╗ ██████╗██████╗ ███████╗███████╗ ██████╗
████╗ ████║██╔════╝██╔══██╗ ██╔════╝██╔════╝██╔════╝
██╔████╔██║██║ ██████╔╝ ███████╗█████╗ ██║
██║╚██╔╝██║██║ ██╔═══╝ ╚════██║██╔══╝ ██║
██║ ╚═╝ ██║╚██████╗██║ ███████║███████╗╚██████╗
╚═╝ ╚═╝ ╚═════╝╚═╝ ╚══════╝╚══════╝ ╚═════╝模型上下文协议服务器的安全扫描程序和Linter
*查找漏洞,实施最佳实践,保护您的MCP*
](https://www.npmjs.com/package/mcp-secure)  
🚀 快速开始 • 📖 文档 • 🔒 安全规则 • 💻 命令行界面
______________________________________________________________________
🌟 什么是MCP安全?
MCP安全 是一款专门为 模型上下文协议(MCP) 服务器。它分析您的MCP服务器代码以检测漏洞,实施安全最佳实践,并确保您与Claude code的集成是安全可靠的。
为什么MCP安全?
- 🛡️ 安全第一:检测10多类安全漏洞
- ⚡ 快速扫描:在几秒钟内扫描整个代码库
- 🎯 MCP特定:为MCP服务器模式量身定制的规则
- ✨ 漂亮的CLI:清晰、可操作的安全报告
- 🔧 CI/CD就绪:易于与管道集成
- 📊 详细报告:确切地知道要修复什么以及如何修复
______________________________________________________________________
🚀 快速开始
安装
# Install globally
npm install -g mcp-secure
# Or use via npx (no installation)
npx mcp-secure scan基本用法
# Scan current directory
mcp-secure scan
# Scan specific directory
mcp-secure scan ./my-mcp-server
# View all security rules
mcp-secure rules
# CI/CD mode (JSON output)
mcp-secure ci______________________________________________________________________
🔒 安全规则
MCP安全检查10个全面的安全问题:
严重性
| ID | 规则 | 描述 |
|---|---|---|
| MCP001 | 命令注入 | 检测用户输入的不安全命令执行 |
| MCP002 | 路径遍历 | 防止目录遍历攻击 |
高严重性
| ID | 规则 | 描述 |
|---|---|---|
| MCP003 | 硬编码机密 | 在代码中查找API密钥、令牌、密码 |
| MCP004 | SQL注入 | 检测不安全的SQL查询构造 |
| MCP009 | 无限制网络 | 捕获SSRF和不安全的HTTP请求 |
中等严重性
| ID | 规则 | 描述 |
|---|---|---|
| MCP005 | 缺少输入验证 | 确保工具处理程序验证参数 |
| MCP006 | 不安全的反序列化 | 检测不安全的JSON.parse使用 |
| MCP010 | 丢失率限制 | 检查DoS保护 |
低&信息
| ID | 规则 | 描述 |
|---|---|---|
| MCP007 | 缺少错误处理 | 验证try-catch块 |
| MCP008 | MCP最佳实践 | 鼓励SDK的使用和描述 |
______________________________________________________________________
💻 CLI命令
mcp-secure scan [path]
扫描MCP服务器代码以查找安全问题。
# Basic scan
mcp-secure scan
# Scan with options
mcp-secure scan ./src --severity high --fail-on critical选项:
--severity-仅显示严重程度或以上的问题(严重、高、中、低、信息)--json-以JSON格式输出结果--fail-on-如果发现问题,退出时出错(适用于CI/CD)
输出示例:
📊 Scan Results
Files scanned: 15
Total issues: 3
┌────────────────────┬──────────┐
│ Severity │ Count │
├────────────────────┼──────────┤
│ Critical │ 0 │
│ High │ 1 │
│ Medium │ 2 │
│ Low │ 0 │
│ Info │ 0 │
└────────────────────┴──────────┘
🔍 Issues Found
1. [HIGH] MCP003 - Potential hardcoded API Key detected
File: src/config.ts:12
Code: const API_KEY = "sk-1234567890abcdef";
Fix: Use environment variables (process.env) to store sensitive data.mcp-secure rules
列出所有带有描述的安全规则。
mcp-secure rulesmcp-secure ci [path]
运行针对CI/CD管道优化的扫描。
# In CI/CD pipeline
mcp-secure ci
# Exit code 0 = passed, 1 = failed______________________________________________________________________
📖 文档
与CI/CD集成
GitHub操作
name: Security Scan
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '18'
- run: npx mcp-secure ciGitLab 的
security_scan:
image: node:18
script:
- npx mcp-secure ci
only:
- merge_requests
- main预提交钩子
# .husky/pre-commit
npx mcp-secure scan --fail-on high______________________________________________________________________
🛠️ 配置
创建 .mcpsecure.json 在项目根目录中:
{
"ignore": [
"**/test/**",
"**/examples/**"
],
"severity": "medium",
"rules": {
"MCP001": "error",
"MCP008": "warn"
}
}______________________________________________________________________
🎯 示例
示例1:部署前扫描
#!/bin/bash
# deploy.sh
echo "Running security scan..."
if mcp-secure scan --fail-on high; then
echo "✅ Security scan passed"
npm run deploy
else
echo "❌ Security issues found - deployment blocked"
exit 1
fi示例2:仅查找关键问题
mcp-secure scan --severity critical --json > security-report.json示例3:开发工作流程
# Watch mode (scan on file change)
mcp-secure scan && echo "✅ No issues"______________________________________________________________________
🔍 MCP安全检测什么
命令注入
易受攻击代码:
const result = exec(`git clone ${userInput}`);安全代码:
const result = execFile('git', ['clone', userInput]);路径遍历
易受攻击代码:
const data = fs.readFileSync(userInput);安全代码:
const safePath = path.resolve('/allowed/dir', userInput);
if (!safePath.startsWith('/allowed/dir')) throw new Error('Invalid path');
const data = fs.readFileSync(safePath);硬编码的秘密
易受攻击代码:
const API_KEY = "sk-1234567890";安全代码:
const API_KEY = process.env.API_KEY;______________________________________________________________________
🚧 路线图
- \[\]自定义规则创建
- \[\]自动修复功能
- \[\]VS代码扩展名
- \[\]GitHub应用程序集成
- \[\]SARIF格式输出
- \[\]依赖漏洞扫描
______________________________________________________________________
🤝 贡献
我们欢迎捐款!看 贡献.md.
______________________________________________________________________
📄 许可证
MIT许可证-请参阅 许可证
______________________________________________________________________
🙏 致谢
- Anthropic -适用于克劳德代码和MCP
- MCP社区 -用于构建出色的服务器
- 安全研究人员 -关于漏洞模式
______________________________________________________________________
由以下材料制成❤️ MCP社区
⭐ 在GitHub上为我们投票🐛 报告问题|📖 阅读文档
