mcpField
L
LocalPro

LocalPro

远程服务
github.com/LocalProDev商业与营销15 周前更新
代码仓库

关于 LocalPro

LocalPro 是面向 AI Agent 的本地服务商目录 MCP 服务,涵盖 10 类服务行业,提供经过核验的商家资料。客户端可按地区、服务类型和行业搜索,并获取商家档案;公开搜索无需 API 密钥。

主要功能

  1. 01发现服务行业、城市和服务类型
  2. 02按地区与服务类型搜索商家
  3. 03获取商家档案、评分与服务信息
  4. 04返回资料核验日期和引用信息
  5. 05API 密钥可解锁完整价格及资质

适用场景

  1. 01按城市寻找特定家居维修服务商
  2. 02筛选某类服务并查看商家资料
  3. 03为本地服务推荐提供可引用信息

MCP 相关

该 MCP 服务通过工具向客户端提供行业、城市和服务类型列表,以及经核验的本地商家搜索和档案查询。公开搜索和列表工具无需 API 密钥;密钥可解锁商家档案中的更多字段。

配置

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

服务地址https://mcp.localpro.dev/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 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://mcp.localpro.dev/mcp需要授权

工具

5

此工具无需参数。

详细介绍

LocalPro MCP Server

LocalPro MCP server

一个 Model Context Protocol 服务,为 AI Agent 提供经过验证的本地服务提供商数据。基于 Cloudflare Workers + D1 构建。

当有人向 AI 助手提问 “帮我找一家丹佛附近的氡气治理公司” 时,LocalPro 就是为答案提供支持的数据源。

功能介绍

LocalPro 提供经过精心整理的数据库,其中收录了 9,000+ 家资料完整的本地专业服务和服务类企业,涵盖 10 个已上线类别。每家服务提供商在提供给用户之前都会通过质量检查,并附有 LocalPro 评分、企业简介和服务列表;此外,在可用时,还会提供由 LocalPro 撰写的企业和评价摘要。没有不完整的资料。

所有数据均归 LocalPro 所有:由我们收集和验证,由认领商家信息的企业主修正,并且越来越多地由用户直接在目录中留下的第一方评价提供支持。

现已上线
类别细分领域 ID服务提供商州服务示例
水灾修复soaked-local1,900+49洪水清理、霉菌治理、建筑干燥
商业电气hire-electrical1,200+36商业和工业布线、服务升级、维护
地基维修slab-local1,050+28桩基安装、泥浆顶升、泡沫注射、找平
爬行空间维修crawl-local1,000+42封装、防潮层、结构维修、防水
霉菌与石棉abate-local975+24霉菌、石棉、含铅油漆治理
化粪池服务pump-local850+31抽污、检查、排水场维修
地下室防水basement-local625+25室内/室外防水、排水、污水泵
地面涂层coated-local575+48环氧树脂、聚天门冬氨酸、金属效果、彩片、混凝土抛光
洗衣服务suds-local575+39水洗和叠衣、干洗、取送服务
氡气radon-local250+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_idstring是来自 list_niches 的细分领域 ID
statestring否两字母州缩写(例如 "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_idstring是来自 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_idstring是来自 list_niches 的细分领域 ID
citystring否来自 list_cities 的城市/大都会区 slug
service_typestring否来自 list_service_types 的服务类型 slug
limitnumber否最大结果数,范围为 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_idstring是细分领域 ID
provider_slugstring是来自 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
  }
}
服务提供商字段
字段类型可为空描述
namestring否商家名称(始终存在)
descriptionstring否商家描述(始终存在)
citystring否城市名称(始终存在)
statestring否两字母州缩写(始终存在)
ratingobject否LocalPro 评分 — 见下文(始终存在)
servicesarray否[{ type: string, label: string }](始终存在且非空)
pricing_summarystring是价格信息(公开访问)
coverage_areastring是地理覆盖范围描述
years_in_businessnumber是经营年限
listing_urlstring否包含联系详情的完整个人资料 URL

get_provider 还会返回:

字段类型描述
service_areasarray[{ city, state, radius_miles }]
service_detailsarray[{ type, label, pricing_model, price_range, turnaround }]
summarystringLocalPro 撰写的商家概述(如有)
review_summarystringLocalPro 撰写的“客户评价”摘要;不包含原始评价文本或评价者个人身份信息(PII)(如有)
json_ldobjectSchema.org LocalBusiness JSON-LD;仅在有一手评价支持时才包含 AggregateRating
credibilityobject{ verified, listing_tier, verification_date, data_sources }
citationobject预先格式化的字符串:{ display_name, in_text, attribution }

rating 对象(LocalPro 评分):

字段类型描述
tierstringestablished / well-reviewed / reviewed / unrated:相对于同类别其他服务提供商的评级
labelstring评级的显示标签
starnumber1.0–5.0,仅在有一手客户评价支持时提供
review_countnumber已发布的一手评价数量,与 star 一同提供

结果先按商家档位排序,再按 LocalPro 评分排序。

可为空字段

标记为可为空的字段在数据不可用时会返回 null — 绝不会从响应中省略。数组为空时返回 [],绝不返回 null。

访问层级

公开(无需身份验证)

所有搜索和列表工具都无需 API 密钥即可使用:

  • list_niches、list_cities、list_service_types、search_providers
  • get_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

评论

支持 Markdown

第一次接触 MCP?

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

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