该项目是一个使用Node.js和Express构建的安全本地MCP服务器。它使用自签名证书实现HTTPS加密、GitHub OAuth认证,并采取了额外的安全措施,如速率限制和HTTP头部保护。
express-session和安全cookie。helmet实现以防范常见漏洞。在开始之前,请确保您的系统已安装以下内容:
将此仓库克隆到您的本地机器:
git clone https://github.com/omar-steam/MCP-Server-with-HTTPS-and-GitHub-OAuth.git cd mcp-server
安装所需的npm包:
npm install
使用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:自签名证书在项目的根目录下创建一个.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
用您的GitHub OAuth应用中的凭证替换your-github-client-id和your-github-client-secret。
运行服务器:
node server.js
您应该看到:
Secure server running on https://localhost:3000
打开浏览器并导航至:
https://localhost:3000
/auth以开始GitHub身份验证过程:https://localhost:3000/auth
/success。/failure。访问/secure-data以测试需要身份验证的路由:
https://localhost:3000/secure-data
如果您未经过身份验证,您将看到401 Unauthorized错误。
mcp-server/ ├── key.pem # HTTPS的私钥 ├── cert.pem # HTTPS的自签名证书 ├── server.js # 主服务器文件 ├── package.json # 项目元数据和依赖项 ├── .env # 环境变量(不包含在版本控制中) └── README.md # 项目文档(此文件)
EADDRINUSE)如果端口3000已被占用,请停止任何正在使用该端口的进程,或者更改server.js中的端口号。
要查找并终止使用端口3000的进程:
netstat -ano | findstr :3000 taskkill /PID <PID> /F
自签名证书不受浏览器信任。对于生产环境,请使用受信任的证书颁发机构,如Let’s Encrypt。
欢迎分叉此仓库,改进代码并提交拉取请求!我们欢迎贡献。
本项目采用MIT许可证。详情见LICENSE文件。
特别感谢:
your-github-client-id替换为您的实际凭证。git clone)为您自己的GitHub仓库链接。