内容
# 🪐 Orbyt
<div align="center">
[](https://www.npmjs.com/package/orbyt)
[](https://www.npmjs.com/package/orbyt)
[](https://github.com/senapati484/orbyt)
[](https://github.com/senapati484/orbyt/blob/main/LICENSE)
[](https://modelcontextprotocol.io)
<h3><b>一个元服务器。所有 UI 库,尽在 AI 之手。</b></h3>
<p>一个单一的 MCP 服务器,代理已经支持 MCP 的组件库,适配不支持的库,并为 AI 助手提供一种一致的方式来搜索、获取和安装 UI 组件,而不是使用十种不同的工具。</p>
</div>
| 模式 | 主要技术栈 | 分发 | 工具表面 |
| :--- | :--- | :--- | :--- |
| **领域特定元 MCP** | TypeScript • Node | `npx init`(与 shadcn 相同) | 6 个工具,而不是 60 个 |
<br>
<div align="center">
<img width="1536" height="1024" alt="Orbyt 架构图" src="https://github.com/user-attachments/assets/a74abd94-597a-4575-bf4c-bb10365dbe12" />
</div>
<div align="center">
<p><i>两条摄入通道,一个规范的组件,一个安装路径。</i></p>
<p>
<font color="#5EEAD4">■</font> <b>通道 A</b> — 代理(支持 MCP)
<font color="#A78BFA">■</font> <b>通道 B</b> — 适配器(爬取/注册表)
</p>
</div>
---
## ⚡ 快速开始
### 1. 安装和初始化
在项目根目录中运行交互式初始化 CLI。它会创建 `orbyt.config.json` 并配置您选择的编辑器:
```bash
npx orbyt init --client claude
```
*(也支持 `--client cursor`、`--client vscode` 和 `--client windsurf`)*
### 2. 配置来源
在项目根目录中自定义 `orbyt.config.json` 中的启用来源:
```json
{
"framework": "next",
"styling": "tailwind",
"aliases": {
"components": "@/components/ui"
},
"sources": {
"shadcn": { "mode": "proxy", "enabled": true, "command": "npx shadcn@latest mcp" },
"magicui": { "mode": "proxy", "enabled": true, "command": "npx @magicuidesign/mcp@latest" },
"aceternity": { "mode": "adapter", "enabled": true, "baseUrl": "https://ui.aceternity.com" }
}
}
```
### 3. 运行
在 stdio 模式下启动服务器 — 通常由您的编辑器或客户端自动处理:
```bash
npx orbyt
```
---
## ✨ 功能
- **摄入通道**
- **通道 A(代理)** — 与现有的 MCP 服务器(例如 shadcn、Magic UI)进行通信,并转换它们的输出。
- **通道 B(适配器)** — 直接读取非 MCP 库的公共 JSON 注册表(例如 Aceternity、React Bits、Origin UI),以实现干净的组件获取,无需 HTML 爬取。
- **模糊匹配** — 由 `fuse.js` 提供支持,按关键词、描述、类别和标签对组件进行排名和查找。
- **后台同步** — 过时的缓存条目在后台静默刷新,保持搜索速度。
- **强大的路径解析** — 动态读取本地 `tsconfig.json` 或 `jsconfig.json`,以将自定义路径别名(如 `@/*` 或 `~/*`)解析为正确的本地目录。
- **固定依赖项合并** — 查询 NPM 注册表以解析依赖项的确切最新版本,并将它们干净地合并到项目的 `package.json` 中。
- **框架和许可证防护** — 如果您尝试安装框架不匹配或非许可的组件,则会大声且安全地失败。
---
## 🛠️ 工具表面
Orbyt 通过暴露最小的、高度专门化的工具集来保持上下文窗口的清洁:
| 工具 | 参数 | 描述 |
|------|------------|-------------|
| **`list_sources`** | 无 | 返回连接的来源、状态和配置详细信息。 |
| **`search_components`** | `query: string`<br>`framework?: string`<br>`style?: string` | 对本地索引执行加权模糊搜索,并延迟后台重新验证。 |
| **`get_component`** | `id: string` | 获取特定组件的完整文件内容、依赖项和元数据。 |
| **`install_component`** | `id: string`<br>`targetPath?: string`<br>`dryRun?: boolean`<br>`acknowledgeLicense?: boolean` | 安装组件代码,解析和合并 `package.json` 依赖项,并返回 Tailwind 配置添加。 |
| **`get_theme_tokens`** | `sourceLib: string`<br>`baseColor?: string` | 从源库中获取 CSS 变量配置令牌。 |
| **`refresh_source`** | `sourceName: string` | 强制缓存失效,并为指定库拉取新的目录。 |
---
## ⚙️ 配置参考
| 选项 | 描述 | 类型 | 默认值 |
|--------|-------------|------|---------|
| `framework` | 项目框架约束 | `"next" \| "react" \| "vue" \| "svelte" \| "react-native"` | `"react"` |
| `styling` | 核心 CSS / 样式系统 | `"tailwind" \| "css-modules" \| "styled-components" \| "plain-css"` | `"tailwind"` |
| `aliases.components` | 编写组件的导入路径别名 | `string` | `"@/components/ui"` |
| `cacheTtlMs` | 源注册表的缓存寿命 | `number` | `86400000`(24 小时) |
| `sources` | 已启用代理和适配器引擎的记录 | `object` | *标准预设* |
---
## 📂 项目结构
```text
src/
index.ts 服务器引导(stdio MCP 连接)
cli.ts 入职和交互式提示发起者
config.ts Orbyt 配置解析器和 Zod 模式验证
schema.ts 规范的 OrbytComponent 和搜索结果定义
store.ts JSON 扁平文件缓存索引,带有 Fuse.js 搜索
sources/
types.ts 通用 OrbytSource 接口
registry.ts 源注册调度器
proxy/
mcpProxySource.ts 用于启动子 MCP 服务器进程的管道包装器
shadcn.ts shadcn/ui MCP 服务器的代理映射器
magicui.ts Magic UI MCP 服务器的代理映射器
adapter/
registryJsonAdapter.ts 用于 registry.json 端点的通用适配器
aceternity.ts Aceternity UI 组件模式的适配器
```
---
## 📜 许可证
该项目在 **GNU General Public License v3.0 (GPLv3)** 下获得许可 — 一个强大的 Copyleft 许可证,保证终端用户可以运行、研究、分享和修改软件。
- **作者:** [Sayan Senapati](https://sayan4.vercel.app)
- **GitHub 仓库:** [senapati484/orbyt](https://github.com/senapati484/orbyt)
- **NPM 包:** [orbyt](https://www.npmjs.com/package/orbyt)
- **完整许可证文本:** 请参阅 [LICENSE](https://raw.githubusercontent.com/senapati484/orbyt/main/LICENSE) 文件以获取完整详细信息。