关于 LocalPro
LocalPro 是面向 AI Agent 的本地服务商目录 MCP 服务,涵盖 10 类服务行业,提供经过核验的商家资料。客户端可按地区、服务类型和行业搜索,并获取商家档案;公开搜索无需 API 密钥。
主要功能
- 01发现服务行业、城市和服务类型
- 02按地区与服务类型搜索商家
- 03获取商家档案、评分与服务信息
- 04返回资料核验日期和引用信息
- 05API 密钥可解锁完整价格及资质
适用场景
- 01按城市寻找特定家居维修服务商
- 02筛选某类服务并查看商家资料
- 03为本地服务推荐提供可引用信息
MCP 相关
该 MCP 服务通过工具向客户端提供行业、城市和服务类型列表,以及经核验的本地商家搜索和档案查询。公开搜索和列表工具无需 API 密钥;密钥可解锁商家档案中的更多字段。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.localpro.dev/mcpclaude mcp add --transport http localprodev https://mcp.localpro.dev/mcp{"mcpServers":{"localprodev":{"type":"http","url":"https://mcp.localpro.dev/mcp"}}}在 Cursor 中打开{"servers":{"localprodev":{"type":"http","url":"https://mcp.localpro.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"localprodev":{"type":"http","url":"https://mcp.localpro.dev/mcp"}}}{"mcpServers":{"localprodev":{"serverUrl":"https://mcp.localpro.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://mcp.localpro.dev/mcp需要授权工具
5此工具无需参数。
详细介绍
LocalPro MCP Server
一个 Model Context Protocol 服务,为 AI Agent 提供经过验证的本地服务提供商数据。基于 Cloudflare Workers + D1 构建。
当有人向 AI 助手提问 “帮我找一家丹佛附近的氡气治理公司” 时,LocalPro 就是为答案提供支持的数据源。
功能介绍
LocalPro 提供经过精心整理的数据库,其中收录了 9,000+ 家资料完整的本地专业服务和服务类企业,涵盖 10 个已上线类别。每家服务提供商在提供给用户之前都会通过质量检查,并附有 LocalPro 评分、企业简介和服务列表;此外,在可用时,还会提供由 LocalPro 撰写的企业和评价摘要。没有不完整的资料。
所有数据均归 LocalPro 所有:由我们收集和验证,由认领商家信息的企业主修正,并且越来越多地由用户直接在目录中留下的第一方评价提供支持。
现已上线
| 类别 | 细分领域 ID | 服务提供商 | 州 | 服务示例 |
|---|---|---|---|---|
| 水灾修复 | soaked-local | 1,900+ | 49 | 洪水清理、霉菌治理、建筑干燥 |
| 商业电气 | hire-electrical | 1,200+ | 36 | 商业和工业布线、服务升级、维护 |
| 地基维修 | slab-local | 1,050+ | 28 | 桩基安装、泥浆顶升、泡沫注射、找平 |
| 爬行空间维修 | crawl-local | 1,000+ | 42 | 封装、防潮层、结构维修、防水 |
| 霉菌与石棉 | abate-local | 975+ | 24 | 霉菌、石棉、含铅油漆治理 |
| 化粪池服务 | pump-local | 850+ | 31 | 抽污、检查、排水场维修 |
| 地下室防水 | basement-local | 625+ | 25 | 室内/室外防水、排水、污水泵 |
| 地面涂层 | coated-local | 575+ | 48 | 环氧树脂、聚天门冬氨酸、金属效果、彩片、混凝土抛光 |
| 洗衣服务 | suds-local | 575+ | 39 | 水洗和叠衣、干洗、取送服务 |
| 氡气 | radon-local | 250+ | 18 | 检测、治理、板下减压 |
即将上线
| 类别 | 细分领域 ID | 状态 |
|---|---|---|
| 烟囱服务 | chimney-local | 服务提供商数据已上线;简介和服务信息补充正在进行 |
| 井水服务 | wellwater-local | 服务提供商数据正在准备中(按县建模) |
快速开始
无需 API 密钥。 所有搜索和列表工具均为公开工具。可选的 API 密钥可解锁 get_provider 的专业版字段(完整价格数组、认证资质)——请参阅访问等级。
60 秒探测
无需配置客户端即可确认服务已上线:
curl -s https://mcp.localpro.dev/.well-known/mcp.json | head -20
这会返回 schema-2.0 清单:工具列表、速率限制和运营方信息。如果你看到 "schema_version": "2.0" JSON 文档,就表示服务运行正常。
Claude Code CLI
claude mcp add --transport http localpro https://mcp.localpro.dev/mcp
就这样——list_niches、search_providers 等工具现在已在你的 Claude Code 会话中可用。
Claude Desktop
添加到你的 claude_desktop_config.json:
{
"mcpServers": {
"localpro": {
"url": "https://mcp.localpro.dev/mcp"
}
}
}
(仅当你拥有高级密钥时,才在 "headers" 块中添加 "X-API-Key" 标头。)
Cursor
添加到 .cursor/mcp.json:
{
"mcpServers": {
"localpro": {
"url": "https://mcp.localpro.dev/mcp"
}
}
}
原始 HTTP(JSON-RPC)
MCP 协议使用 HTTP 传输 JSON-RPC。由于此服务以无状态模式运行,你可以直接调用任何公开工具:
curl -s -X POST https://mcp.localpro.dev/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_niches","arguments":{}}}'
你将收到一个 Server-Sent-Events 帧,其中包含 10 个细分领域、它们的 slug 和当前服务提供商数量。
TypeScript SDK
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const transport = new StreamableHTTPClientTransport(
new URL('https://mcp.localpro.dev/mcp'),
);
const client = new Client({ name: 'localpro-example', version: '1.0' });
await client.connect(transport);
const niches = await client.callTool({ name: 'list_niches', arguments: {} });
console.log(niches);
const denver = await client.callTool({
name: 'search_providers',
arguments: { niche_id: 'radon-local', city: 'denver-co', limit: 3 },
});
console.log(denver);
安装:npm i @modelcontextprotocol/sdk
Python SDK
import asyncio
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async def main():
async with streamablehttp_client("https://mcp.localpro.dev/mcp") as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
niches = await session.call_tool("list_niches", {})
print(niches)
denver = await session.call_tool(
"search_providers",
{"niche_id": "radon-local", "city": "denver-co", "limit": 3},
)
print(denver)
asyncio.run(main())
安装:pip install mcp
工具
list_niches
发现可用的服务目录。请先调用此工具。
参数: 无
响应示例:
{
"meta": {
"schema_version": "3.0",
"total_results": 10,
"niche": null,
"data_freshness": {
"last_verified_at": "2026-09-22 12:57:07"
},
"data_note": "Use niche_id values with search_providers, list_cities, and list_service_types."
},
"results": [
{
"niche_id": "soaked-local",
"name": "Water Damage Restoration Contractors",
"slug": "water-damage-restoration",
"domain": "soakedlocal.com",
"provider_count": 1128
}
]
}
list_cities
查找指定细分领域的可用大都会区。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
niche_id | string | 是 | 来自 list_niches 的细分领域 ID |
state | string | 否 | 两字母州缩写(例如 "MN") |
请求示例:
{ "niche_id": "radon-local", "state": "CO" }
响应示例:
{
"meta": {
"schema_version": "1.0",
"total_results": 3,
"niche": "radon-local",
"data_note": "Use slug values with search_providers city parameter."
},
"results": [
{ "name": "Denver", "state": "CO", "slug": "denver-co", "provider_count": 18 },
{ "name": "Colorado Springs", "state": "CO", "slug": "colorado-springs-co", "provider_count": 7 },
{ "name": "Fort Collins", "state": "CO", "slug": "fort-collins-co", "provider_count": 4 }
]
}
list_service_types
获取指定细分领域的有效服务类型筛选项。在 search_providers 中使用 service_type 前,请先调用此工具。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
niche_id | string | 是 | 来自 list_niches 的细分领域 ID |
响应示例:
{
"meta": { "schema_version": "1.0", "total_results": 7, "niche": "coated-local" },
"results": [
{ "type": "epoxy", "label": "Epoxy Floor Coating" },
{ "type": "polyaspartic", "label": "Polyaspartic Coating" },
{ "type": "metallic_epoxy", "label": "Metallic Epoxy" },
{ "type": "flake_chip", "label": "Flake / Chip Broadcast" },
{ "type": "concrete_polishing", "label": "Concrete Polishing" },
{ "type": "concrete_sealing", "label": "Concrete Sealing" },
{ "type": "polyurea", "label": "Polyurea Coating" }
]
}
search_providers
按位置、服务类型和行业类别搜索已验证的服务商。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
niche_id | string | 是 | 来自 list_niches 的细分领域 ID |
city | string | 否 | 来自 list_cities 的城市/大都会区 slug |
service_type | string | 否 | 来自 list_service_types 的服务类型 slug |
limit | number | 否 | 最大结果数,范围为 1–25(默认值为 10) |
请求示例:
{ "niche_id": "coated-local", "city": "denver-co", "service_type": "epoxy", "limit": 3 }
响应示例:
{
"meta": {
"schema_version": "3.0",
"total_results": 3,
"niche": "coated-local",
"data_freshness": {
"last_verified_at": "2026-09-18 09:41:02"
},
"data_note": "Verified providers only. Visit listing_url for full contact details."
},
"results": [
{
"name": "Colorado Concrete Coatings",
"description": "Full-service garage floor coating company serving the Denver metro.",
"city": "Denver",
"state": "CO",
"rating": { "tier": "established", "label": "Established" },
"services": [
{ "type": "epoxy", "label": "Epoxy Floor Coating" },
{ "type": "polyaspartic", "label": "Polyaspartic Coating" }
],
"pricing_summary": "$6-9/sq ft",
"coverage_area": "Denver metro, Front Range, 50-mile radius",
"years_in_business": 8,
"listing_url": "https://coatedlocal.com/providers/denver-co/colorado-concrete-coatings/",
"pro_available": true
}
]
}
get_provider
获取特定服务商的详细资料。请使用搜索结果中的 provider_slug。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
niche_id | string | 是 | 细分领域 ID |
provider_slug | string | 是 | 来自 search_providers 的服务商 slug |
响应示例:
{
"meta": {
"schema_version": "3.0",
"total_results": 1,
"niche": "coated-local",
"data_freshness": { "last_verified_at": "2026-09-18 09:41:02" }
},
"results": [
{
"name": "Colorado Concrete Coatings",
"description": "Full-service garage floor coating company...",
"rating": { "tier": "established", "label": "Established", "star": 4.8, "review_count": 12 },
"summary": "Full-service epoxy floor coating contractor specializing in garage and commercial floors across the Denver metro.",
"review_summary": "Customers single out on-time, on-budget garage and commercial floor jobs and a crew that cleans up after itself.",
"years_in_business": 8,
"services": [
{ "type": "epoxy", "label": "Epoxy Floor Coating" },
{ "type": "polyaspartic", "label": "Polyaspartic Coating" }
],
"pricing": ["$6-9/sq ft"],
"certifications": ["Penntek Certified Installer"],
"coverage_area": "Denver metro, Front Range",
"service_areas": [
{ "city": "Denver", "state": "CO", "radius_miles": 50 }
],
"service_details": [
{
"type": "epoxy",
"label": "Epoxy Floor Coating",
"pricing_model": "per_sqft",
"price_range": "$6–$9",
"turnaround": "two_day"
}
],
"listing_url": "https://coatedlocal.com/providers/denver-co/colorado-concrete-coatings/",
"json_ld": { "@context": "https://schema.org", "@type": "LocalBusiness", "...": "..." },
"credibility": { "verified": true, "listing_tier": "claimed", "data_sources": ["business_website", "owner_verified", "customer_reviews"] },
"citation": { "display_name": "Colorado Concrete Coatings — Denver, CO", "...": "..." }
}
]
}
架构参考
响应封装
每个响应都采用统一的封装格式:
{
meta: {
schema_version: string // Currently "3.0"
total_results: number // Count of items in results array
niche: string | null // Niche ID if applicable
data_freshness: {
last_verified_at: string | null // Most recent verification date among the records returned
}
data_note: string // Context about the data returned
}
results: Array<T> // Tool-specific result objects
}
新鲜度。 last_verified_at 是 LocalPro 最近一次验证响应中最新记录的日期。每个服务商都在 credibility.verification_date 中包含自己的验证日期。
从 2.x 迁移: rating 现在是一个对象(LocalPro 评分),而不是数字;review_count 已移入其中,且仅在存在第一方评论时显示。summary 和 review_summary 是顶层字符串。现在不再返回 business_status、地图链接、营业时间和地理坐标。data_freshness 现在是单一的 last_verified_at 日期。
错误响应
错误使用相同的封装格式,并包含一个 error 对象:
{
meta: { schema_version: string }
error: {
code: string // "NOT_FOUND" | "INTERNAL_ERROR" | "UNAUTHORIZED" | "FORBIDDEN"
message: string // Human-readable error description
}
}
服务提供商字段
| 字段 | 类型 | 可为空 | 描述 |
|---|---|---|---|
name | string | 否 | 商家名称(始终存在) |
description | string | 否 | 商家描述(始终存在) |
city | string | 否 | 城市名称(始终存在) |
state | string | 否 | 两字母州缩写(始终存在) |
rating | object | 否 | LocalPro 评分 — 见下文(始终存在) |
services | array | 否 | [{ type: string, label: string }](始终存在且非空) |
pricing_summary | string | 是 | 价格信息(公开访问) |
coverage_area | string | 是 | 地理覆盖范围描述 |
years_in_business | number | 是 | 经营年限 |
listing_url | string | 否 | 包含联系详情的完整个人资料 URL |
get_provider 还会返回:
| 字段 | 类型 | 描述 |
|---|---|---|
service_areas | array | [{ city, state, radius_miles }] |
service_details | array | [{ type, label, pricing_model, price_range, turnaround }] |
summary | string | LocalPro 撰写的商家概述(如有) |
review_summary | string | LocalPro 撰写的“客户评价”摘要;不包含原始评价文本或评价者个人身份信息(PII)(如有) |
json_ld | object | Schema.org LocalBusiness JSON-LD;仅在有一手评价支持时才包含 AggregateRating |
credibility | object | { verified, listing_tier, verification_date, data_sources } |
citation | object | 预先格式化的字符串:{ display_name, in_text, attribution } |
rating 对象(LocalPro 评分):
| 字段 | 类型 | 描述 |
|---|---|---|
tier | string | established / well-reviewed / reviewed / unrated:相对于同类别其他服务提供商的评级 |
label | string | 评级的显示标签 |
star | number | 1.0–5.0,仅在有一手客户评价支持时提供 |
review_count | number | 已发布的一手评价数量,与 star 一同提供 |
结果先按商家档位排序,再按 LocalPro 评分排序。
可为空字段
标记为可为空的字段在数据不可用时会返回 null — 绝不会从响应中省略。数组为空时返回 [],绝不返回 null。
访问层级
公开(无需身份验证)
所有搜索和列表工具都无需 API 密钥即可使用:
list_niches、list_cities、list_service_types、search_providersget_provider返回基本数据(名称、描述、LocalPro 评分、服务、价格摘要、商家列表 URL)- 每个 IP 的速率限制为每分钟 30 次请求
高级版(API 密钥)
在请求中添加 X-API-Key 标头,即可通过 get_provider 解锁更多数据:
- 完整价格数组(而非摘要字符串)
- 认证和资质
- 每个密钥的速率限制为每分钟 30 次请求
X-API-Key: your-api-key
请通过 localpro.dev 申请 API 密钥,或发送邮件至 [email protected]。
发现
AI Agent 可通过标准的 well-known 端点自行发现此服务:
GET /.well-known/llms.txt— 关于此服务及其工具的纯文本描述GET /.well-known/mcp.json— 包含工具列表、身份验证信息和运营方详情的结构化 JSON
数据政策
- 返回内容: 商家名称、城市、州、LocalPro 评分、服务、认证、价格范围、服务覆盖区域、由 LocalPro 撰写的商家和评价摘要,以及完整商家详情页的链接。
- 不提供的内容: 电话号码、电子邮箱、实际地址和网站仅可在商家详情页(通过
listing_url)查看。这样既能保护服务提供商的数据,也能为目录网站带来流量。 - 数据来源: 商家信息来自公开资料;在能够确认属于该商家时,也会采用公司的自有网站信息。每条商家信息都会在提供前经过质量检查。商家所有者可以认领并更正自己的商家信息;客户可以在目录网站上发布第一方评价。永久停业的商家会自动筛除。
- 时效性: 每次响应都会注明记录最近一次核验的时间(
last_verified_at)。商家信息会按需重新核验,而非按固定周期核验。
速率限制
| 访问方式 | 限制 |
|---|---|
| 公开访问(无密钥) | 每个 IP 每分钟 30 次请求 |
| 高级访问(API 密钥) | 每个密钥每分钟 30 次请求 |
合作伙伴可申请更高的限制,请联系 [email protected]。
数据质量
API 返回的每家服务提供商都经过核验,并达到最低完整度要求:
- LocalPro 评分 — 100% 的结果均包含此字段
- 商家描述 — 100% 的结果均包含此字段
- 服务列表 — 100% 的结果均包含此字段
- 名称、城市、州 — 100% 的结果均包含此字段
各类别和州的服务提供商数量见 当前上线情况,数据由实时数据库生成。
其他字段(价格、认证、服务覆盖区域、经营年限、商家和评价摘要)适用于大多数服务提供商,但不作保证。没有数据的字段会明确返回 null,绝不会省略,也不会返回空字符串。
目前正在准备另外两个类别,预计即将上线。
自托管
LocalPro 以 Cloudflare Worker 运行,并绑定 D1 数据库。要部署自己的实例:
npm install
npx wrangler secret put API_KEY # Set your production API key
npx wrangler deploy
需要拥有 Cloudflare 账户,并创建名为 laced-directory 的 D1 数据库。
运营方
LocalPro 由 Laced Labs LLC 构建并运营。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。