关于 cypher-mcp
cypher-mcp 是一款 MCP 服务,通过运营者编写的 Cypher 模板,从 Neo4j 图数据库提供定价查询结果。它面向图数据使用者和 Agent,且不会向用户公开原始 Cypher。
主要功能
- 01执行经过审核的参数化 Cypher 查询
- 02将查询发布为具类型的命名工具
- 03为各工具单独设置价格
- 04查询失败时退还扣款
- 05通过 Neo4j Browser 编辑模板
适用场景
- 01在不开放原始数据库访问的情况下向 Agent 提供图查询结果
- 02将目录中的查询发布为可调用的 MCP 工具
- 03对成功返回的图查询结果收费
- 04在 Neo4j Browser 中完善并测试模板
MCP 相关
向 MCP 客户端提供参数化图查询和已发布的命名工具。运营者通过受限的 MCP 工具管理查询模板和工具发布。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://cypher-mcp.fastmcp.app/mcpclaude mcp add --transport http lonniev-cypher https://cypher-mcp.fastmcp.app/mcp{"mcpServers":{"lonniev-cypher":{"type":"http","url":"https://cypher-mcp.fastmcp.app/mcp"}}}在 Cursor 中打开{"servers":{"lonniev-cypher":{"type":"http","url":"https://cypher-mcp.fastmcp.app/mcp"}}}在 VS Code 中打开{"mcpServers":{"lonniev-cypher":{"type":"http","url":"https://cypher-mcp.fastmcp.app/mcp"}}}{"mcpServers":{"lonniev-cypher":{"serverUrl":"https://cypher-mcp.fastmcp.app/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
112| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| npub | string | 是 | 要查询余额的 Nostr 公钥(npub1...)。 |
| dpop_token | string | 是 | 证明调用方持有 npub 的凭据:来自 receive_npub_proof 的授权信封,或由 npub 签名的 kind-27235 Nostr 事件原始 JSON,其中 `u` 标签的值为此工具的名称。 |
详细介绍
cypher-mcp
通过 Bitcoin Lightning 提供付费图谱答案。 一款 Tollbooth-DPYC Operator, 销售图谱中的付费答案——由运营方编写、带参数的命名 Cypher 查询模板,而不是原始数据库访问权限。
开源 Neo4j MCP 服务只是连接数据库的免费通道,运营方仍需单独支付数据库费用(Neo4j 账单),并通过单独的账单系统(Stripe 技术栈)向客户收费。 cypher-mcp 将基础设施成本、应用计费和访问控制整合到一个按量计费的 MCP 接口中:运营方不再销售席位,而是销售以 sats 结算的答案,无需 Stripe 技术栈,也不会把 Neo4j 账单转嫁给客户。
已上线:https://cypher-mcp.fastmcp.app/mcp。
工作原理
两个平面,清晰分离:
- 结算/身份平面 — Neon + Nostr + Tollbooth,与所有其他 DPYC Operator 共用。它完全不知道图谱的存在。
- 价值交付平面 — Bolt → Neo4j,封装在工具处理程序内部(
graph.py),每个请求单独建立和拆除连接(不使用连接池)。底层存储对用户而言只是不可见的实现细节,因此可以替换,而无需更改 MCP 接口。
三个概念层:
| 层级 | 位置 | 内容 |
|---|---|---|
| L1 — 原语 | 代码(仅随项目发布一次) | execute_query_by_key(key, params) + 目录 CRUD |
| L2 — 目录 | Neon query_catalog | key → 经过审核的 Cypher 模板 + 参数架构(可执行的查询) |
| L3 — 定价 | Tollbooth 定价模型 | 销售内容、名称及价格 |
状态:已上线,支持命名工具。 L1 + L2 已发布并正在提供实际计费的答案——已有运营方经 Authority 采纳,后端由 AuraDB 提供支持,并已端到端验证抛出异常时退款。命名工具现已上线(L3 工具合成): 运营方可以调用
publish_tool(key),将查询作为一等、带类型的工具发布(例如cypher_which_service_handles(keyword)),并在 Pricing Studio 中单独定价。每个键的参数化定价公式将在后续步骤中推出——请参阅 CHANGELOG.md。
工具
用户(付费):
cypher_execute_query_by_key(key, params)— 运行已发布的查询。你只需提供参数;查询文本由运营方管理,参数会绑定为 Cypher$params(绝不通过字符串插值)。只有成功交付答案才会收费——未知键、无效参数或查询失败都会回滚扣款(抛出异常时退款)。
免费: cypher_public_factory_stats — 仅提供汇总计数(不含标题、路径或 npub),并缓存在进程中,供只读 Cypher Lab Notebook 前端的未认证落地页使用,前端位于 frontend/。
此外还有 wheel 提供的标准 DPYC 接口:cypher_check_balance、
cypher_check_price、cypher_purchase_credits、Secure Courier、npub proof、
Oracle delegation、账户对账单、基于约束的动态定价等。
仅限运营方(受限、不定价)——编写平面:
cypher_create_query/cypher_update_query/cypher_get_query/cypher_list_queries/cypher_delete_querycypher_publish_tool(key)/cypher_unpublish_tool(key)— 将查询发布为一等、带类型的命名工具(或将其下架)。请参阅下文的命名工具。
原始 Cypher 永远不会交付给用户——只提供命名的参数化模板。
在 Neo4j 自带的界面中编写——无需学习第二个编辑器
数据库分析师在 Neo4j Browser 中完善模板,而不是使用专门开发的工具。
cypher_get_query(key) 会返回模板以及 edit_url——这是一个指向托管版 Neo4j Browser(browser.neo4j.io)的深层链接,已预先定位到运营方的 AuraDB,并以编辑模式(cmd=edit)加载语句。
你可以使用自动补全、运行测试、可视化和 PROFILE 来完善模板,然后用 cypher_update_query 保存。模板只是通过 MCP 传递的字符串——无需文件、桌面应用或导出的包。链接包含 DBMS URI,但绝不包含密码;而且 get_query 仅限运营方使用,因此两者都不会传到用户手中。
命名工具——将查询发布为独立工具
cypher_publish_tool(key) 会将目录中的查询投影为名为 cypher_<key> 的一等 MCP 工具,其扁平化、带类型的参数来自查询架构——例如 cypher_which_service_handles(keyword)。Agent 随后可按名称使用带类型的参数调用它,而无需调用 execute_query_by_key(key, params)。在内部,每个命名工具都会通过同一个共享执行器运行(按键查找存储的 Cypher → 绑定参数 → 执行),因此只有一条代码路径,并且同样保证出错时退款。已发布的工具注册时不设价格——它会像任何新工具一样显示在 Pricing Studio 中;在那里为它设置价格(在设置之前,调用会返回“尚未定价(TBD)”)。cypher_unpublish_tool(key) 会停用该工具(查询本身仍会保留,仍可按键运行)。已发布的工具在重启后仍会保留(从目录重新生成);重新连接即可查看工具列表的变更。
合成机制是通用的 tollbooth-dpyc 基元(register_dynamic_tool)——命名 Cypher 查询只是其中一种实现;同一基元也可用于合成调用 REST、SQL 或存储的提示词的工具。
入驻(运营方)
- 向 Authority 提交采用请求(使用运营方的密钥签名,调用
cypher_request_adoption)。采用是唯一的接入方式:Authority 的所有者批准请求后,Authority 会自动配置一个隔离的 Neon 租户。cypher_adoption_status会报告进度。 - 通过 Secure Courier 提供运营方密钥(调用
cypher_request_credential_channel,服务为cypher-operator):neo4j_uri、neo4j_user、neo4j_password——图存储(例如 Neo4j AuraDB 实例)btcpay_host、btcpay_api_key、btcpay_store_id——Lightning
- 使用
cypher_create_query编写目录,随后用户即可按键执行查询。
开发
pip install -e ".[dev]"
pytest -v
python -m cypher_mcp.server # needs TOLLBOOTH_NOSTR_OPERATOR_NSEC
部署在 Prefect Horizon(FastMCP 运行时)上;请参阅 fastmcp.json。启动所需的唯一环境变量是 TOLLBOOTH_NOSTR_OPERATOR_NSEC——所有其他密钥都通过 Secure Courier 提供。
DPYC 生态系统
| 仓库 | 角色 |
|---|---|
| tollbooth-dpyc | Python SDK — 金库、身份验证、定价、支付、Nostr 身份 |
| dpyc-community | 治理注册表、成员资格、公告、威胁模型 |
| dpyc-oracle | 社区顾问 — 免费入门帮助和成员资格查询 |
| tollbooth-authority | 认证骨干 — Schnorr 签名的采购订单证书 |
| tollbooth-sample | 示例运营方 — 新 MCP 服务的标准模板 |
| tollbooth-pricing-studio | iOS 应用 — 可视化定价模型编辑器和运营方控制台 |
| schwab-mcp | Charles Schwab 经纪数据(运行示例) |
| thebrain-mcp | TheBrain 个人知识图谱(运行示例) |
| excalibur-mcp | X/Twitter 发帖(运行示例) |
| taxsort-mcp | 税务分类 + Cloudflare Pages 界面(运行示例) |
| goodearth-mcp | 按区域划分的农场气候分析(运行示例) |
| beesknees-mcp | 多人参与的竞速夺后游戏(运行示例) |
| roastify-mcp | Roastify 咖啡目录和包装艺术作品(运行示例) |
| ChartRemotely-mcp | 通过赞助者自己的 Agent 进行远程桌面制图(运行示例) |
| tollbooth-web | 供运营方前端使用的共享浏览器 SDK |
| tollbooth-oauth2-collector | OAuth2 回调处理程序 — 共享倡导者服务 |
| stablecoin.myshopify.com | DPYC 周边商品和奥地利经济学 |
先前技术与署名
本仓库所含的方法、算法和实现可能是 Lonnie VanZandt 的原创作品,首次发表于 2026 年 6 月 15 日。 本公开披露依据美国专利法(35 U.S.C. 102)确立了先前技术。
所有使用、复制或衍生创作均须遵守本仓库所附的 Apache License 2.0,并须根据 NOTICE 文件的要求,恰当注明原作者。
如何署名
如果您使用或基于此作品进行开发,请在文档或源代码中加入以下内容:
Based on original work by Lonnie VanZandt and Claude.ai
Originally published: June 15, 2026
Source: https://github.com/lonniev/cypher-mcp
Licensed under Apache License 2.0
欢迎访问这位技术专家为 Bitcoin 倡导者和咖啡爱好者开设的虚拟咖啡馆:stablecoin.myshopify.com。
专利声明
作者保留就此处描述的新颖方法和系统寻求专利保护的一切权利。公开披露本作品确立的优先权日期为 2026 年 6 月 15 日。根据《美国发明法案》,作者自首次公开披露之日起保留一年的宽限期,可在此期间提交专利申请。
致潜在申请人的说明: 本公开仓库及其完整的 Git 历史记录可作为先前技术的证据。在本仓库发布后提交、涵盖实质上相似方法的任何专利申请,都可能依据 35 U.S.C. 102(a) 被判无效。
延伸阅读
闪电收费站上的幻影收费亭 — 关于我们如何将 AI API 的货币化过程本身变现,然后退居幕后,全篇故事。
Software Factory 意图词汇表(DPYC Agent)
cypher-mcp 是 DPYC Software Factory 的图谱基础层:其 Agent(Porter =
Service Desk、Journeyman = Engineering)会在此读取和写入机构记忆图谱,但绝不会持有原始 Cypher 工具。它们调用一组固定的、由操作员编写并带参数的模板——写入模板和读取模板——这些模板以类型化的 cypher_<key> 工具形式发布。
- 写入模板用于记录记忆:
record_triage、note_rejection、route_rejection(防止乒乓式往返:将拒绝反馈给其来源)、record_scope、link_root_cause、link_pr、assert_rationale、bind_rationale_to_symbol、anchor_symbol(编辑后用于 grep 限定范围的锚点)、upsert_capability、assert_invariant、upsert_patent_element、register_service等。 - 读取模板是意图服务的正向映射——RAG 接口,只需一次查询即可确定“哪个服务处理 X/这项能力为何存在”,而不必 grep 十二个仓库:
which_service_handles、explain_capability、what_realizes_capability、capability_patents、context_pack(用于 grep 限定范围的旗舰工具包)、list_capabilities、list_invariants、list_patent_elements、routing_history、recent_activity、factory_resolution_stats及其来源信息读取工具。
assert_rationale 将 provenance:'llm-inferred-unverified' 硬编码为 Cypher 字面量,因此 Agent 密钥绝不可能声明权威来源信息。
先不限量,之后再设限。 初始化只会编写并发布这些工具;随后它们会以未定价状态出现在 Pricing Studio 中。为它们定价后,任何有资金的赞助者都能调用——这两个 Agent 和其他赞助者一样,只会购买 api_sats。需要限制只有这两个 Agent 可以调用时,可在 Pricing Studio 会话中,为每个工具添加 json_expression 允许列表,按 patron.npub 筛选(使用 Constraint Engine,而非定制 ACL):列出的 npub 可以调用,其他人默认拒绝;运行时可修改,无需部署。还可通过余额控制使用范围——给 Porter 少量资金,给 Journeyman 多一些;资金耗尽的 Agent 将停止写入图谱,但仍会在 GitHub 上进行分类处理。
初始化(由操作员执行,可重复运行且幂等)。 scripts/seed_factory_vocabulary.py 会编写并发布这些词汇。--dry-run 无需服务器或 nsec,还会打印精确的允许列表,供你在限制访问时复制到 Pricing Studio:
python scripts/seed_factory_vocabulary.py --dry-run \
--porter-npub npub1ymg... --journeyman-npub npub1m5q...
对线上 operator 执行应用(从 OPERATOR_NSEC 读取或通过隐藏提示输入的 operator nsec,会临时用于为每个请求签名(NIP-98),绝不会记录日志或写入磁盘)。添加 --gate(并提供两个 npub),还可通过编程方式应用按 npub 设置的允许列表,而无需在 Pricing Studio 中操作:
python scripts/seed_factory_vocabulary.py \
--url https://cypher-mcp.fastmcp.app/mcp --operator-npub npub1fuhq0... \
--porter-npub npub1ymg... --journeyman-npub npub1m5q...
这些词汇本身位于 scripts/factory_vocabulary.py(仅含数据,不执行 I/O),并由 tests/test_factory_vocabulary.py 覆盖。流水线接线(Agent 对这些工具签名并调用)、NIP-05 发布和资金供给均属于该基础层之后的工作。
商标
DPYC™、Tollbooth DPYC™ 和 Don't Pester Your Customer™ 是 Lonnie VanZandt 的商标。有关使用指南,请参阅 dpyc-community 仓库中的 TRADEMARKS.md。
许可证
Apache License 2.0 — 详情请参阅 LICENSE 和 NOTICE。
因为说到底,收费站从来就不是终点。它始终只是旅程的开始。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。