LocalPro について
LocalPro は、AI エージェント向けに 10 分野の認証済み地域サービス事業者を提供する MCP サーバーです。地域、サービス種別、業種で検索して事業者プロフィールを取得でき、公開検索に 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 サーバー
AI エージェントに検証済みの地域サービスプロバイダーのデータを提供する、Model Context Protocol サーバーです。Cloudflare Workers + D1 上に構築されています。
誰かが AI アシスタントに 「デンバー近郊でラドン対策業者を探して」 と尋ねたとき、回答を支えるデータソースが LocalPro です。
提供する機能
LocalPro は、10 の稼働中カテゴリにわたる9,000 件以上の詳細なプロフィールを備えた地域の専門業者・サービス事業者のデータベースを提供します。各プロバイダーは提供前に品質チェックを通過し、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":{}}}'
10 個のニッチとそのスラッグ、現在のプロバイダー数を含む Server-Sent Events フレームが返されます。
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 | いいえ | 2 文字の州略称(例:"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 の都市/都市圏スラッグ |
service_type | string | いいえ | list_service_types のサービス種別スラッグ |
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 のプロバイダースラッグ |
レスポンス例:
{
"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 Rating)になりました。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
}
}
プロバイダーのフィールド
| フィールド | 型 | null 許容 | 説明 |
|---|---|---|---|
name | string | いいえ | 事業者名(常に存在します) |
description | string | いいえ | 事業者の説明(常に存在します) |
city | string | いいえ | 市区町村名(常に存在します) |
state | string | いいえ | 2 文字の州略称(常に存在します) |
rating | object | いいえ | LocalPro Rating — 詳細は以下をご覧ください(常に存在します) |
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 が作成した「お客様の声」の概要。レビューの生テキストやレビュアーの個人識別情報は含まれません(利用可能な場合) |
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 Rating):
| フィールド | 型 | 説明 |
|---|---|---|
tier | string | established / well-reviewed / reviewed / unrated:同じカテゴリ内の他のプロバイダーと比較した評価 |
label | string | 評価段階の表示ラベル |
star | number | 1.0~5.0。ファーストパーティの顧客レビューに基づく場合にのみ表示されます |
review_count | number | 公開されているファーストパーティのレビュー数。star とともに表示されます |
検索結果は、掲載ランク、次に LocalPro Rating の順で並べ替えられます。
null 許容フィールド
null 許容としてマークされたフィールドは、データが利用できない場合に null を返します。レスポンスから省略されることはありません。配列が空の場合は、null ではなく [] を返します。
アクセス階層
一般公開(認証不要)
すべての検索・一覧表示ツールは API キーなしで利用できます:
list_niches、list_cities、list_service_types、search_providersget_providerは基本データ(名前、説明、LocalPro Rating、サービス、料金概要、掲載 URL)を返します- IP ごとに 1 分あたり 30 リクエストに制限されます
プレミアム(API キー)
X-API-Key ヘッダーを含めると、get_provider で追加データを利用できます:
- 料金の完全な配列(概要文字列の代わり)
- 認定および資格
- キーごとに 1 分あたり 30 リクエストに制限されます
X-API-Key: your-api-key
API キーは localpro.dev からリクエストするか、[email protected] までメールでお問い合わせください。
ディスカバリー
AI エージェントは、標準の well-known エンドポイントを通じてこのサーバーを自動検出できます:
GET /.well-known/llms.txt— サーバーとそのツールのプレーンテキストの説明GET /.well-known/mcp.json— ツール一覧、認証情報、運営者の詳細を含む構造化 JSON
データポリシー
- 返却される内容: 事業者名、市、州、LocalPro Rating、サービス、認定資格、料金の目安、対応エリア、LocalPro が作成した事業者とレビューの概要、および掲載ページ全文へのリンク。
- 非公開の内容: 電話番号、メールアドレス、所在地、ウェブサイトは、掲載ページ(
listing_url経由)でのみ確認できます。これは事業者のデータを保護しながら、ディレクトリへのトラフィックを促すためです。 - 情報源: 掲載情報は公開されている事業者情報と、事業者自身のものと確認できる場合はその会社のウェブサイトをもとに作成されます。各掲載情報は、提供前に品質チェックを通過します。事業者は掲載情報のオーナー権限を取得して修正でき、顧客はディレクトリにファーストパーティレビューを投稿できます。営業を恒久的に終了した事業者は自動的に除外されます。
- 鮮度: 各レスポンスには、掲載情報が最後に確認された日時(
last_verified_at)が示されます。掲載情報は固定の周期ではなく、必要に応じて再確認されます。
レート制限
| アクセス | 上限 |
|---|---|
| パブリック(キーなし) | IP あたり毎分 30 リクエスト |
| プレミアム(API キー) | キーあたり毎分 30 リクエスト |
パートナー向けには、より高い上限もご利用いただけます。[email protected] までお問い合わせください。
データ品質
API が返す事業者はすべて検証済みで、最低限の情報充足度基準を満たしています。
- LocalPro Rating — 結果の 100% に含まれます
- 事業者の説明 — 結果の 100% に含まれます
- サービス一覧 — 結果の 100% に含まれます
- 名前、市、州 — 結果の 100% に含まれます
カテゴリー別および州別の事業者数は、ライブデータベースから生成される 現在の状況 に記載されています。
追加フィールド(料金、認定資格、対応エリア、事業年数、事業者とレビューの概要)はほとんどの事業者で利用できますが、保証されていません。データがないフィールドは明示的に null を返します。省略されたり、空文字列になったりすることはありません。
追加の 2 カテゴリーを公開に向けて準備中です。
セルフホスティング
LocalPro は D1 データベースバインディングを使用する Cloudflare Worker として稼働します。独自のインスタンスをデプロイするには:
npm install
npx wrangler secret put API_KEY # Set your production API key
npx wrangler deploy
laced-directory という名前の D1 データベースを含む Cloudflare アカウントが必要です。
運営者
LocalPro は Laced Labs LLC が構築・運営しています。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。