关于 Fabrica (Sepolia testnet)
Fabrica(Sepolia testnet)是面向 AI Agent 的测试网 MCP 服务,用于查询 Fabrica 的测试土地、借贷和持仓数据。其网络与主网端点隔离,可在不影响真实土地的情况下试用工具和准备签名操作。
主要功能
- 01按地址或 APN 查找美国地块
- 02筛选土地并查看详细属性
- 03查询估值、地税与信托文件
- 04分析借贷市场及钱包持仓
- 05获取地块边界和地图图像
- 06检索带引用的 Fabrica 文档
适用场景
- 01在 Sepolia 测试网试用土地搜索
- 02练习查看地块估值和税务信息
- 03测试土地抵押借款评估流程
- 04探索钱包持仓及借贷工具
MCP 相关
这是连接 Sepolia 测试网的 MCP 服务,向客户端提供 Fabrica 土地、借贷和投资组合查询工具,以及文档资源和提示词。测试网端点与主网分离,可准备由用户签名的操作。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp-testnet.fabrica.land/mcpclaude mcp add --transport http land-fabrica-mcp-testnet https://mcp-testnet.fabrica.land/mcp{"mcpServers":{"land-fabrica-mcp-testnet":{"type":"http","url":"https://mcp-testnet.fabrica.land/mcp"}}}在 Cursor 中打开{"servers":{"land-fabrica-mcp-testnet":{"type":"http","url":"https://mcp-testnet.fabrica.land/mcp"}}}在 VS Code 中打开{"mcpServers":{"land-fabrica-mcp-testnet":{"type":"http","url":"https://mcp-testnet.fabrica.land/mcp"}}}{"mcpServers":{"land-fabrica-mcp-testnet":{"serverUrl":"https://mcp-testnet.fabrica.land/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
11| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | 结果上限(默认 20,最多 100) |
| offset | integer | 否 | 分页偏移量 |
| region | string | 否 | 美国州代码(例如 'TX'、'CA'、'NV') |
| ownedBy | string | 否 | 按所有者钱包地址筛选 |
| hasLoans | boolean | 否 | 仅显示有有效贷款的房产 |
| maxAcres | number | 否 | 地块面积上限,以英亩计 |
| minAcres | number | 否 | 地块面积下限,以英亩计 |
| minScore | integer | 否 | Property checks 数值下限:Property checks 的 5 位数字编码,整数。默认值为 72032(市场阈值),但设置 ownedBy 时除外(此时会列出该钱包中的所有房产)。任何下限筛选还要求产权契据已验证。最大值:75342。 |
| hasListings | boolean | 否 | 仅显示有有效出售挂牌的房产 |
详细介绍
Fabrica MCP 服务
让 AI Agent 访问 Fabrica 上的美国土地。搜索房产、调查地块、查看可借款额度,并探索 Fabrica 协议上美国各地土地的投资组合。
这是什么?
在 Fabrica 上,房产由信托持有;以太坊上的 ERC-1155 代币发行后,该代币便控制着持有产权的信托。此 MCP 服务无需 API 密钥,即可让任何 AI Agent 查询完整的房产目录、借贷市场和投资组合数据。
基于 Model Context Protocol(MCP)构建。
快速开始
托管版(推荐):无需安装
将任何 MCP 客户端指向托管服务:
| 网络 | URL |
|---|---|
| Ethereum Mainnet(真实地块) | https://mcp.fabrica.land/mcp |
| Sepolia Testnet(测试房产) | https://mcp-testnet.fabrica.land/mcp |
Claude(claude.ai 和桌面版): 设置 → 连接器 → 添加自定义连接器 → 粘贴 URL。
Claude Code:
claude mcp add --transport http fabrica https://mcp.fabrica.land/mcp
claude mcp add --transport http fabrica-testnet https://mcp-testnet.fabrica.land/mcp
Cursor: 单击即可安装主网服务:
也可以手动添加(.cursor/mcp.json):
{
"mcpServers": {
"fabrica": { "url": "https://mcp.fabrica.land/mcp" }
}
}
任何支持远程 MCP 服务(Streamable HTTP)的其他客户端也可以用相同方式使用。如果想在主网前先在测试网上试用,可以将两个 URL 添加为两个独立的服务:每个 URL 对应的网络是固定的,因此 Agent 无法通过测试网服务访问主网。
无需注册表即可发现: 每个主机都提供 /.well-known/mcp.json(URL、传输方式、身份验证、文档、另一个网络的服务)和 /.well-known/mcp/server-card.json(包含相同信息,以及每个工具的标题和注释、提示词和资源模板),此外还提供 /.well-known/ai-catalog.json。域级发现会优先读取此 AI Catalog,其中指向两个服务的卡片。卡片从正在运行的服务读取,因此始终与该主机注册的内容一致。
本地运行(stdio)
上方的托管 URL 是使用此服务的受支持方式;该服务未发布到 npm。如要在自己的机器上从源码运行(Node 20 或更高版本):
git clone https://github.com/fabrica-land/fabrica-mcp.git
cd fabrica-mcp
npm install
npm run build
claude mcp add fabrica -- node /absolute/path/to/fabrica-mcp/dist/index.js
在服务的环境中设置 FABRICA_NETWORK=sepolia,即可使用测试网。
可用工具
| 工具 | 描述 |
|---|---|
search_land | 按州、县、面积、Property checks、挂牌状态、挂牌价格和每英亩价格,或与某个点的距离搜索房产;可按价格、每英亩价格、英亩数、估值、Property checks、添加日期或距离排序。每行包含房产生命周期阶段和每英亩价格;也可按州或县统计数量,并提供指向 fabrica.land 地点页面的链接 |
get_land_property | 房产完整详情:法律信息、估值、所有权、贷款、媒体、生命周期阶段、评估费用、重复地块标记 |
get_fabrica_lending_market | 借贷概览:贷款数量、DeFi 借贷池统计数据、平均 APR、事件 |
get_fabrica_loan_book | 借贷历史分布:贷款价值比分档、按州和英亩数统计的风险敞口、APR 和期限分布、已偿还和已清算数量、按月发放的贷款数量、最大贷款 |
get_land_portfolio | 钱包持有资产、信用历史、贷款头寸 |
get_fabrica_stats | 协议整体指标:房产数量、估值、贷款总额和数量、DeFi 借贷池 TVL |
get_land_boundary | 用于制图和空间分析的 GeoJSON 边界数据 |
get_land_tax_status | Property checks 中的房产税状态(当前、逾期、未知)、判断依据、检查日期,以及是否会限制借款 |
get_land_trust_documents | 法律记录:信托、信托协议(名称、版本、链接,可按需提供文本)、法律描述、地块 ID、契据引用、已上传的文件 |
estimate_land_borrowing | 房产的借款选项:DeFi 借贷池流动性、期限、当前贷款、限制借款金额的因素(池流动性、LTV、税务状态、预言机)、额度为零时的原因,以及如何提高额度(toRaise:每个可调整因素、其可带来的额度、需要采取的步骤) |
get_loan_against_land | 房产的一笔贷款:状态、提供方、本金、APR、到期日、完整还款信息,以及贷款仍有效时的今日结清金额;可按房产、loanId 或两者查询 |
get_land_valuation | API 保存的房产所有估值及其来源、日期和置信度:估算值、AVM、Prycd、县评估员估值、签署估值、池预言机状态 |
get_land_activity | 房产或钱包的活动动态,或整个网络的近期活动:转让、贷款、销售、新增房产 |
get_land_order_book | 房产的挂牌和报价:价格、卖方和买方、到期时间、贷款是否会阻止每项挂牌、房产是否仍在添加中 |
explain_property_checks | 将 Property checks 的数字编码(5 位,原称置信度评分)解码为验证组 |
get_land_map_image | 房产地块边界的静态地图图像(内嵌显示,深色/浅色主题) |
get_land_portfolio_map_image | 显示钱包拥有的所有房产的地图图像(内嵌显示,深色/浅色主题) |
ask_fabrica | 从 Fabrica 文档、帮助中心和美国信托协议中检索可回答 Fabrica 运作方式相关问题的引文段落 |
find_us_parcel | 将任意美国地址或地块编号(APN)解析为地块:查询其是否在 Fabrica 上,并提供添加链接;queries 接受最多包含 10 项的列表并返回表格。不会提供地块数据中的所有者姓名;每位客户端每分钟可查询 30 次,列表中的每项查询均计为一次 |
check_county_coverage | 查询美国某县(或州)的房产是否可以在线添加,以及需要所有者提供哪些信息。依据 Fabrica 添加房产规则表,该表手动更新并标注日期(npm run coverage:build) |
contact_fabrica_support | 向 Fabrica 支持团队转交问题:提供帮助中心版块、支持邮箱,以及已预填摘要和房产链接的 mailto 链接。此工具本身不会发送任何内容 |
签署请求(先使用测试网主机)
在 mcp-testnet.fabrica.land 上(以及仅当 FABRICA_SIGN_REQUESTS=enabled 时的主网上),有七个工具会准备操作:市场的 make_land_offer、list_land_for_sale、accept_land_offer、buy_land 和 cancel_land_order,以及 DeFi 借贷池的 borrow_against_land(检查钱包是否持有该代币、没有未结清的贷款,且金额不超过借贷池的最高限额)和 repay_loan_against_land(检查贷款是否有效、钱包是否为借款人,并获取今日的还款金额)。每个工具都会检查实时数据(该 Property 是否有效、钱包是否持有该 Property、挂牌或报价是否开放且可购买,以及在需要时是否属于钱包本人),然后返回一个 signRequest:其中包含摘要、警告、指向 fabrica.land 上该 Property 页面且已预填对话框的签署链接,以及 15 分钟后的过期时间。用户打开链接并使用自己的钱包签署。服务器不持有任何密钥,不进行签署,也不提交任何内容;在 Connect Fabrica 发布之前,payload(类型化数据,或针对对话中钱包的未签署交易)会保持为 null。get_sign_request 会告知请求是否已签署(并检查订单簿),而 get_transaction_status 会根据哈希跟踪交易。
待处理请求保存在服务器自己的存储中(Vercel KV / Upstash Redis:KV_REST_API_URL 和 KV_REST_API_TOKEN,以及用于记录 HMAC 的 SIGN_REQUEST_SECRET)。签署链接为 {web}/property/{network}/{tokenId}?action=…&request={id}。签署页面通过 GET /sign-requests/{id} 读取请求(过期后返回 410),并通过 POST /sign-requests/{id}/result 使用 { orderHash } 或 { transactionHash } 报告结果;服务器会先对照 API 或区块链进行验证,然后再记录结果。未配置存储时,工具会提示尚未配置;本地运行(stdio)时则使用进程内映射。
知识层
ask_fabrica 根据 Fabrica 自有文本回答有关 Fabrica 的问题(包括信任、费用、Property 审核、借贷、税费、添加和移除 Property 以及法律框架),并返回相关段落及其 URL,让 Agent 引用页面,而不是凭记忆转述。它使用三个来源:docs.fabrica.land、帮助中心 和 美国信托协议。
索引位于 src/knowledge/generated/index.json 中,并已提交到代码库,因此部署和测试时不会在运行时获取来源。检索使用基于段落文本的 BM25 算法,并提高标题的权重,同时为 Fabrica 的词汇添加了一个小型同义词列表;整个过程不调用模型,也不依赖外部服务。来源更新后,可通过以下命令重建:
npm run knowledge:build -- --docs-dir ../docs # docs from a local checkout of fabrica-land/docs
GITHUB_TOKEN=... npm run knowledge:build # or read the docs repo through the GitHub API
npm run knowledge:check # exit 1 when a source moved past its pin
来源版本锁定信息(docs 提交、帮助中心站点地图指纹、信托协议提交)记录在 knowledge/sources.json 中。构建大约需要 30 秒,索引大小不到 1 MB。
定时工作流(.github/workflows/refresh-knowledge.yml,每天运行一次,也可按需运行)会重建索引、运行测试,并创建标题为 "Knowledge index: scripts/knowledge-diff.mjs)。合并后会部署两个服务。该工作流需要一个仓库机密 KNOWLEDGE_TOKEN,这是一个具有读取私有 fabrica-land/docs 仓库内容权限的细粒度 GitHub 令牌;如果来源获取失败,工作流也会失败,因此绝不会提交不完整的索引。
资源
这些文档也注册为 MCP 资源,因此用户无需让 Agent 搜索,就可以通过客户端的资源选择器(Claude 的“从连接器添加”、Cursor 的 @)将文档附加到对话中。所有资源均为 text/markdown,每次读取都会以来源 URL 和内容更新日期开头。
| URI | 内容 |
|---|---|
fabrica://docs/<slug> | docs.fabrica.land 上的所有页面(最有用的十篇列在最前面:义务、费用、添加和移除房产、Property checks、借贷池、信托、监管框架、术语表、AI Agent) |
fabrica://help/<id> | 按文章 ID 和 slug 列出的所有帮助中心文章 |
fabrica://legal/us-trust-agreement | 美国信托协议文本 |
fabrica://property/{tokenId}/trust-agreement | 附加到某个代币的运营协议,内容由 API 提供(不同版本取决于代币的发行日期) |
fabrica://network | 此部署的网络、合约地址和法律声明 |
fabrica://docs/{slug} 和 fabrica://help/{id} 也是支持补全的资源模板。
提示词和技能文件
该服务提供四个 MCP 提示词:due_diligence(针对一处房产,最后说明用户需要自行核实的事项)、work_parcel_list(通过 find_us_parcel 查询地址或地块编号列表)、wallet_review(持仓、贷款和到期日)以及 how_to_add_land(向 Fabrica 添加一个地块)。相同的循环流程、工具列表和法律红线也列在 Agent Skills 文件 skills/fabrica/SKILL.md 中;对于未连接到该服务的 Agent,该文件托管于 https://mcp.fabrica.land/skill.md。
对话示例
“帮我找出德克萨斯州所有代币化房产”
“Fabrica 借贷市场当前的平均 APR 是多少?借贷池有多少流动性?”
“对房产代币 12743610130101631987 做一份完整的尽职调查报告”
“显示钱包 0x23bc...fce4 的投资组合。他们拥有哪些房产?”
“提供 Fabrica 的全网统计数据:有多少处房产、分布在哪些州,以及贷款总额是多少?”
“以房产代币 12743610130101631987 作抵押,最多能借多少?”
“显示钱包 0x23bc...fce4 的所有近期活动”
“房产 3484741603659410548 的挂牌价是多少?有哪些待处理报价?”
“解释 Property checks 编号 73242。每个数字代表什么?”
“显示房产代币 12743610130101631987 的地图”
“显示此钱包投资组合中所有房产的地图”
房产卡片(MCP App)
在支持 MCP Apps 的客户端(例如网页版和桌面版 Claude)中,get_land_property 会在对话中内嵌显示房产卡片:
- 图片库中首先显示地块地图,之后显示所有者的照片(如有)
- 名称、位置和面积
- Property checks、估值、挂牌价和借款额度
- 购买(已挂牌时)、报价、联系所有者和在 Fabrica 上查看按钮
每个按钮都会在 Fabrica 上打开该房产页面,用户可在那里完成操作并签名;服务本身绝不会准备或提交交易。不支持 MCP Apps 的客户端会收到相同的 JSON 数据。
Agent 可以通过 display: "fullscreen" 请求全屏显示卡片;宿主可以拒绝。
Sepolia 上默认启用卡片;主网上默认关闭,除非设置 FABRICA_MCP_APPS=enabled。照片仅限于卡片沙盒允许的来源(参见 src/tools/media.ts 中的 WIDGET_IMAGE_ORIGINS)。
网络选择
托管服务按 URL 区分(见快速入门)。本地服务默认连接到 Ethereum Mainnet,其中的地块代表美国的真实土地,并会产生真实的法律后果。若要先使用测试地块进行试验,请设置 FABRICA_NETWORK=sepolia:
Claude Code(Sepolia):
claude mcp add fabrica -e FABRICA_NETWORK=sepolia -- node /absolute/path/to/fabrica-mcp/dist/index.js
Claude Desktop(Sepolia):
{
"mcpServers": {
"fabrica": {
"command": "node",
"args": ["/absolute/path/to/fabrica-mcp/dist/index.js"],
"env": { "FABRICA_NETWORK": "sepolia" }
}
}
}
**主网须知:**在主网上,服务说明会将法律声明作为事实陈述:这些地块是美国的真实土地,每块地都由信托持有;拥有代币意味着拥有持有该地块的信托的受益权益;受托人由代币持有者指定,默认情况下由持有者担任;获取、转让、挂牌或以代币作为抵押借款,都会产生信托协议中所述的法律、税务和责任后果。
**Sepolia:**仅限测试地块,不会产生现实影响。
配置
所有配置项均为可选;已内置合理的默认值:
| 变量 | 默认值 | 说明 |
|---|---|---|
FABRICA_NETWORK | ethereum | 运行所用的网络(ethereum 或 sepolia) |
FABRICA_API_URL | https://api.fabrica.land/graphql | Fabrica GraphQL API |
FABRICA_METASTREET_SUBGRAPH_URL | 按网络自动选择 | 借贷池合约的子图(该变量保留了原始名称) |
FABRICA_MEDIA_URL | https://media.fabrica.land | Fabrica 地图图片媒体服务 |
FABRICA_MCP_APPS | Sepolia 上启用,主网上禁用 | enabled 或 disabled:在 get_land_property 上使用的地块卡片 MCP App |
回归测试列表
npm run regression(主网)或 npm run regression -- sepolia 会使用 scripts/regression/cases.json 中的案例列表,调用托管服务上的每个工具:正常路径、边缘情况以及未命中时的措辞。每个案例占一行,失败时退出代码为 1。每次发布后以及提交到目录前都应运行。
托管
托管服务通过此仓库在 Vercel 上运行:每个网络对应一个 Vercel 项目,二者均使用 npm run build:vercel 构建(见 vercel.json),生成位于 /mcp 的无状态 Streamable HTTP 函数、位于 /sign-requests 的签名请求端点、位于 /.well-known/ 的发现文档,以及位于 / 的着陆页。在每个项目的环境中设置 FABRICA_NETWORK(ethereum 或 sepolia)。同一个处理程序(src/http.ts)也可运行在任何 Node HTTP 服务器之后。
MCP Registry
两个托管服务都已列入官方 MCP Registry,名称分别为 land.fabrica/mcp 和 land.fabrica/mcp-testnet(远程服务,无软件包)。PulseMCP、Glama、GitHub MCP 注册表和 VS Code 均从中读取信息。条目位于 server.json 和 server.testnet.json 中。
发布新版本后重新发布:更新 package.json、src/server.ts 和两个服务文件中的 version(测试会确保它们一致),然后运行 npm run registry:publish(-- --dry-run 会打印条目)。写入任何内容之前,脚本会先对照注册表检查两个条目:若已有相同内容的版本,则跳过,因此部分发布后重新运行即可完成剩余工作;若已有不同内容,则停止运行。命名空间由 fabrica.land 上的 v=MCPv1 TXT 记录证明;脚本会从 MCP_REGISTRY_PRIVATE_KEY 或 ~/.config/mcp-registry/fabrica-land-ed25519.pem 读取匹配的 Ed25519 私钥。
链接
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。