AI Agent Identity and Verifiable Data

AI Agent Identity and Verifiable Data

empe-io

研究与数据
访问服务器

README

AI 代理身份和可验证数据

简介

端到端可验证数据基础设施 (EVDI) 是一个全面的基础设施,用于管理 AI 代理生态系统中的数字身份和凭证。 EVDI 提供了一个安全、去中心化的框架,使 AI 代理能够在与其他代理、人类和系统交互时建立、管理和验证其身份。

什么是自主持身份 (SSI)?

自主持身份 (SSI) 是一种数字身份管理模型,它使个人(在我们的例子中,是 AI 代理)能够控制自己的身份和数据。 与传统的集中式身份系统(由单个机构控制和验证身份)不同,SSI 允许实体:

  1. 拥有自己的身份:控制其数字存在,而不依赖于任何中央机构
  2. 管理其凭证:根据需要存储和共享可验证的凭证
  3. 证明声明:在不泄露不必要信息的情况下证明关于自身的属性
  4. 建立信任:以去中心化的方式与其他实体建立可信的连接

颁发者和验证者的角色

在 SSI 生态系统中,有三个关键角色:

  • 颁发者:创建和签署可验证凭证的实体(例如,AI 代理在执行面试后证明用户的技能)
  • 持有者:接收和存储凭证的实体(例如,AI 代理存储其能力)
  • 验证者:请求和验证凭证的实体(例如,服务检查代理的授权)

本存储库侧重于颁发者组件,该组件允许受信任的机构创建并向 AI 代理或其他实体颁发可验证的凭证。

EVDI 对 AI 代理的重要性

随着 AI 系统变得越来越自主并与各种实体交互,它们需要安全的方式来:

  • 证明其身份和能力
  • 与人类、其他 AI 代理和外部系统建立信任
  • 在不损害安全性的情况下共享可验证的信息
  • 在进行复杂交互时保持隐私

EVDI 通过密码学安全、防篡改的凭证来实现这些功能,这些凭证无需联系原始颁发者即可验证。

交互范围

EVDI 实现的交互不仅限于代理之间的通信。 它们扩展到:

  • 代理到人:AI 代理可以向人类展示和颁发可验证的凭证
  • 代理到系统:AI 代理可以使用其凭证向外部系统进行身份验证
  • 人到代理:人类可以向 AI 系统展示凭证
  • 系统到代理:外部系统可以向 AI 代理颁发凭证

有关更多信息,请访问我们的文档

本存储库包含 Empe 自主持身份颁发者服务的 MCP(模型上下文协议)服务器,它是更广泛的 EVDI 生态系统的第一个组件。 未来的组件将包括凭证验证功能、代理到代理身份验证以及 AI 代理的自主持身份管理。

SSI 颁发者服务的 MCP 服务器

概述

本项目实现了一个模型上下文协议 (MCP) 服务器,该服务器充当 AI 模型和自主持身份 (SSI) 生态系统中的 EMPE 颁发者服务之间的适配器。 它基于 Spring Boot 和 Spring AI 的 MCP 服务器功能构建,允许 AI 助手通过定义明确的工具与颁发者服务功能进行交互,从而实现 AI 驱动的凭证管理工作流程。

什么是 MCP?

模型上下文协议 (MCP) 是一种使 AI 模型能够与外部系统和工具交互的协议。 它允许模型:

  • 发现可用的工具
  • 进行工具调用以执行特定操作
  • 处理来自这些操作的结果

此 MCP 服务器将颁发者服务功能公开为可由 AI 模型调用的工具,从而弥合了自然语言交互和 SSI 凭证操作之间的差距。

工作原理

  1. 工具注册:服务器将 SSI 操作定义为具有清晰描述和参数的工具
  2. AI 集成:AI 模型连接到 MCP 服务器以发现可用的工具
  3. 工具执行:当 AI 需要执行 SSI 操作时,它会向此服务器进行工具调用
  4. 结果处理:服务器在颁发者服务上执行操作并将结果返回给 AI

主要组件

  • MCP 服务器:用于向 AI 模型公开工具的基础
  • 模式管理工具:用于创建和管理凭证模式的功能
  • 凭证颁发工具:用于生成和颁发可验证凭证的功能
  • 颁发者服务客户端:处理与底层颁发者服务 API 的通信

未来功能

EVDI 生态系统不断发展,计划的功能包括:

  1. 凭证验证:用于验证代理提供的凭证的工具
  2. 代理身份管理:使 AI 代理能够使用 DID 管理自己的身份
  3. 凭证存储:允许代理收集和存储自己的凭证
  4. 选择性披露:使代理能够共享特定的凭证属性,而无需泄露所有信息
  5. 代理到代理身份验证:AI 代理之间使用 DID 的安全身份验证机制

访问颁发者服务

一键式门户

我们提供了一个一键式门户,您可以在其中轻松部署自己的颁发者或验证者服务实例。 您可以通过 https://oneclick.empe.io/ 访问该门户。

演示环境

为了进行测试,我们提供了一个演示环境:

https://mcp-demo-issuer.evdi.app

注意:访问演示环境需要一个访问代码,出于安全原因,该代码未包含在本 README 中。 访问代码将通过安全渠道提供给感兴趣的用户。

设置 MCP 服务器

前提条件

  • Java 23 或更高版本
  • Maven 3.8+
  • 访问 EMPE 颁发者服务实例

配置

在您的 application.propertiesapplication.yml 中配置 MCP 服务器:

# MCP 服务器配置
spring.ai.mcp.server:
  port: 8090
  cors.allowed-origins: "*"  # 仅用于开发

# 颁发者服务连接
issuer:
  api:
    base-url: https://your-issuer-service.example.com/api/v1
    client-secret: your-client-secret
    schema-templates:
      proof-of-purchase:
        name: ProofOfPurchase
        type: ProofOfPurchase
        properties:
          ticket:
            type: string
            title: 票号
          seat:
            type: string
            title: 座位分配
          description:
            type: string
            title: 活动描述
        required-fields:
          - ticket
          - seat
          - description

构建和运行

mvn clean package
java -jar target/mpc-issuer-verifier-0.0.1-SNAPSHOT.jar

将 AI 模型连接到 MCP 服务器

OpenAI 自定义 GPT 示例

如果您正在使用 OpenAI 创建自定义 GPT:

  1. 转到 GPT Builder
  2. 在“配置”选项卡中,选择“操作”
  3. 添加一个新操作,其中:
    • 身份验证:无
    • API 端点:http://your-mcp-server:8090/api/v1
    • 模式:设置为“从 URL 导入”并使用 http://your-mcp-server:8090/api/v1/openapi.json

Anthropic Claude 示例

对于 Claude,您将使用函数调用功能:

const response = await client.messages.create({
  model: "claude-3-opus-20240229",
  max_tokens: 1000,
  system: "You are an assistant that helps users manage SSI credentials.",
  messages: [
    {
      role: "user",
      content: "Create a proof of purchase credential"
    }
  ],
  tools: [
    {
      name: "mcp_tools",
      url: "http://your-mcp-server:8090/api/v1/openapi.json"
    }
  ]
});

可用的 AI 工具

MCP 服务器向 AI 模型公开以下工具,并提供详细描述以指导适当的使用:

模式管理工具

createSchema

创建一个新的凭证模式,定义可验证凭证的结构。

参数:

  • name:人类可读的名称(例如,“ProofOfPurchase”、“IdentityCredential”)
  • type:此模式类型的唯一标识符,用于创建产品时
  • properties:JSON 映射,定义模式属性及其类型和描述
  • requiredFields:必须包含在凭证中的强制字段列表

getAllSchemas

检索系统中的所有凭证模式。

getSchemaById

按其唯一标识符 (UUID) 获取特定模式。

参数:

  • id:要检索的模式的 UUID(例如,“db5a33ae-2eef-41b4-9c74-2ed16c4bb4f4”)

deleteSchema

从系统中永久删除模式。

参数:

  • id:要删除的模式的 UUID

schemaExistsByType

检查是否已存在具有指定类型的模式。

参数:

  • type:要检查的模式类型(区分大小写)

getLatestSchemaByType

按其类型检索模式的最新版本。

参数:

  • type:要搜索的模式类型(区分大小写)

凭证颁发工具

createTargetedOffering

为特定收件人 DID 创建凭证产品。

参数:

  • type:要提供的凭证类型(必须与现有模式匹配)
  • credentialSubject:要包含在凭证中的数据,以键值对的形式
  • recipientDid:预期收件人的 DID(例如,“did:empe:testnet:123abc456def”)

createOpenOffering

创建一个任何人都可以声明的开放凭证产品。

参数:

  • type:要提供的凭证类型(必须与现有模式匹配)
  • credentialSubject:要包含在凭证中的数据,以键值对的形式

AI 交互示例

示例 1:创建模式并提供凭证

用户:“为我们的高级会员创建会员凭证。”

AI 处理

  1. 首先,检查是否存在合适的模式:

    {
      "name": "schemaExistsByType",
      "parameters": {
        "type": "MembershipCredential"
      }
    }
    
  2. 如果不存在模式,则创建一个:

    {
      "name": "createSchema",
      "parameters": {
        "name": "MembershipCredential",
        "type": "MembershipCredential",
        "properties": {
          "memberName": {
            "type": "string",
            "title": "会员姓名"
          },
          "membershipLevel": {
            "type": "string", 
            "title": "会员级别"
          },
          "validUntil": {
            "type": "string",
            "title": "有效期至",
            "format": "date"
          }
        },
        "requiredFields": ["memberName", "membershipLevel", "validUntil"]
      }
    }
    
  3. 创建凭证产品:

    {
      "name": "createOpenOffering",
      "parameters": {
        "type": "MembershipCredential",
        "credentialSubject": {
          "memberName": "Jane Smith",
          "membershipLevel": "Premium",
          "validUntil": "2026-03-19"
        }
      }
    }
    

示例 2:检索模式信息

用户:“我们目前支持哪些凭证类型?”

AI 处理

{
  "name": "getAllSchemas",
  "parameters": {}
}

然后,AI 将处理结果以提供人类可读的摘要: “我们目前支持以下凭证类型:

  1. MembershipCredential(2 个版本)
  2. EventTicket
  3. ProofOfPurchase”

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python