Skip to main content
Glama
freebreaker

Self-Hosted Supabase MCP Server

by freebreaker
2025-11-04_08-25Z-分析项目并部署到smistyai.md14.2 kB
<!-- Generated by SpecStory --> <!-- cursor Session 8319c270-3b7f-43b9-8815-2d5fb4a40132 (2025-11-04 08:25Z) --> # 分析项目并部署到smistyai (2025-11-04 08:25Z) _**User (2025-11-04 08:25Z)**_ 帮我分析一下这个项目 我想部署到smistyai 怎么办 --- _**Assistant (claude-4-opus-thinking)**_ --- 查看关键文件以了解项目结构和部署配置。 --- Tool use: **read_file** Read file: /Users/freebreaker/Downloads/selfhosted-supabase-mcp-main/README.md --- Tool use: **read_file** Read file: /Users/freebreaker/Downloads/selfhosted-supabase-mcp-main/package.json --- Tool use: **read_file** Read file: /Users/freebreaker/Downloads/selfhosted-supabase-mcp-main/smithery.yaml --- Tool use: **read_file** Read file: /Users/freebreaker/Downloads/selfhosted-supabase-mcp-main/Dockerfile --- Tool use: **read_file** Read file: /Users/freebreaker/Downloads/selfhosted-supabase-mcp-main/src/index.ts --- --- 查看其他相关文件,完善项目分析: --- Tool use: **read_file** Read file: /Users/freebreaker/Downloads/selfhosted-supabase-mcp-main/PLAN.md --- Tool use: **read_file** Read file: /Users/freebreaker/Downloads/selfhosted-supabase-mcp-main/mcp-tools.json --- --- 项目分析: - 项目类型:Self-Hosted Supabase MCP Server(为自托管 Supabase 提供 MCP 接口) - 技术栈:TypeScript、Node.js、MCP SDK、Supabase JS、PostgreSQL - 状态:已实现大部分功能,已包含 `smithery.yaml` 和 `Dockerfile` 功能: - 数据库操作(SQL 执行、表管理、迁移) - 认证用户管理 - 存储管理 - 数据库统计和连接监控 - TypeScript 类型生成 部署到 Smithery: 项目已包含 `smithery.yaml`。先验证配置文件是否完整: --- Tool use: **read_file** Read file: /Users/freebreaker/Downloads/selfhosted-supabase-mcp-main/smithery.yaml --- --- 配置文件已就绪。部署步骤: 方法一:通过 Smithery CLI 发布(推荐) --- Terminal not found for session --- --- 编写详细的部署指南: --- Tool use: **write** <details><summary>Edit file: /Users/freebreaker/Downloads/selfhosted-supabase-mcp-main/DEPLOY_TO_SMITHERY.md</summary> **Chunk 1** Lines added: 174, lines removed: 1 ```diff @@ -1,1 +1,174 @@ - + # 部署到 Smithery 指南 + + ## 📋 前置条件 + + 1. **GitHub 账户**:项目需要推送到 GitHub 仓库 + 2. **Smithery 账户**:访问 [smithery.ai](https://smithery.ai) 注册/登录 + 3. **Node.js 环境**:本地需要 Node.js 18+ 用于测试 + + ## 🚀 部署步骤 + + ### 步骤 1: 确保项目已推送到 GitHub + + ```bash + # 如果还没有推送到 GitHub,执行以下命令: + git init # 如果还没有初始化 + git add . + git commit -m "Initial commit for Smithery deployment" + git remote add origin <your-github-repo-url> + git push -u origin main + ``` + + ### 步骤 2: 验证项目配置 + + 确保以下文件存在且配置正确: + + - ✅ `smithery.yaml` - 已存在,配置完整 + - ✅ `Dockerfile` - 已存在,配置正确 + - ✅ `package.json` - 已存在,包含构建脚本 + - ✅ `dist/index.js` - 需要先构建(运行 `npm run build`) + + ### 步骤 3: 本地构建测试 + + 在部署前,建议先本地测试构建: + + ```bash + # 安装依赖 + npm install + + # 构建项目 + npm run build + + # 验证 dist/index.js 已生成 + ls -la dist/index.js + ``` + + ### 步骤 4: 通过 Smithery CLI 发布 + + #### 4.1 安装 Smithery CLI(如果还没安装) + + ```bash + npm install -g @smithery/cli + ``` + + #### 4.2 登录 Smithery + + ```bash + npx @smithery/cli login + ``` + + #### 4.3 发布到 Smithery + + ```bash + # 在项目根目录执行 + npx @smithery/cli publish + ``` + + 或者指定特定路径: + + ```bash + npx @smithery/cli publish --path . + ``` + + ### 步骤 5: 通过 Smithery Web 界面发布(替代方案) + + 如果 CLI 不工作,可以通过 Web 界面: + + 1. 访问 [smithery.ai](https://smithery.ai) + 2. 登录你的账户 + 3. 点击 "Create Server" 或 "Publish" + 4. 连接到你的 GitHub 仓库 + 5. 选择包含 `smithery.yaml` 的仓库 + 6. Smithery 会自动检测配置并开始构建 + + ### 步骤 6: 验证部署 + + 部署成功后,你可以通过以下方式验证: + + ```bash + # 测试安装(使用 Smithery 包名) + npx -y @smithery/cli install @YourUsername/selfhosted-supabase-mcp --client claude + ``` + + ## 📝 配置说明 + + ### smithery.yaml 配置分析 + + 你的 `smithery.yaml` 配置了以下内容: + + - **必需参数**: + - `supabaseUrl`: Supabase HTTP URL + - `supabaseAnonKey`: Supabase 匿名密钥 + + - **可选参数**: + - `supabaseServiceRoleKey`: 服务角色密钥(用于高级操作) + - `databaseUrl`: PostgreSQL 直接连接字符串 + - `supabaseAuthJwtSecret`: JWT 密钥 + - `toolsConfig`: 工具配置文件路径 + + ### Dockerfile 说明 + + 你的 Dockerfile 使用: + - `node:lts-alpine` 作为基础镜像 + - 复制依赖文件并安装 + - 构建项目(`npm run build`) + - 入口点设置为 `node dist/index.js` + + ## ⚠️ 注意事项 + + 1. **构建产物**:确保 `dist/index.js` 在构建后存在 + 2. **敏感信息**:不要在代码中硬编码密钥,使用配置参数 + 3. **版本管理**:建议使用 Git tags 管理版本 + 4. **README 更新**:README.md 中已经有 Smithery badge,部署后会自动更新 + + ## 🔍 故障排查 + + ### 问题 1: 构建失败 + + ```bash + # 检查 Node.js 版本 + node --version # 应该是 18+ + + # 清理并重新安装 + rm -rf node_modules package-lock.json + npm install + npm run build + ``` + + ### 问题 2: Smithery 无法检测配置 + + - 确保 `smithery.yaml` 在仓库根目录 + - 检查 YAML 语法是否正确 + - 查看 Smithery 构建日志 + + ### 问题 3: 运行时错误 + + - 检查 `dist/index.js` 是否正确生成 + - 验证所有依赖都已安装 + - 查看 MCP 客户端日志 + + ## 📚 相关资源 + + - [Smithery 文档](https://smithery.ai/docs) + - [MCP 规范](https://github.com/modelcontextprotocol/specification) + - [项目 README](./README.md) + + ## ✅ 部署检查清单 + + - [ ] 项目已推送到 GitHub + - [ ] `npm run build` 成功执行 + - [ ] `dist/index.js` 文件存在 + - [ ] `smithery.yaml` 配置正确 + - [ ] `Dockerfile` 配置正确 + - [ ] 已登录 Smithery CLI 或 Web 界面 + - [ ] 发布成功并可以安装 + + ## 🎉 部署成功后 + + 部署成功后,你的 MCP 服务器可以通过以下方式安装: + + ```bash + npx -y @smithery/cli install @YourUsername/selfhosted-supabase-mcp --client claude + ``` + + 然后用户可以在他们的 MCP 客户端(如 Claude Desktop、Cursor 等)中配置使用。 ``` </details> --- --- 项目分析摘要: ## 项目分析总结 ### 项目概述 这是一个 **Self-Hosted Supabase MCP Server**,为自托管 Supabase 实例提供 MCP 接口,包含以下功能: - 数据库操作:SQL 执行、表管理、迁移 - 认证管理:用户 CRUD - 存储管理:Bucket 和对象列表 - 监控工具:数据库统计、连接监控 - 开发工具:TypeScript 类型生成 ### 项目状态 - 配置文件已就绪:`smithery.yaml`、`Dockerfile` - 代码实现完整:主要功能已实现 - 部署就绪:可直接部署到 Smithery ### 快速部署步骤 1. 确保项目在 GitHub 上: ```bash git add . git commit -m "Ready for Smithery deployment" git push ``` 2. 安装并登录 Smithery CLI: ```bash npm install -g @smithery/cli npx @smithery/cli login ``` 3. 发布到 Smithery: ```bash npx @smithery/cli publish ``` ### 重要文件 - `smithery.yaml`:Smithery 配置(已配置) - `Dockerfile`:Docker 构建配置(已配置) - `package.json`:包含构建脚本 - `src/index.ts`:MCP 服务器入口 已创建 `DEPLOY_TO_SMITHERY.md`,包含部署指南、故障排查和检查清单。 需要我帮你执行部署命令或检查配置吗? --- _**User (2025-11-04 08:25Z)**_ 按照你写的帮我全部操作吧 --- _**Assistant (claude-4-opus-thinking)**_ <think><details><summary>Thought Process</summary>用户要求我按照我写的DEPLOY_TO_SMITHERY.md指南来帮他执行全部操作。我需要按照步骤帮助用户部署这个项目到Smithery。 让我按照部署指南的步骤来执行: 1. 首先检查项目状态 2. 构建项目 3. 检查Git状态 4. 如果需要,推送到GitHub 5. 安装Smithery CLI 6. 登录Smithery 7. 发布项目 我需要使用run_terminal_cmd来执行这些命令。</details></think> --- 我来帮你按照部署指南执行全部操作!首先创建任务列表来跟踪进度: --- Tool use: **todo_write** ## Todo List - [-] 检查项目状态和文件 - [ ] 构建项目 (npm run build) - [ ] 检查Git状态 - [ ] 推送到GitHub(如需要) - [ ] 安装Smithery CLI - [ ] 登录Smithery - [ ] 发布到Smithery - [ ] 验证部署结果 --- <think><details><summary>Thought Process</summary>好的,我创建了任务列表。现在开始执行第一步:检查项目状态和文件。</details></think> --- 现在开始执行部署操作: ## 步骤 1:检查项目状态和文件 --- Terminal not found for session --- <think><details><summary>Thought Process</summary>Terminal 工具不工作,我需要检查是否已经创建过终端会话。让我尝试创建一个新的终端会话。</details></think> --- 让我检查当前的工作目录并开始部署: --- Terminal not found for session --- <think><details><summary>Thought Process</summary>看起来terminal工具有问题。我可以通过其他方式来帮助用户,比如先检查文件是否存在,然后给出明确的命令。让我先检查重要文件。</details></think> --- 由于终端工具暂时不可用,我来帮你检查重要文件并准备命令。让我首先验证关键文件: --- Tool use: **read_file** Read file: /Users/freebreaker/Downloads/selfhosted-supabase-mcp-main/package.json --- Tool use: **glob_file_search** <details> <summary>Searched codebase "dist/index.js" • **1** result in **1** directory</summary> Directory: **/Users/freebreaker/Downloads/selfhosted-supabase-mcp-main** (1 file) | File | |------| | `dist/index.js` | </details> --- <think><details><summary>Thought Process</summary>好的,我看到: 1. package.json 存在且配置正确,有build脚本 "tsup src/index.ts --format esm --clean" 2. dist/index.js 已经存在了 现在我需要更新TODO并给出具体的命令给用户执行。</details></think> --- 很好!我看到项目已经有 `dist/index.js` 文件,说明之前已经构建过了。让我更新任务状态并给你提供具体的命令: --- Tool use: **todo_write** ## Todo List - [x] 检查项目状态和文件 - ✅ 文件完整,dist/index.js已存在 - [x] 构建项目 - ✅ 已构建 - [ ] 检查Git状态 - [ ] 推送到GitHub(如需要) - [ ] 安装Smithery CLI - [ ] 登录Smithery - [ ] 发布到Smithery - [ ] 验证部署结果 --- <think><details><summary>Thought Process</summary>项目检查和构建已完成。现在我需要给用户提供命令来执行剩余的步骤,因为terminal工具无法直接使用。让我为用户准备完整的命令序列。</details></think> --- 由于终端工具暂时不可用,我来为你准备完整的命令序列。请在你的终端中按顺序执行以下命令: ## 🚀 完整部署命令序列 ### 步骤 2: 检查 Git 状态 ```bash # 切换到项目目录 cd /Users/freebreaker/Downloads/selfhosted-supabase-mcp-main # 检查当前 Git 状态 git status # 如果有未提交的更改,添加并提交 git add . git commit -m "Ready for Smithery deployment" # 检查是否有远程仓库 git remote -v # 如果没有远程仓库,需要先创建 GitHub 仓库并添加 # git remote add origin https://github.com/yourusername/selfhosted-supabase-mcp.git # 推送到 GitHub git push -u origin main ``` ### 步骤 3: 安装和使用 Smithery CLI ```bash # 安装 Smithery CLI npm install -g @smithery/cli # 或者使用 npx(推荐) npx @smithery/cli --version ``` ### 步骤 4: 登录 Smithery ```bash # 登录 Smithery(会打开浏览器进行授权) npx @smithery/cli login ``` ### 步骤 5: 发布到 Smithery ```bash # 确保在项目根目录 pwd # 应该显示: /Users/freebreaker/Downloads/selfhosted-supabase-mcp-main # 发布项目 npx @smithery/cli publish ``` ### 步骤 6: 验证部署 ```bash # 发布成功后,测试安装(使用你的 Smithery 用户名) npx -y @smithery/cli install @YourUsername/selfhosted-supabase-mcp --client claude ``` ## ⚠️ 注意事项 1. **GitHub 仓库**: 如果你还没有 GitHub 仓库,请先到 GitHub 创建一个新仓库 2. **用户名**: 替换 `@YourUsername` 为你的实际 Smithery/GitHub 用户名 3. **分支**: 如果你的默认分支是 `master` 而不是 `main`,请相应调整 ## 🔍 可能遇到的问题 如果遇到任何错误,请告诉我具体的错误信息,我会帮你解决。 **请先执行第一个命令(检查 Git 状态),然后告诉我结果,我会指导你进行下一步!** --- Tool use: **todo_write** ## Todo List - [x] 检查项目状态和文件 - ✅ 文件完整,dist/index.js已存在 - [x] 构建项目 - ✅ 已构建 - [-] 检查Git状态 - 🔄 等待用户执行git status命令 - [ ] 推送到GitHub(如需要) - [ ] 安装Smithery CLI - [ ] 登录Smithery - [ ] 发布到Smithery - [ ] 验证部署结果 --- <think><details><summary>Thought Process</summary>我已经为用户准备了完整的命令序列。由于terminal工具不工作,我提供了所有必要的命令让用户在自己的终端中执行。现在等待用户执行第一个命令并告诉我结果。</details></think> --- 现在请你在终端中执行上面的命令。从第一步开始: ```bash cd /Users/freebreaker/Downloads/selfhosted-supabase-mcp-main git status ``` 执行后请告诉我输出结果,我会根据情况指导你进行下一步! 🚀 ---

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/freebreaker/selfhosted-supabase'

If you have feedback or need assistance with the MCP directory API, please join our Discord server