开始使用
前置要求
在贡献之前,请确保您具备:- Node.js 18+ 和 pnpm 已安装
- Docker 用于运行 PostgreSQL 和测试
- Git 用于版本控制
- 对 TypeScript、React 和 MCP 协议的基本了解
开发环境设置
Fork 和克隆
Fork 和克隆
- 在 GitHub 上Fork 仓库
- 克隆您的 fork到本地:
- 添加上游远程仓库:
安装依赖
安装依赖
使用 pnpm 安装项目依赖:这将安装 monorepo 中所有工作区的依赖。
环境设置
环境设置
设置您的开发环境:根据需要修改
.env
文件以适配您的开发设置。数据库设置
数据库设置
使用 Docker 启动 PostgreSQL:首次迁移(先编辑
.env.local
)开发工作流程
创建功能分支(命名不是必需的)
进行更改
在进行更改时请遵循以下指南:代码质量标准
- 遵循 TypeScript 最佳实践
- 使用 ESLint 和 Prettier 保持一致的格式
- 编写描述性的提交信息
- 为复杂函数添加 JSDoc 注释
- 确保整个代码库的类型安全
- 手动测试您的更改
测试您的更改
本地测试
本地测试
运行开发服务器并测试您的更改:这将以开发模式启动前端和后端。
代码检查和格式化
代码检查和格式化
确保代码质量:
Docker 测试
Docker 测试
使用 Docker 测试以确保生产环境兼容性:
贡献类型
错误修复
报告错误
报告错误
在报告错误之前:
- 检查现有问题以避免重复
- 尝试一致地重现问题
- 收集相关信息(操作系统、浏览器、MetaMCP 版本)
- 包含重现问题的步骤
修复错误
修复错误
修复错误时:
- 创建分支:
fix/issue-number-description
- 实现修复
- 手动测试以确保修复有效
- 如有必要,更新文档
功能开发
提出功能
提出功能
在实现新功能之前:
- 开启一个 issue 来讨论该功能
- 提供用例和理由
- 考虑对现有功能的影响
- 从维护者那里获得反馈
- 规划实现方法
实现功能
实现功能
功能开发过程:
- 从 main 创建功能分支
- 逐步实现并定期提交
- 更新文档
- 使用真实的 MCP 服务器测试
- 考虑 UI 更改的 i18n 影响
文档
文档指南
文档指南
更新文档时:
- 使用清晰、简洁的语言
- 在有用时包含代码示例
- 为 UI 更改添加截图
- 更新 README 和文档网站
- 测试所有代码示例
- 考虑多个受众(初学者、高级用户)
翻译贡献
翻译贡献
添加新语言支持:
- 创建新的语言目录:
public/locales/[locale]/
- 复制英语文件作为模板
- 翻译内容并保持键结构
- 更新 i18n 配置
- 彻底测试新语言
- 提交包含翻译文件的 PR
Pull Request 流程
提交之前
提交前检查清单
- ✅ 代码遵循项目标准
- ✅ 尽可能修复代码检查问题(在快速开发时相对宽容) (
pnpm lint
) - ✅ 没有 TypeScript 错误
- ✅ 如需要,文档已更新
- ✅ 手动测试了更改
- ✅ 如需要,包含数据库迁移
- ✅ 提交中没有敏感信息
专业贡献
OIDC 提供商设置
MetaMCP 支持 OpenID Connect 用于企业 SSO。在处理 OIDC 功能时:OIDC 配置
OIDC 配置
必需的环境变量:
测试 OIDC
测试 OIDC
OIDC 开发:
- 使用测试提供商(Auth0、Keycloak)
- 配置重定向 URI:
${APP_URL}/api/auth/oauth2/callback/oidc
- 测试身份验证流程
- 验证数据库中的用户创建
- 启用调试日志进行故障排除
数据库更改
在进行数据库架构更改时:架构迁移
架构迁移
创建迁移:
添加新表
添加新表
数据库开发工作流程:
- 在
apps/backend/src/db/schema.ts
中更新架构 - 在
apps/backend/src/db/repositories/
中创建存储库 - 在
apps/backend/src/db/serializers/
中创建序列化器 - 在
apps/backend/src/trpc/
中添加 tRPC 过程 - 在
packages/zod-types/
中更新前端类型 - 生成并应用迁移
前端开发
UI 组件
UI 组件
使用 shadcn/ui 组件:组件指南:
- 遵循现有设计模式
- 确保无障碍合规性
- 添加适当的 TypeScript 类型
- 包含加载和错误状态
国际化
国际化
对于 UI 更改:
- 首先添加英语翻译
- 更新其他语言或标记为待翻译
- 使用
useTranslations()
钩子 - 使用不同语言测试
- 确保文本扩展不会破坏布局
社区准则
行为准则
我们致力于提供一个欢迎和包容的环境:社区标准
- 在所有互动中保持尊重和包容
- 提供建设性反馈并乐于接受反馈
- 专注于协作并帮助彼此成功
- 尊重不同的观点和经验水平
- 遵循项目指南并保持代码质量
沟通
Discord 社区
Discord 社区
GitHub 讨论
GitHub 讨论
使用 GitHub Issues 和 Discussions 进行:
- 错误报告和功能请求
- 技术讨论
- 文档反馈
- 项目路线图讨论
获得帮助
资源
认可
我们感谢对 MetaMCP 的所有贡献!贡献者通过以下方式获得认可:- 仓库上的GitHub 贡献者列表
- 发布说明中提及重要贡献