安全MCP后端服务

一个基于Node.js和Express的安全优先的MCP(模型上下文协议)后端服务,专注于强化、监控和安全默认设置。

  • by Krishsakaria26
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 Krishsakaria26/cybersecurity-mcp-server

使用说明

网络安全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

  1. 克隆并安装:
git clone https://github.com/Krishsakaria26/cybersecurity-mcp-server.git
cd cybersecurity-mcp-server
npm install
  1. 创建 .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
  1. 以开发模式启动(更改时自动重新加载)
npm run dev
  1. 生产运行
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行为不同(路径分隔符、引号)。

  1. 克隆并安装(PowerShell/CMD):
git clone https://github.com/Krishsakaria26/cybersecurity-mcp-server.git
cd cybersecurity-mcp-server
npm install
  1. 创建 .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
  1. 以开发模式启动
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: 全栈工程

雅利安·卡纳: 前端开发人员