m

mcp模型上下文

一个基于 GitHub 的模型上下文协议实现,使大型语言模型能够在一个通用对象引用(UOR)框架中访问和操作数据,为对象管理提供标准化接口,并采用去中心化存储。

code-executionversion-control

305 查看 · 2026-07-07 更新

简介

一个基于 GitHub 的模型上下文协议实现,使大型语言模型能够在一个通用对象引用(UOR)框架中访问和操作数据,为对象管理提供标准化接口,并采用去中心化存储。

简介

一个基于 GitHub 的模型上下文协议实现,使大型语言模型能够在一个通用对象引用(UOR)框架中访问和操作数据,为对象管理提供标准化接口,并采用去中心化存储。

Model Context Protocol (MCP) - UOR 实现

CI Pipeline TypeScript Node.js License

🤖 欢迎,自主代理!

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 架构,围绕以下三者之间的三方一致性关系构建:

  1. 对象:被表示的实体
  2. 表示形式:对象的基础无关的规范形式
  3. 观察者框架:从这些视角查看对象

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部署:

  1. 访问https://68113dd199a34737508b5211--uor-mcp.netlify.app/
  2. 使用您的GitHub Client ID和Token Exchange Proxy配置应用程序
  3. 通过GitHub身份验证以访问您的UOR数据
  4. 开始使用MCP协议与您的LLM应用程序

创建您自己的部署

要部署您自己的实例:

  1. Fork此仓库
  2. 在您的GitHub开发者设置中创建一个GitHub OAuth应用- 将授权回调 URL 设置为 https://api.netlify.com/auth/done
  3. 部署到 Netlify(请参阅下面的 Netlify 部署指南
  4. 通过您的 Netlify URL 访问部署(例如,https://your-site-name.netlify.app

通过 Netlify OAuth 代理进行身份验证

此应用程序使用 Netlify 内置的 OAuth 代理来实现安全的 GitHub 身份验证:

  1. 在您的 GitHub OAuth 应用设置中,必须将 OAuth 回调 URL 设置为 https://api.netlify.com/auth/done
  2. GitHub 客户端 ID 和密钥作为环境变量存储在 Netlify 中
  3. 若要轮换凭据,请同时更新 GitHub OAuth 应用和 Netlify 环境变量

Netlify 部署

要部署到 Netlify:

  1. 将您的 GitHub 仓库连接到 Netlify
  2. 配置构建设置:
    • 构建命令:npm run build && npm run build:client
    • 发布目录:dist/public
  3. 在 Netlify 中添加以下环境变量:
    • GITHUB_CLIENT_ID:您的 GitHub OAuth 应用客户端 ID
    • GITHUB_CLIENT_SECRET:您的 GitHub OAuth 应用客户端密钥
  4. 部署您的站点

或者,您可以使用 URL 参数来配置部署:

https://68113dd199a34737508b5211--uor-mcp.netlify.app/?github_client_id=YOUR_CLIENT_ID&token_exchange_proxy=YOUR_PROXY_URL

与 LLM 应用程序一起使用

要将此 MCP 服务器与 LLM 应用程序一起使用:

  1. 配置您的 LLM 应用程序以使用 MCP 端点:https://68113dd199a34737508b5211--uor-mcp.netlify.app/mcp
  2. 使用 GitHub 对用户进行身份验证
  3. 使用标准的 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 文件。

来源