返回市场
带有HTTPS和GitHub OAuth的MCP服务器

带有HTTPS和GitHub OAuth的MCP服务器

作者:omar-steam6 星标更新:2025-04-15

项目介绍

Local MCP-Server-with-HTTPS-and-GitHub-OAuth

该项目是一个使用Node.js和Express构建的安全本地MCP服务器。它使用自签名证书实现HTTPS加密、GitHub OAuth认证,并采取了额外的安全措施,如速率限制和HTTP头部保护。

功能

  • HTTPS加密:确保客户端与服务器之间的安全通信。
  • GitHub OAuth认证:允许用户使用他们的GitHub帐户登录。
  • 速率限制:防止滥用和拒绝服务(DoS)攻击。
  • 安全会话管理:使用express-session和安全cookie。
  • HTTP头部安全:通过helmet实现以防范常见漏洞。

先决条件

在开始之前,请确保您的系统已安装以下内容:

  • Node.js(v16或更高版本)
  • npm(随Node.js一起提供)
  • OpenSSL(用于生成SSL证书)

设置说明

第一步:克隆仓库

将此仓库克隆到您的本地机器:

git clone https://github.com/omar-steam/MCP-Server-with-HTTPS-and-GitHub-OAuth.git cd mcp-server

第二步:安装依赖项

安装所需的npm包:

npm install

第三步:生成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:自签名证书

第四步:配置环境变量

在项目的根目录下创建一个.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-idyour-github-client-secret

第五步:启动服务器

运行服务器: node server.js

您应该看到: Secure server running on https://localhost:3000

使用方法

访问服务器

打开浏览器并导航至:

https://localhost:3000

通过GitHub进行身份验证

  1. 访问/auth以开始GitHub身份验证过程:

https://localhost:3000/auth

  1. 登录成功后,您将被重定向到/success
  2. 如果身份验证失败,您将被重定向到/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文件。

致谢

特别感谢:


大家享受构建自己的安全MCP服务器吧! 🔥🔥🔥


自定义注意事项:

  1. 将占位符如your-github-client-id替换为您的实际凭证。
  2. 如果您托管此代码,请更新仓库URL(git clone)为您自己的GitHub仓库链接。