关于 dpyc-oracle
dpyc-oracle 是 DPYC Social Contract 的免费、免认证 MCP 社区服务台。它读取实时 GitHub 注册表,回答成员资格、治理、入会和网络服务问题;指定的注册表变更则需要签名请求。
主要功能
- 01查询成员并解析网络服务
- 02说明成员资格、治理与入会流程
- 03提供网络版本和部署公告
- 04支持签名的公民身份与服务注册
- 05列出并获取定价活动
适用场景
- 01查询成员或查找已注册服务
- 02了解如何加入或新增 Authority
- 03使用已签名的 Nostr 事件注册公民身份
- 04获取社区定价活动
MCP 相关
向 MCP 客户端提供免费的信息查询和注册表工具,读取操作无需认证。指定的注册表写入操作需要 NIP-98 签名请求。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://dpyc-oracle.fastmcp.app/mcpclaude mcp add --transport http lonniev-dpyc-oracle https://dpyc-oracle.fastmcp.app/mcp{"mcpServers":{"lonniev-dpyc-oracle":{"type":"http","url":"https://dpyc-oracle.fastmcp.app/mcp"}}}在 Cursor 中打开{"servers":{"lonniev-dpyc-oracle":{"type":"http","url":"https://dpyc-oracle.fastmcp.app/mcp"}}}在 VS Code 中打开{"mcpServers":{"lonniev-dpyc-oracle":{"type":"http","url":"https://dpyc-oracle.fastmcp.app/mcp"}}}{"mcpServers":{"lonniev-dpyc-oracle":{"serverUrl":"https://dpyc-oracle.fastmcp.app/mcp"}}}命令在终端中运行;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 签名验证自行注册:
request_citizenship(npub, display_name)— 发出加密挑战- 使用你的 Nostr nsec 对挑战签名(离线操作,nsec 不会离开你的设备)
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() 获取实时数据。以下是稳定的源代码仓库:
核心
- dpyc-community — 注册表、治理和成员数据
- tollbooth-dpyc — 每个 Operator 和 Authority 所基于的 Python SDK
- tollbooth-sample — 供新服务使用的 Operator 参考模板
- tollbooth-pricing-studio — Operator 用于设计定价模型的 iOS 应用
- tollbooth-web — 供 Operator 前端共用的浏览器 SDK
Authorities(认证链)
- tollbooth-authority — 认证和费用账本
- tollbooth-authority-northamerica — 区域认证机构
- tollbooth-authority-newengland — 次区域认证机构
Operators
- thebrain-mcp — 个人大脑知识图谱
- excalibur-mcp — X/Twitter 发帖
- schwab-mcp — Charles Schwab 经纪业务数据
- taxsort-mcp — 税务归类和分类
- optionality-mcp — 期权分析
- cypher-mcp — 变现的图谱问答(在 Neo4j/AuraDB 上使用名为 Cypher 的语言)
- goodearth-mcp — 按地区划分的农场气候分析
- beesknees-mcp — The Bee's Knees,一场多人参与、争夺蜂后的竞赛
- roastify-mcp — Roastify 咖啡目录和包装设计图
- ChartRemotely-mcp — 通过配对 Agent,将证券添加到桌面图表中
Advocates(共享实用工具,不变现)
- tollbooth-oauth2-collector — OAuth2 授权码收集
- tollbooth-shortlinks — 用于 OAuth 流程的临时短链接
许可证
Apache-2.0
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。