关于 Local MCP-Server-with-HTTPS-and-GitHub-OAuth
Local MCP-Server-with-HTTPS-and-GitHub-OAuth 是一个基于 Node.js 和 Express 的本地 MCP 服务示例,结合 HTTPS、GitHub OAuth、会话管理、速率限制和 HTTP 标头防护。
主要功能
- 01使用自签名证书提供 HTTPS
- 02GitHub OAuth 登录
- 03安全会话 Cookie
- 04速率限制
- 05HTTP 标头防护
适用场景
- 01为受保护路由启用 GitHub 登录
- 02在本地测试 HTTPS 服务
- 03限制服务请求频率
MCP 相关
项目说明这是一个本地 MCP 服务,但 README 未说明它向客户端提供哪些 MCP 工具或能力。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Local MCP-Server-with-HTTPS-and-GitHub-OAuth
这是一个使用 Node.js 和 Express 构建的安全本地 MCP 服务。它支持使用自签名证书进行 HTTPS 加密、GitHub OAuth 身份验证,以及速率限制和 HTTP 标头保护等额外安全措施。
功能
- HTTPS 加密:确保客户端与服务端之间的通信安全。
- GitHub OAuth 身份验证:允许用户使用 GitHub 帐户登录。
- 速率限制:防止滥用和拒绝服务(DoS)攻击。
- 安全会话管理:使用带有安全 Cookie 的
express-session。 - HTTP 标头安全:使用
helmet防范常见漏洞。
前提条件
开始之前,请确保系统已安装以下内容:
设置说明
第 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 替换为你的 GitHub OAuth App 凭据。
第 5 步:启动服务
运行服务:
node server.js
你应该会看到:
安全服务正在 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 # 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。
参与贡献
欢迎 Fork 此仓库、改进项目并提交拉取请求!欢迎贡献。
许可证
本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。
致谢
特别感谢:
祝大家构建安全的 MCP 服务,玩得开心!🔥🔥🔥
自定义说明:
- 将
your-github-client-id等占位符替换为你的实际凭据。 - 如果你要托管此代码,请将仓库 URL(
git clone)更新为你的 GitHub 仓库链接。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。