Clearspar Part 135 MCP
An MCP server that turns Claude into a US Part 135 market analyst over live FAA operator data, computing concentration ratios, HHI, fleet distributions, and rankings.
README
Clearspar Part 135 MCP
An MCP server that turns Claude into a US Part 135 market analyst over my live Clearspar FAA operator dataset — 1,890 active Part 135 charter certificate holders scraped from the official FAA xlsx (fleet size derived from tail counts, state-mapped).
It wraps my real, key-gated endpoint GET /api/prospects on clearspar.binnacleai.com. The tools compute — concentration ratios, HHI, fleet distributions, rankings — they don't just dump rows. Ask "How concentrated is Alaska's Part 135 charter market?" and Claude pulls all 303 Alaska operators live and answers with real math.
This is a thin analyst layer over my own production data — not a public FAA API. It's read-only and key-gated.
What it is (honest scope)
The dataset reliably populates three dimensions: operator name, state (2-letter USPS), and fleetSize (FAA tail count), plus a crmStatus pipeline field. Every tool here is built on those. Sparse/empty fields (email, phone, website, style, certificate dates, aircraft type, lat/lng) are deliberately not exposed as tools — see "Not built" below — so the server never fabricates a metric it can't back with data.
Tools
| Tool | What it computes |
|---|---|
market_summary(state, topN?) |
Operator count, total tails, avg & median fleet, largest operator, top-5 tail share, HHI concentration, top operators. |
fleet_ranking({state?, limit?}) |
Operators ranked by fleet size. State-scoped or the full ~1,890 universe. |
compare_operators(names[]) |
Side-by-side of 2+ operators (state, fleet, certNo, CRM status); who's largest, shared state. |
competitive_landscape(state) |
Fleet-size distribution buckets, top-1/3/5 concentration, HHI with plain-English read, market leaders. |
crm_pipeline_summary({state?}) |
Live counts across CRM stages (NEW/CONTACTED/REPLIED/DEMO/CLOSED/DEAD). |
Not built (data doesn't support it)
- Proximity / radius / "operators near X" — there is no lat/lng, base-airport, or ICAO field. Geography is state-level only.
- Operator-type segmentation (bush vs scheduled vs tour) — the
stylefield exists but isNULLin 100% of records. - Contact / email / phone outreach tools — email, phone, and website are populated on ~0.5% of records (known enrichment gap).
- Certificate-age / aircraft-make-model tools — no cert-issue-date or aircraft-type field exists; only a derived
fleetSizeinteger.
Install
cd clearspar-part135-mcp
npm install
npm run build
Configure
Copy .env.example and fill in the key:
cp .env.example .env
CLEARSPAR_BASE_URL=https://clearspar.binnacleai.com
CLEARSPAR_API_KEY=<the DIGEST_API_KEY value>
The endpoint is key-gated (returns 401 without a valid key — that gate is verified). The key is the DIGEST_API_KEY env var on the takeoff-app Docker container (host 144.202.116.229):
# retrieve without printing it into history/logs
docker exec takeoff-app printenv DIGEST_API_KEY
CLEARSPAR_API_KEY is required — the server refuses to call the API without it.
Claude Desktop config
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"clearspar-part135": {
"command": "node",
"args": ["/Users/johnthomasair/code/clearspar-part135-mcp/build/index.js"],
"env": {
"CLEARSPAR_BASE_URL": "https://clearspar.binnacleai.com",
"CLEARSPAR_API_KEY": "<the DIGEST_API_KEY value>"
}
}
}
}
Restart Claude Desktop. The five tools appear under the plug icon.
Demo prompts
- "How concentrated is Alaska's Part 135 charter market?"
- "Give me a market summary for Hawaii's Part 135 operators."
- "Rank the top 15 Part 135 operators nationwide by fleet size."
- "Compare Grant Aviation and Bering Air."
- "What's the competitive landscape in Texas — is it fragmented or dominated by a few?"
- "Where does my CRM pipeline stand for Alaska?"
How it talks to the API
GET /api/prospects?state=&crmStatus=&limit=&offset=with headerX-API-Key.- Response:
{ "total": <count of matching ACTIVE rows>, "rows": [ <Prospect> ] }. The server always filtersstatus: 'ACTIVE'. limitis hard-capped at 500 server-side. Any tool needing full coverage paginates byoffsetuntil it has alltotalrows, and caches the ~1,890-row universe for the process lifetime (the data only changes when the FAA scraper re-runs).- There is no free-text search param, so
compare_operatorsmatches names client-side. - Read-only: only
GETis ever called (the route also hasPOST/PATCH, which this server never uses).
Live data sanity (as of build)
total = 1890 active operators · AK = 303 · HI = 28 · all certType = "135" · all crmStatus = "NEW". Verified against the live endpoint; fleetSize ranges 1–386 nationwide (1–42 in AK).
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。