使用说明
网络安全mcp服务器🔐
安全第一MCP(模型上下文协议)后端 使用Node.js和Express构建。
🚀 概述
该存储库包含一个安全的、面向生产的MCP后端,专注于强化、监控和安全默认的最佳实践。它使用Express 5、头盔作为头文件、限速中间件和结构化日志记录(winston + winston-daily-rotate-file).
⚙️ 特性
- Express 5后端
- 安全中间件(头盔、限速)
- 结构化日志记录
winston和winston-daily-rotate-file - Docker友好
Dockerfile - 简单的模块化架构(控制器、服务、中间件)
📁 项目结构
核心文件夹和重要文件的简短地图,以便贡献者知道在哪里查找。
src/
├─ server.js # App entrypoint (starts HTTP server)
├─ app.js # Express app, middleware, routes registration
├─ routes/ # API route definitions (e.g., mcp.routes.js)
├─ controllers/ # Request handlers (mcp.controller.js)
├─ services/ # Business logic & integrations (mcp.service.js)
├─ middleware/ # auth, rateLimit, and other cross-cutting concerns
├─ config/ # env.js, security.js and config helpers
└─ utils/ # logger.js and helper utilities
logs/ # Rotated log files written by winston
Dockerfile # Container image build instructions
package.json # Scripts & dependencies
README.md # This document
笔记:
src/config/env.js集中环境变量加载和默认值。utils/logger.js用途winston+winston-daily-rotate-file用于结构化、旋转的原木。- 保持业务逻辑
services/以及处理程序controllers/保持测试和模拟的直接性。
🧑💻 本地开发
以下是特定于平台的步骤,以便Linux/macOS和Windows上的贡献者可以快速入门。
Linux/macOS
- 克隆并安装:
git clone https://github.com/Krishsakaria26/cybersecurity-mcp-server.git
cd cybersecurity-mcp-server
npm install
- 创建
.env文件(可选但推荐)
# copy example if present
cp .env.example .env || true
# or create manually
cat > .env <<EOF
PORT=3000
NODE_ENV=development
RATE_LIMIT_WINDOW_MS=60000
RATE_LIMIT_MAX=100
LOG_LEVEL=debug
EOF
- 以开发模式启动(更改时自动重新加载)
npm run dev
- 生产运行
npm start
提示:
- 使用附加到的IDE调试器
src/server.js对于断点。 - 添加测试(Jest/Mocha)和
test在合并功能之前使用npm脚本。 - 使用
pre-commit钩子用于确保linting/格式化的一致性。
Windows(PowerShell/CMD/WSL)
为了与Linux/macOS行为最接近,请使用WSL或Git Bash。PowerShell和CMD可以工作,但有些shell行为不同(路径分隔符、引号)。
- 克隆并安装(PowerShell/CMD):
git clone https://github.com/Krishsakaria26/cybersecurity-mcp-server.git
cd cybersecurity-mcp-server
npm install
- 创建
.env文件(PowerShell/CMD)
- PowerShell:
New-Item -Path . -Name '.env' -ItemType 'file' -Force
Add-Content -Path .env -Value 'PORT=3000'
Add-Content -Path .env -Value 'NODE_ENV=development'
Add-Content -Path .env -Value 'RATE_LIMIT_WINDOW_MS=60000'
Add-Content -Path .env -Value 'RATE_LIMIT_MAX=100'
Add-Content -Path .env -Value 'LOG_LEVEL=debug'
- CMD:
echo PORT=3000> .env
echo NODE_ENV=development>> .env
echo RATE_LIMIT_WINDOW_MS=60000>> .env
echo RATE_LIMIT_MAX=100>> .env
echo LOG_LEVEL=debug>> .env
- 以开发模式启动
npm run dev
Windows注意事项:
- 如果使用Windows Defender/防火墙,当服务器监听端口时,系统会提示您允许本地访问。
- 如果你需要POSIX工具或匹配Linux行为(例如,Docker中的卷挂载),最好使用WSL或Git Bash。
🐳 Docker部署
Docker命令在shell之间略有不同;下面是两个平台的示例和Windows用户的提示。
Linux/macOS
塑造形象:
docker build -t mcp-server:latest .
运行(基本):
docker run -p 3000:3000 --rm --name mcp-server mcp-server:latest
使用env文件和持久日志运行:
docker run -p 3000:3000 --env-file .env -v "$(pwd)/logs:/app/logs" --restart unless-stopped --name mcp-server mcp-server:latest
Windows(PowerShell/Docker桌面)
构建图像(相同):
docker build -t mcp-server:latest .
运行(基本):
docker run -p 3000:3000 --rm --name mcp-server mcp-server:latest
使用env文件和持久日志运行(PowerShell):
docker run -p 3000:3000 --env-file .\.env -v "${PWD}\logs:/app/logs" --restart unless-stopped --name mcp-server mcp-server:latest
如果 ${PWD} 路径未正确装载,请为卷映射提供完整的Windows路径(替换 C:\path\to\repo):
docker run -p 3000:3000 --env-file .\.env -v "C:\full\path\to\repo\logs:/app/logs" --restart unless-stopped --name mcp-server mcp-server:latest
注意事项和建议:
- 在Windows上,更喜欢启用WSL2集成的Docker Desktop,以获得更好的兼容性。
- 如果PowerShell/CMD中的相对装载失败,请为卷装载使用完整的绝对路径。
- 在生产环境中运行容器时,通过编排器或Docker secrets传递secrets(避免提交
.env).
可选:Docker Compose(如果调整了文件路径,则跨平台工作):
version: '3.8'
services:
mcp-server:
build: .
image: mcp-server:latest
ports:
- "3000:3000"
env_file: .env
volumes:
- ./logs:/app/logs
restart: unless-stopped
健康和部署说明:
- 通过您的编排器(Kubernetes/Swarm)提供资源限制和环境秘密。
- 安装
logs/用于主机访问或将日志转发到日志聚合器进行生产。 - 考虑为依赖它的编排器添加一个容器健康检查。
🧩 配置
环境设置从加载 src/config/env.js.常见变量:
PORT-服务器端口(默认值:3000)NODE_ENV-环境(development/production)- 利率限制选项
src/config/security.js(窗口,最大请求数)
提示:创建一个
.env项目根目录中的文件用于本地开发。
日志记录
该应用程序使用 winston 和 winston-daily-rotate-file 对于存储在 logs/ 文件夹。日志包括结构化的时间戳和级别,以便于解析和聚合。
🧪 测试
目前还没有包括自动测试。欢迎添加测试(Jest/Mocha)的贡献。
🤝 贡献
欢迎投稿——请在GitHub存储库上打开问题或拉取请求。遵循现有的代码模式,并牢记安全考虑。
📄 许可证
麻省理工学院——见 LICENSE 文件。
👤 作者
克里希·萨卡里亚: 网络安全与后端工程
Manish Shah: 后端工程
Madhusmita Choudhary: 全栈工程
雅利安·卡纳: 前端开发人员
