Kleinanzeigen

io.github.IIxauII由 GitHub 账号 IIxauII 发布v1.1.0更新于 Oct 31, 2026

A read-only, robots-clean MCP server over kleinanzeigen.de

概览

AI 生成的概览

面向德国分类信息网站 kleinanzeigen.de 的只读 MCP 服务器,让助手搜索商品信息、查看广告详情并查询商业卖家店铺。

可以做什么
  • 按查询条件搜索一页分类广告列表
  • 按广告 id 查看单条广告的完整内容
  • 查看商业卖家的资料与在售商品,或按名称查找店铺标识
  • 用内置数据集按名称解析分类 id,按名称或邮编解析地点 id
适用场景
适合需要查询 kleinanzeigen.de 上的二手或分类广告、查看某条具体广告,或了解某个商业卖家在售内容时使用。它是只读的,适合调研和浏览,不适合发布或管理广告。
运行要求
以 stdio 方式在本机运行,需要 Node.js 22 或更高版本。可通过 npx 安装 kanzeigen-mcp 包、使用 Claude Code 命令,或为 Claude Desktop 安装未签名的 .mcpb 包。无需账号、API 密钥或环境变量;可选环境变量 KLEINANZEIGEN_MCP_RATE_LIMIT_MS 设置请求之间的最小间隔(默认 1500 毫秒)。需要能访问 kleinanzeigen.de 的网络。
安装前请注意
服务器会向 kleinanzeigen.de 发出实时请求,注意限速设置,且翻页结果可能漂移:推广广告会重复出现,遍历时可能漏掉或重复看到某条广告。分类和地点查询总会返回候选,店铺匹配也可能只是资料文本中的提及,使用前请核对 id。Claude Desktop 的安装包未签名且没有更新机制,会停留在下载时的版本。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Kleinanzeigen,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

kleinanzeigen-mcp

A read-only, robots-clean MCP server over kleinanzeigen.de, the German classifieds site.


What it does

ToolWhat it answersRequests
search_listingsOne page of listings matching a search query.1
get_listingOne listing in full, by ad id.1
get_shopProfile and listings for one commercial seller.1
find_categoryCategory ids matching a name.0 — bundled dataset
find_locationLocation ids matching a name.0 — bundled dataset
find_shopShop slugs for commercial sellers matching a name.1

Install

Node 22 or newer is required. Four channels install the same build from the same release — they differ only in who does the fetching, and nothing propagates between them.

ChannelWho it is forLine
npm / npx — primaryanyone with an MCP clientnpx -y kanzeigen-mcp
Claude Codeone line, no JSONclaude mcp add kleinanzeigen -- npx -y kanzeigen-mcp
Claude Desktopno JSON editing at alldownload the .mcpb from a release and open it
Claude Code pluginthe server and the skill together/plugin marketplace add IIxauII/kleinanzeigen-mcp
run-from-clonedevelopmentDevelopment

npm / npx — any MCP client

The package is kanzeigen-mcp.

There is no install step and nothing to build. Point your client at npx and let it fetch the package on first run:

json
{  "mcpServers": {    "kleinanzeigen": {      "command": "npx",      "args": ["-y", "kanzeigen-mcp"]    }  }}

That block goes in your client's config file — claude_desktop_config.json for Claude Desktop, .mcp.json for Claude Code, the equivalent for anything else. Restart the client afterwards.

To verify by hand, without a client:

bash
npx -y kanzeigen-mcp

Claude Code

bash
claude mcp add kleinanzeigen -- npx -y kanzeigen-mcp

Any environment assignment goes before the --. Everything after the -- is the command Claude Code runs, so a variable placed there becomes an argument to npx rather than an environment variable:

bash
claude mcp add kleinanzeigen -e KLEINANZEIGEN_MCP_RATE_LIMIT_MS=3000 -- npx -y kanzeigen-mcp

Claude Desktop — the MCPB

Download kanzeigen-mcp-<version>.mcpb from the latest release and open it. Claude Desktop installs it and offers the one knob below as a form field, so nothing here needs a config file.

Two things are worth knowing before you pick it. The bundle ships unsigned, so the install dialog warns — self-signing fails its own verification, and a real certificate is a purchase nobody has made. And the format has no update mechanism: an installed .mcpb is as current as the day it was downloaded, and nothing will ever prompt you.

Claude Code plugin — the server and the skill

/plugin marketplace add IIxauII/kleinanzeigen-mcp/plugin install kanzeigen@kanzeigen

Configuration

KLEINANZEIGEN_MCP_RATE_LIMIT_MS — the minimum gap between requests, in milliseconds.

  • Unset means 1500 ms.
json
{  "mcpServers": {    "kleinanzeigen": {      "command": "npx",      "args": ["-y", "kanzeigen-mcp"],      "env": { "KLEINANZEIGEN_MCP_RATE_LIMIT_MS": "3000" }    }  }}

Development

Run from a clone. This is the development path rather than an install channel — it is the only one that yields a tree the drift check and the fixture-capture scripts can run in.

bash
git clone [email protected]:IIxauII/kleinanzeigen-mcp.gitcd kleinanzeigen-mcpnpm installnpm run build

npm run build produces a single-file ESM bundle at dist/index.js plus two sidecar datasets beside it. Point a client at it by absolute path:

json
{  "mcpServers": {    "kleinanzeigen": {      "command": "node",      "args": ["/absolute/path/to/kleinanzeigen-mcp/dist/index.js"]    }  }}
bash
npm test           # the whole suitenpm run typecheck  # tsc --noEmit, which is the real typechecknpm run build      # tsup, into dist/

Parser tests run against committed fixtures: hand-captured out of band by a dev-time script — never by the server — minimised to the DOM the parser actually reads, and redacted. The redaction rule is everything personal or identifying in the captured markup, including attributes the parser never reads: a pass aimed only at the fields the parser touches is how partner-ad ids and shop names once survived in tracking attributes. A test pins the rule.

Maintainer procedure — regenerating the two bundled datasets, running the drift check, and cutting a release — lives in docs/maintenance.md, because it addresses someone standing in a clone rather than someone who installed this.

Further reading: SPEC.md for the full contract, CONTEXT.md for the vocabulary every name in the codebase uses, and docs/adr/ for the decisions behind the posture.

来源:README.md,提交 18fe2b0

工具

6

search_listings

Search listings

One page of listings matching a search query. Promoted listings repeat on every page; high-volume queries drift between pages, so a listing can be missed or seen twice across a walk.

输入参数pagesortradiusad_typebuy_nowkeywordslocationshippingmax_pricemin_pricecategory_idlocation_id另有 2 个

get_listing

Get listing

One listing in full, by ad id.

输入参数ad_id必填

get_shop

Get shop page and inventory

Profile and listings for one COMMERCIAL seller. Private sellers have no shop page and cannot be reached by this server.

输入参数pagekeywordsmax_pricemin_priceshop_slug必填category_idlocation_id

find_category

Find categories

Category ids matching a name. Always returns candidates — names and slugs collide, so only the numeric id identifies a category.

输入参数query必填

find_location

Find locations

Location ids matching a name or postcode. Always returns candidates — a postcode can map to several locations.

输入参数query必填

find_shop

Find shops

Shop slugs for COMMERCIAL sellers matching a name. Makes a live request, unlike the other resolvers. A match may be a mention in a shop's profile text rather than its name, so check before using one.

输入参数name必填pagecategory_idlocation_id

版本历史

3
  1. v1.1.0最新Oct 31, 2026
  2. v1.0.1Sep 24, 2026
  3. v1.0.0Sep 16, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分