Skip to main content
Glama
cvele

Polovnjak MCP

by cvele

Polovnjak MCP

一个用于二手车市场的多提供商 MCP 服务器。智能体获得一个统一工具面——搜索、列表详情、价格统计、价格历史,以及按用户保存的搜索监视——由可插拔的市场适配器支持。内置适配器:polovniautomobili.com(源 id pa)和 mojauto.rs(源 id ma),均位于塞尔维亚。

用户通过标准 MCP OAuth 2.1 流程使用 Google 登录;监视按用户私有。中心观察到的每个列表(来自任何用户的搜索、统计采样或监视检查)都会记录到共享的 Postgres“市场记忆”中,为任何单一市场都无法提供的价格历史和趋势查询提供支持。

架构

  • 适配器src/adapters/)实现通用 SourceAdapter 接口:searchgetListinggetMakesModels,以及能力标志。每个适配器将规范过滤器转换为其提供商的查询,并将结果映射回规范列表模型。列表携带复合 id,如 pa:12345678ma:3554254。品牌名称按源进行别名解析(“VW”和“Volkswagen”在任何地方都有效);源无法表达的过滤器会在结果中报告为按源的 warnings

  • 工具src/tools/)跨适配器扇出并合并结果,为所有内容标记其来源。类别涵盖汽车、摩托车、厢式货车、轻型/重型卡车、客车、拖车、房车、机械、拖拉机、船只和自行车。

  • 记录器src/recorder.ts)将每个观察到的列表 upsert 到 listings 中,并在首次发现或价格变化时追加一行 price_observations

  • 认证src/auth/)是一个自托管的 OAuth 2.1 授权服务器(动态客户端注册、PKCE、刷新令牌),以 Google OIDC 作为身份层。令牌以哈希形式存储在 Postgres 中。

  • 存储通过 Drizzle ORM 使用 Postgres;迁移在启动时自动运行。

Related MCP server: Vehicle Database MCP Server

快速开始(Docker Compose)

  1. Google Cloud Console 创建一个 Google OAuth 客户端(类型“Web application”),授权重定向 URI 为 <PUBLIC_URL>/auth/google/callback(例如本地使用 http://localhost:8321/auth/google/callback)。

  2. 配置环境:

cp .env.example .env
# set GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET (and PUBLIC_URL for non-local deployments)
  1. 启动所有内容(MCP 服务器 + Postgres + FlareSolverr):

docker compose up -d --build
  1. 将 MCP 客户端指向 http://localhost:8321/mcp。客户端将发现 OAuth 元数据、自行注册,并打开浏览器窗口进行 Google 登录。之后的一切都是按用户进行的。

如需在没有 Google 凭据的情况下进行快速本地测试,请设置 AUTH_MODE=none——服务器随后跳过认证并使用单个本地开发用户。

工具

工具

用途

list_sources

已注册的市场来源及其覆盖范围和能力标志。源 id 用于其他工具的 sources 参数以及复合列表 id 中。

search_listings

每个来源的一页规范化列表,合并并按来源标记。过滤器:类别、品牌/型号、价格/年份/里程/功率范围、燃料、车身、变速箱、地区/城市、状况标志。列表在来源显示折扣时包含 previousPrice;按源的 warnings 解释任何源无法原生应用的过滤器。

get_listing

按复合 id(pa:12345678ma:3554254)、URL 或裸 id 获取单个列表的完整详情:规格、设备、描述、照片、卖家联系方式。

get_makes_and_models

按源的分类:品牌、品牌的型号、地区、接受的过滤器值、城市名称解析。

get_price_stats

实时市场快照:最小值/第25百分位/中位数/平均值/第75百分位/最大值 + 按年份细分,按源和合并,从每个来源最多 maxPages 个结果页采样。

get_price_history

由中心自身记录的观察结果回答:单个列表的价格时间线(重新定价检测)或某个细分市场(品牌/型号/年份)的逐月趋势。覆盖范围随使用而增长。

create_watch / list_watches / delete_watch / check_watches

跨一个或多个来源的按用户保存的搜索。check_watches 仅返回自上次检查以来出现的列表——非常适合计划每日提示。

智能体技能

仓库附带一个智能体技能,位于 .cursor/skills/car-market-hub/SKILL.md,教 LLM 智能体如何有效使用此服务器(工具工作流、注意事项),并在 clients.md 中提供针对 OpenAI、Claude、LibreChat 和 Cursor 的按客户端连接指南。Cursor 会自动拾取;对于其他平台,将技能目录复制到该平台的技能位置(例如 .claude/skills/)或将其内容粘贴到智能体的指令中。

监视工作流

  1. 使用名称和过滤器(可选地限制为特定 sources)调用 create_watch——当前匹配成为基线。

  2. 稍后(例如计划提示:“检查我的汽车监视”),check_watches 仅返回自那时以来出现的列表,按监视和按来源。

添加新的市场适配器

  1. 创建 src/adapters/<name>/ 并从 src/adapters/types.ts 实现 SourceAdapter 接口:选择一个简短稳定的 id(用于复合列表 id),将规范 SearchQuery 过滤器转换为您提供商的查询,并将原始结果映射为 src/domain/listing.ts 中的规范 ListingSummary / ListingDetail 形状。

  2. src/server.ts 中使用 registerAdapter(...) 注册它。

搜索扇出、监视、记录和价格历史会自动拾取新来源。

环境变量

变量

默认值

含义

PORT

8080

HTTP 监听端口。

PUBLIC_URL

http://localhost:<PORT>

公共基础 URL;OAuth 发行者和 Google 回调主机。

DATABASE_URL

postgres://carhub:carhub@localhost:5432/carhub

Postgres 连接字符串。

AUTH_MODE

oauth

oauth(Google 支持的 OAuth 2.1)或 none(单个本地开发用户,无认证)。

GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET

Google OAuth 凭据(在 oauth 模式下必需)。

FLARESOLVERR_URL

可选的 FlareSolverr 实例,用于 Cloudflare 挑战回退。

CACHE_TTL_MS

600000

上游响应缓存 TTL。

FETCH_CONCURRENCY

5

每个适配器的最大并发上游请求。

REQUEST_TIMEOUT_MS

25000

上游请求超时。

本地开发

npm install
docker compose up -d postgres        # or point DATABASE_URL at your own Postgres
AUTH_MODE=none npm run dev           # server on http://localhost:8080/mcp

架构更改:编辑 src/db/schema.ts,然后运行 npm run db:generatedrizzle/ 下生成新迁移(启动时自动应用)。

注意事项和限制

  • polovniautomobili.com 没有公共 API;适配器使用 Chrome TLS 模拟(impit)读取该站点的 Next.js 数据端点,并以 FlareSolverr 作为 Cloudflare 挑战回退。请负责任地使用并遵守站点的服务条款。

  • 低于 100 欧元的价格被视为“价格面议”,并从统计和观察中排除。

  • 监视检查扫描每个来源的前两个结果页(约 50 条最新列表)。

  • get_price_history 仅反映通过此中心观察到的列表——这是一个不断增长的样本,而非完整市场。

  • 之前的单提供商实现保留在 old/ 中供参考(不参与构建)。

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Enables access to comprehensive vehicle information including VIN decoding, license plate OCR, vehicle history checks (theft, title, salvage records), market valuations, specifications, and warranty data for vehicles across North America and Europe.
    6
    61
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to decode VINs, check stolen vehicle databases, and retrieve market valuations through natural language.
    1
  • A
    license
    A
    quality
    B
    maintenance
    Enables turning photos and observed facts into a ready-to-publish Leboncoin ad, with comparable search, asking-price statistics, category lookup, local drafts, and browser form automation that stops one click short of publishing until approved.
    23
    MIT

View all related MCP servers

Related MCP Connectors

  • Vehicle data for AI: VIN decoder, automotive specs, stolen checks, valuation and way more.

  • VIN decoding and European vehicle data for automotive workflows.

  • SERPRO RADAR: Vehicle, official-source lookup. Platform-hosted, pay per query with prepaid credit.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cvele/polovnjak-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server