MCP工具Monorepo
一组模型上下文协议(MCP)服务器和工具,采用模块化单仓库架构构建。此存储库包含多个包,包括用于位置、邮件、npm等的服务器。
🏗️ 架构概述
该项目是一个结构良好的单仓库,具有以下好处:
- 模块化设计:每个工具都是一个单独的包,有明确的关注点分离。
- 共享公用设施:通用功能被提取到可重用的包中。
- 类型安全:具有正确类型定义的完全TypeScript支持。
- 可测试性:具有独立单元测试的综合测试套件。
- 自动发布:版本控制和发布到npm是自动化的 变更集.
- 可扩展性:易于添加新工具和扩展功能。
🚀 入门指南
先决条件
- Node.js 18+
- 纱线1.x+(经典)
安装
# Install all dependencies for all packages
yarn install建筑
# Build all packages
yarn build
# Build a specific package
yarn workspace @mcp-monorepo/npm build发展
# Start development mode with file watching for all packages
yarn dev
# Start a specific package in dev mode
yarn workspace @mcp-monorepo/npm dev测试
# Run all tests
yarn test
# Run tests with coverage
yarn test:coverage
# Run tests in watch mode
yarn test:watch📦 发布软件包
此monorepo使用 变更集 管理版本控制、变更日志和发布到npm。发布过程通过GitHub Actions自动完成。
以下是发布更改的开发人员工作流程:
步骤1:更改代码
像往常一样在任何包中更改代码。
步骤2:添加变更集
在提交之前,运行以下命令以声明您的释放意图:
yarn cs:add这将启动一个交互式CLI,询问您:
- 哪些包已更改。
- 语义版本碰撞应该是什么(
patch,minor,或major)对于每个包裹。 - 更改日志的更改摘要。
此过程在 .changeset 目录。
第三步:承诺并推动
提交代码更改 _和_ 新创建的变更集文件。
git add .
git commit -m "feat(mail): add support for searching emails"
git push步骤4:自动拉取请求
一旦您的更改被推送到 main 分支(或PR被合并) Release GitHub Action将触发。它将自动创建一个名为的新Pull Request Version Packages.
此PR捆绑了所有新的变更集,更新了 version 在受影响的 package.json 文件,并生成 CHANGELOG.md 文件夹。
步骤5:合并和发布
只需回顾和 合并 Version Packages 公关合并后,相同的GitHub Action将再次运行。这一次,它将构建所有的包和 将更新后的版本发布到npm.
______________________________________________________________________
🔧 示例工具:位置服务器
此存储库包含多个工具。以下是一个示例 @mcp-monorepo/location 包裹。
1.获取当前位置
工具ID: get-current-location
描述:根据您的公共IP地址获取当前位置信息。
参数:无
示例响应:
Current Location Information:
IP Address: 203.0.113.1
Location: New York, New York, United States
Coordinates: 40.7128, -74.0060
Timezone: America/New_York
Postal Code: 10001
ISP: Example ISP2.通过IP获取位置
工具ID: get-location-by-ip
描述:获取特定IP地址的位置信息。
参数:
ipAddress(字符串,必填):查找位置信息的IP地址
示例响应:
Location Information for 8.8.8.8:
IP Address: 8.8.8.8
Location: Mountain View, California, United States
Coordinates: 37.386, -122.0838
Timezone: America/Los_Angeles
ISP: Google LLC🏛️ 建筑原理
关注点分离
每个工具都被组织成不同的层:
- 类型:TypeScript接口和类型定义
- 助手:纯业务逻辑和数据处理
- 格式化器:输出格式和演示
- 处理器:MCP协议集成
- 索引:工具注册和导出
依赖管理
该架构促进了:
- 明确依赖关系:每个包都明确声明其依赖关系。
- 工作空间分辨率:内部包使用
workspace:*协议,以确保它们始终解析为monorepo中的本地版本。
错误处理
强大的错误处理功能:
- 输入验证:所有输入在处理前都经过验证。
- 优雅降级:为用户提供有意义的错误消息。
- 结构化错误:跨工具的错误格式一致。
🤝 贡献
欢迎投稿!请按照以下步骤操作:
- 克隆存储库并安装依赖项
yarn install. - 在各自的工具中添加或修改工具
packages/*目录。 - 为任何新功能添加全面的测试。
- 遵循既定的模式以保持一致性。
- 当你的更改准备就绪时,创建一个变更集来记录版本升级。看 发布软件包 详细说明部分。
📄 许可证
ISC许可证-请参阅根 package.json 了解详情。
