使用HTTPS和GitHub OAuth的本地MCP服务器
这个项目是一个使用Node.js和Express构建的安全本地MCP服务器。它具有使用自签名证书的HTTPS加密、GitHub OAuth身份验证以及速率限制和HTTP标头保护等其他安全措施。
特性
- HTTPS加密:确保客户端和服务器之间的安全通信。
- GitHub OAuth身份验证:允许用户使用他们的GitHub帐户登录。
- 速率限制:防止滥用和拒绝服务(DoS)攻击。
- 安全会话管理:用途
express-session使用安全Cookie。 - HTTP标头安全:实施
helmet以防止常见漏洞。
先决条件
在开始之前,请确保您的系统上安装了以下内容:
- (v16或更高版本)
- (附带Node.js)
- 心脏出血 (用于生成SSL证书)
安装说明
步骤1:克隆存储库
将此存储库克隆到本地计算机:
git clone https://github.com/omar-steam/MCP-Server-with-HTTPS-and-GitHub-OAuth.git cd mcp-server
步骤2:安装依赖项
安装所需的npm包:
npm install
步骤3:生成SSL证书
使用OpenSSL生成自签名SSL证书:
openssl genrsa -out key.pem 2048 openssl req -new -key key.pem -out csr.pem openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out cert.pem
这将在您的项目目录中创建以下文件:
key.pem:私钥cert.pem:自签名证书
步骤4:配置环境变量
创建一个 .env 在项目的根目录中创建文件,并添加以下变量:
CLIENT_ID=your-github-client-id CLIENT_SECRET=your-github-client-secret REDIRECT_URI=https://localhost:3000/auth/callback SESSION_SECRET=your-session-secret
替换 your-github-client-id 和 your-github-client-secret 使用您的凭据 .
步骤5:启动服务器
运行服务器: node server.js
您应该看到:
Secure server running on https://localhost:3000
用法
访问服务器
打开浏览器并导航到:
https://localhost:3000
通过GitHub进行身份验证
- 访问
/auth要启动GitHub身份验证过程:
https://localhost:3000/auth
- 成功登录后,您将被重定向到
/success. - 如果身份验证失败,您将被重定向到
/failure.
受保护的路线
访问 /secure-data 要测试需要身份验证的路由,请执行以下操作:
https://localhost:3000/secure-data
如果您未通过身份验证,您将看到 401 Unauthorized 错误。
项目结构
mcp-server/ ├── key.pem # Private key for HTTPS ├── cert.pem # Self-signed certificate for HTTPS ├── server.js # Main server file ├── package.json # Project metadata and dependencies ├── .env # Environment variables (not included in version control) └── README.md # Project documentation (this file)
故障排除
端口已在使用中(EADDRINUSE)
中频端口 3000 已在使用中,请停止使用它的任何进程或在中更改端口 server.js.
使用端口查找并终止进程 3000:
netstat -ano | findstr :3000 taskkill /PID /F
浏览器中的证书警告
浏览器不信任自签名证书。对于生产,请使用受信任的证书颁发机构,如 让我们加密.
贡献
请随意分叉此存储库,进行改进,并提交pull请求!欢迎捐款。
许可证
该项目根据MIT许可证获得许可。请参阅 许可证 文件以获取详细信息。
致谢
特别感谢:
______________________________________________________________________
享受构建安全MCP服务器的过程! 🔥🔥🔥
______________________________________________________________________
定制注意事项:
- 替换占位符,如
your-github-client-id凭你的真实证件。 - 更新存储库URL(
git clone)如果您托管此代码,请使用您的GitHub存储库链接。

