mcpField
D
dpyc-oracle

dpyc-oracle

远程服务
github.com/lonniev社交媒体0今天更新
代码仓库

关于 dpyc-oracle

dpyc-oracle 是 DPYC Social Contract 的免费、免认证 MCP 社区服务台。它读取实时 GitHub 注册表,回答成员资格、治理、入会和网络服务问题;指定的注册表变更则需要签名请求。

主要功能

  1. 01查询成员并解析网络服务
  2. 02说明成员资格、治理与入会流程
  3. 03提供网络版本和部署公告
  4. 04支持签名的公民身份与服务注册
  5. 05列出并获取定价活动

适用场景

  1. 01查询成员或查找已注册服务
  2. 02了解如何加入或新增 Authority
  3. 03使用已签名的 Nostr 事件注册公民身份
  4. 04获取社区定价活动

MCP 相关

向 MCP 客户端提供免费的信息查询和注册表工具,读取操作无需认证。指定的注册表写入操作需要 NIP-98 签名请求。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://dpyc-oracle.fastmcp.app/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

30

此工具无需参数。

详细介绍

DPYC Oracle

一个免费、无需身份验证的 MCP 咨询服务,适用于 DPYC Social Contract。Oracle 通过实时读取 dpyc-community GitHub registry,回答有关会员资格、治理、入门指引和税率的问题。无需积分、Neon 数据库、Secure Courier、付款或凭据。写入注册表是例外:每次写入都必须通过签名请求提交(请参阅签名注册表写入)。

可用工具

工具参数描述
about()—根据仓库文档(README + GOVERNANCE)提供扩展说明
lookup_member(npub)npub: str通过 Nostr npub 查找成员
list_services(probe, kind)probe: bool = True, kind: str = "all"从注册表枚举在线服务网络;可选通过 MCP 握手询问每位成员的自我介绍和工具清单
get_tax_rate()—说明各认证 Authority 收取的从价税;不提供具体税率,并引导至相关 Authority 的 check_price
economic_model()—定性描述价值如何沿认证链流动(不包含硬编码税率、数量或收入数据)
get_rulebook()—GOVERNANCE.md 内容
how_to_join()—按层级区分的入驻指南
how_to_add_authority()—新建收费亭 Authority 的端到端指南(从 dpyc-community 实时获取)
who_is_first_curator()—首位 Curator 的 npub 和记录
network_versions()—当前推荐的组件版本
network_advisory()—面向运营者的部署建议
service_status()—运行时版本诊断
resolve_service(name, npub)name: str = "", npub: str = ""通过名称或 npub(必须且只能指定一个)解析一项服务,返回其 npub、url、name、role 和 purchase_mode。运营者通过 SDK 的 default_oracle_client() 使用此功能,而不是读取 GitHub
resolve_authority_for(npub)npub: str返回成员的 upstream_authority_npub 中指定的认证 Authority(npub、url、name)
get_relays()—从 dpyc-community/relays.json 获取 DPYC Nostr 中继集合,按优先级排序;Oracle 确认不可达的中继会移至末尾,不会被移除
report_relay_failure(relay, reporter_npub, signed_event, mode)relay: str, reporter_npub: str, signed_event: str, mode: str = "unknown"报告 DPYC 集合中的中继不可达。事件必须由 reporter_npub 签名;随后 Oracle 会自行探测该中继,只有 Oracle 自身的探测结果会调整其排序
request_citizenship(npub, display_name)npub: str, display_name: str开始公民身份入驻流程(签发质询)
confirm_citizenship(npub, challenge_id, signed_event_json)npub: str, challenge_id: str, signed_event_json: str使用已签名的 Nostr 事件完成入驻流程
register_advocate(npub, display_name, service_name, service_url, service_description)npub: str, display_name: str, service_name: str, service_url: str, service_description: str将社区实用服务注册为 Advocate;请求必须使用 npub 对应的密钥签名
register_authority(authority_npub, display_name, service_url, upstream_authority_npub)authority_npub: str, display_name: str, service_url: str, upstream_authority_npub: str注册新的 Authority(由入驻流程调用)
register_operator(operator_npub, display_name, service_url, authority_npub)operator_npub: str, display_name: str, service_url: str, authority_npub: str注册新的 Operator。其所属 Authority 的所有者批准接纳后,由该 Authority 调用;请求必须使用 authority_npub 对应的密钥签名
update_operator(operator_npub, authority_npub, service_url, display_name)operator_npub: str, authority_npub: str, service_url: str = "", display_name: str = ""更新现有 Operator 的注册信息(例如新的 MCP 端点)。其所属 Authority 的所有者批准 Operator 的更新请求后,由该 Authority 调用;请求必须使用 authority_npub 对应的密钥签名
deregister_operator(operator_npub, authority_npub)operator_npub: str, authority_npub: str在 Operator 离开所属 Authority 或 Authority 与其解除关系时,将其从注册表中移除。由 Authority 调用;请求必须使用 authority_npub 对应的密钥签名
check_ban_status(npub)npub: str检查 npub 是否被封禁
publish_campaign(author_npub, operator_npub, campaign_json, campaign_name, campaign_markdown)author_npub: str, operator_npub: str, campaign_json: str, campaign_name: str = "", campaign_markdown: str = ""向 DPYC 社区发布定价活动;请求必须使用 author_npub 对应的密钥签名
list_campaigns(operator_npub, author_npub)operator_npub: str = "", author_npub: str = ""列出已发布的定价活动,可按 Operator 或作者筛选
get_campaign(author_npub, operator_npub, slug, format)author_npub: str, operator_npub: str, slug: str, format: str = "json"获取已发布的定价活动(JSON 或 Markdown)
规划中(未来)
工具描述
renounce_membership(npub)公民通过自动化 PR 自行退出
initiate_ban_election(target_npub, reason)发起经济封禁投票
cast_ban_vote(election_id, vote, npub)使用 Lightning 资助的封禁投票

已签名的注册表写入

register_operator、update_operator 和 deregister_operator 会更改网络信任的对象,因此 Oracle 只接受由赞助该 Operator 的 Authority 发起的请求。请求必须携带 NIP-98 签名(Authorization: Nostr <base64 kind-27235>,与请求的方法、URL 和正文绑定),且该签名必须使用请求中所指定 authority_npub 对应的密钥生成。未签名的请求,或由其他密钥签名的请求,都会被拒绝。

register_advocate 和 publish_campaign 也需要相同的 NIP-98 签名,分别使用要写入的 npub 对应的密钥生成:Advocate 为自身注册,Campaign 使用其作者自己的 npub 发布。持有密钥的任何人都可以执行这些操作,但不能以他人的 npub 名义执行。

其他所有 Oracle 工具的响应都不带 Authorization 标头。

Operator 不会自行调用这些工具。Operator 会向其 Authority 发起请求(在 Authority 上调用 request_adoption、update_operator 或 deregister_operator),待 Authority 所有者批准后,Authority 会在此处发起签名调用;注销操作则会立即调用。

公民身份注册

新公民可以通过 Schnorr 签名验证自行注册:

  1. request_citizenship(npub, display_name) — 发出加密挑战
  2. 使用你的 Nostr nsec 对挑战签名(离线操作,nsec 不会离开你的设备)
  3. confirm_citizenship(npub, challenge_id, signed_event_json) — 验证签名并自动提交

成功后,Oracle 会在 dpyc-community 中创建个人成员文件 members/citizens/{npub}.json。CI 工作流会根据这些个人文件重新生成 members/read-only-lookup-cache.json。

Advocate 注册

Advocate 是社区实用服务(例如 OAuth2 收集器),用于提供共享基础设施,但不会像 Operator 一样进行变现。注册由 Oracle 处理——无需质询-响应:

register_advocate(
    npub="<service_npub>",
    display_name="My Service",
    service_name="my-service",
    service_url="https://my-service.fastmcp.app",
    service_description="What the service does",
)

Oracle 会直接提交 members/advocates/{npub}.json 并更新 members/read-only-lookup-cache.json,因此可立即发现该 Advocate。对等 MCP 服务会通过此 Oracle 的 resolve_service(name=...) 发现服务 URL;tollbooth-dpyc 调用方式为 default_oracle_client().resolve_service(name=...)。

如何连接

此服务托管在 Horizon 上。将其添加到你的 MCP 客户端配置中:

{
  "mcpServers": {
    "dpyc-oracle": {
      "url": "https://dpyc-oracle.fastmcp.app/mcp"
    }
  }
}

相关仓库

权威且始终保持最新的名录位于注册表中——调用 list_services() / lookup_member() / network_versions() 获取实时数据。以下是稳定的源代码仓库:

核心

Authorities(认证链)

Operators

Advocates(共享实用工具,不变现)

许可证

Apache-2.0

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。