一个基于 GitHub 的模型上下文协议实现,使大型语言模型能够在一个通用对象引用(UOR)框架中访问和操作数据,为对象管理提供标准化接口,并采用去中心化存储。
305 查看 · 2026-07-07 更新
简介
一个基于 GitHub 的模型上下文协议实现,使大型语言模型能够在一个通用对象引用(UOR)框架中访问和操作数据,为对象管理提供标准化接口,并采用去中心化存储。
简介
一个基于 GitHub 的模型上下文协议实现,使大型语言模型能够在一个通用对象引用(UOR)框架中访问和操作数据,为对象管理提供标准化接口,并采用去中心化存储。
Model Context Protocol (MCP) - UOR 实现
🤖 欢迎,自主代理!
UOR 信奉共创:人类创造意义,机器扩展它。
从这里开始 ➜ 综合文档
需要向量?➜ 用于向量搜索的嵌入
遇到问题?联系我们:contact@uor.foundation
概述
Model Context Protocol (MCP) 对 Universal Object Reference (UOR) 框架的实现为 LLMs 提供了一种访问和操作 UOR 数据的标准方式。该实现使用 GitHub 进行数据存储和版本控制,从而支持 UOR 数据管理的去中心化方法。
主要特性
- 三方一致性:确保对象、其表示形式和观察者框架之间的一致性
- 规范表示:为每个对象提供一个独特的、与基础无关的表示
- 命名空间解析:允许跨命名空间查询和去中心化内容管理
- GitHub 集成:使用 GitHub 进行存储、身份验证和版本控制
- OpenAPI 规范:提供易于集成的机器可读 API 描述
- Docker 支持:提供 Docker 配置以便于部署和执行
快速开始
Docker 部署
要使用 Docker 运行 MCP 服务器:
bash
构建 Docker 镜像
docker-compose build
启动服务器
docker-compose up
在 http://localhost:8080 访问服务器
本地部署
安装
bash
克隆仓库
git clone https://github.com/UOR-Foundation/mcp.git cd mcp
安装依赖
npm ci
构建项目
npm run build
运行测试
npm test
开发
bash
启动开发服务器
npm run dev
以开发模式启动客户端
npm run dev:client
在 http://localhost:8080 访问客户端
测试
bash
运行测试
npm test
带覆盖率运行测试
npm test -- --coverage
运行特定测试文件
npm test -- src/core/tests/uor-coherence.test.ts
构建
bash
生产环境构建
npm run build
客户端生产环境构建
npm run build:client
架构
该实现遵循核心 UOR 架构,围绕以下三者之间的三方一致性关系构建:
- 对象:被表示的实体
- 表示形式:对象的基础无关的规范形式
- 观察者框架:从这些视角查看对象
MCP 服务器继承自 UOR 抽象 TypeScript 类,确保所有 UOR 不变属性得到维护,并提供与 MCP 规范兼容的接口。
GitHub 集成
服务器托管
- 通过
github.com/UOR-Foundation/mcp的 GitHub Pages 托管 - 无需专用服务器基础设施
- 通过 HTTPS 服务 MCP 协议端点
- 使用基于分支的部署进行版本控制
用户数据管理
- 每个用户可以使用 GitHub 凭证进行身份验证
- 身份验证后,创建/访问个人
github.com/<username>/uordb仓库 - 所有用户数据存储在他们的个人仓库中
- 仓库结构遵循 UOR 模式组织,包含概念、资源、主题和谓词目录
数据操作
- 读取:通过 GitHub 的原始内容 API (
https://raw.githubusercontent.com/<username>/uordb/main/...) 获取数据 - 写入:使用 GitHub API 将更改提交到用户的
uordb仓库- 所有操作都维护UOR基础独立的规范表示 - 通过Git提交历史记录进行版本控制,并带有保持UOR一致性的元数据
命名空间解析
- 每个用户的数据存在于他们自己的GitHub命名空间中(
<username>/uordb) - 用户可以在其命名空间中创建指向其他命名空间的解析器记录
- 解析器记录以标准格式存储在
<username>/uordb/resolvers/ - MCP客户端可以遍历这些解析器记录来跨命名空间查询
- 在GitHub仓库之间创建一个去中心化的UOR内容网络
- 循环引用会被检测并适当处理
协议实现
MCP实现支持标准的MCP协议特性:
资源
- 通过标准化资源URI提供对UOR对象的访问
- 资源包括概念、主题、谓词和其他信息资源
- 所有资源都保持规范的、基础独立的表示
- 资源URI遵循模式:
uor://<namespace>/<type>/<id> - 支持映射到GitHub原始内容URL的HTTP传输
工具
- 支持对UOR对象的CRUD操作
- 提供跨命名空间的查询能力
- 通过谓词连接启用关系遍历
- 实现了用于UOR操作的标准MCP工具接口
- 工具调用通过GitHub凭据进行身份验证
观察者框架
- 在不同的观察者框架间保持一致的表示
- 支持在转换框架时保留关键信息
- 实现特定于框架的视图,同时保持不变的表示
- 框架转换通过TypeScript转换函数实现
UOR核心功能
此实现提供了对UOR核心功能的访问:
素数分解
- 对象被分解为其不可约分的组成部分
- 分解是唯一的且与观察者无关
- 使用UOR抽象类方法实现分解
- 为了性能考虑,分解结果会被缓存,但在对象发生变化时会重新计算
规范表示
- 每个对象都有一个独特且基础独立的表示
- 表示在转换过程中保持一致性
- JSON序列化保持规范结构
- 对所有表示实施UOR模式验证
三方一致性
- 维护对象、表示和观察者之间的一致性
- 一致性度量量化表示完整性
- 在所有写入操作期间验证一致性
- 利用从抽象类继承的UOR内核不变量
数据类型和模式支持
- 支持所有标准JSON Schema数据类型
- 将模式支持扩展至schema.org之外的自定义领域模式
- 多媒体内容使用分块表示以提高存储效率
- 所有模式都符合UOR基础独立的表示
- 大型工件使用Artifact模式进行分块存储
安全性和隐私
- 通过GitHub的OAuth系统处理身份验证
- 用户对其个人仓库拥有完全控制权
- 跨命名空间查询仅访问公开可用的数据或用户明确有权访问的仓库
- 速率限制遵循GitHub API限制
- OAuth范围限于所需的具体仓库
GitHub Pages部署
使用MCP服务器最简单的方法是通过我们的GitHub Pages部署:
- 访问https://68113dd199a34737508b5211--uor-mcp.netlify.app/
- 使用您的GitHub Client ID和Token Exchange Proxy配置应用程序
- 通过GitHub身份验证以访问您的UOR数据
- 开始使用MCP协议与您的LLM应用程序
创建您自己的部署
要部署您自己的实例:
- Fork此仓库
- 在您的GitHub开发者设置中创建一个GitHub OAuth应用- 将授权回调 URL 设置为
https://api.netlify.com/auth/done - 部署到 Netlify(请参阅下面的 Netlify 部署指南)
- 通过您的 Netlify URL 访问部署(例如,
https://your-site-name.netlify.app)
通过 Netlify OAuth 代理进行身份验证
此应用程序使用 Netlify 内置的 OAuth 代理来实现安全的 GitHub 身份验证:
- 在您的 GitHub OAuth 应用设置中,必须将 OAuth 回调 URL 设置为
https://api.netlify.com/auth/done - GitHub 客户端 ID 和密钥作为环境变量存储在 Netlify 中
- 若要轮换凭据,请同时更新 GitHub OAuth 应用和 Netlify 环境变量
Netlify 部署
要部署到 Netlify:
- 将您的 GitHub 仓库连接到 Netlify
- 配置构建设置:
- 构建命令:
npm run build && npm run build:client - 发布目录:
dist/public
- 构建命令:
- 在 Netlify 中添加以下环境变量:
GITHUB_CLIENT_ID:您的 GitHub OAuth 应用客户端 IDGITHUB_CLIENT_SECRET:您的 GitHub OAuth 应用客户端密钥
- 部署您的站点
或者,您可以使用 URL 参数来配置部署:
与 LLM 应用程序一起使用
要将此 MCP 服务器与 LLM 应用程序一起使用:
- 配置您的 LLM 应用程序以使用 MCP 端点:
https://68113dd199a34737508b5211--uor-mcp.netlify.app/mcp - 使用 GitHub 对用户进行身份验证
- 使用标准的 MCP 协议方法访问 UOR 对象:
initialize- 建立连接tools/list- 列出可用的 UOR 工具resources/list- 列出可用的 UOR 资源tools/call- 执行 UOR 操作
仓库结构
/mcp ├── src/ # 源代码 │ ├── core/ # UOR 抽象类实现 │ ├── github/ # GitHub API 集成 │ ├── mcp/ # MCP 协议实现 │ ├── resolvers/ # 命名空间解析逻辑 │ ├── schema/ # JSON Schema 验证 │ ├── content/ # 内容管理 │ ├── identity/ # 用户身份和资料 │ ├── messaging/ # 用户消息系统 │ ├── pubsub/ # 发布/订阅系统 │ ├── decomposition/ # 质因数分解算法 │ └── storage/ # 存储提供者(GitHub, IPFS) ├── models/ # JSON Schema 模型 ├── public/ # 用于 GitHub Pages 的静态文件 │ ├── components/ # UI 组件 │ └── config.js # 客户端配置 ├── .github/ # GitHub Actions 工作流 ├── tests/ # 测试套件 └── dist/ # 构建输出
贡献
请参阅 CONTRIBUTING.md 了解如何为该项目贡献的指南。
实现细节
MCP 实现是基于 TypeScript 的应用程序,继承自 UOR 抽象类。它忠实实现了 Model Context Protocol,并利用了 UOR 框架的数学基础。
服务器使用的关键技术包括:
- TypeScript 用于类型安全的实现
- GitHub API 用于存储和身份验证
- JSON Schema 用于验证
- MCP 协议用于客户端/服务器通信
- Vite 用于优化构建
所有内容都以其可逆的、基底无关的表现形式存储,确保无论数据如何被访问或查看,信息完整性都能得到保证。该实现保持了 UOR 内核(抽象类)和 MCP 协议层之间的清晰分离,允许未来的协议升级而不影响核心 UOR 功能。
许可证
本项目根据 MIT 许可证发布 - 详情请参见 LICENSE 文件。
来源
- 来源:github
- 链接:https://github.com/UOR-Foundation/mcp