mcpField
S
Swiss company data

Swiss company data

本地服务
prospex.ch商业与营销04 周前更新

关于 Swiss company data

swissco 是用于查询瑞士企业与公共数据的命令行工具,面向需要检索公司登记、公告、招标及相关机构数据的用户。它汇集六个免凭据开放数据源,并可监控企业资料变化。

主要功能

  1. 01查询公司登记信息
  2. 02按名称或经营目的搜索
  3. 03查看公告与登记事件
  4. 04检索公共招标与供应商
  5. 05查询 FINMA、LEI 和研究项目
  6. 06监控公司资料变化

适用场景

  1. 01按经营目的筛选潜在企业
  2. 02跟踪指定公司的登记变更
  3. 03查看招标或供应商登记情况
  4. 04查询企业许可、LEI 或研究项目

MCP 相关

同一组六个数据源也通过 MCP 服务提供,包含九个工具(除 watch 外每个命令对应一个工具)。工具返回行数据、数量和说明。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"ch-prospex-swissco": {
"command": "npx",
"args": [
"-y",
"swissco-mcp"
],
"env": {
"ZEFIX_USER": "<ZEFIX_USER>",
"ZEFIX_PASSWORD": "<ZEFIX_PASSWORD>",
"SWISSCO_STATE": "<SWISSCO_STATE>",
"SWISSCO_INTERVAL": "<SWISSCO_INTERVAL>"
}
}
}
}
启动命令npx -y swissco-mcp
需要配置的环境变量
ZEFIX_USERZefix PublicREST username, issued by [email protected]. Optional: every tool works without it.
ZEFIX_PASSWORD密钥The matching Zefix PublicREST password.
SWISSCO_STATEWhere gazette bodies and the two FINMA files are cached. Defaults to ~/.swissco.
SWISSCO_INTERVALSeconds between requests. Raises the floor of 0.5s and cannot lower it.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiswissco-mcp0.1.1
npmswissco-mcp0.1.1

工具

9

收录的工具列表 · 更新于 2 周前

参数类型必填说明
leiboolean否添加 LEI 以及与该实体合并报表的实体。需要 3 次请求。
uidstring是任意标点格式的瑞士 UID:CHE-444.420.929、CHE444420929 或 CH-ID。
finma_licenceboolean否添加 FINMA 许可类型和监管类别。缓存未命中时需要下载 2 次。

详细介绍

swissco

PyPI 文档

在命令行中获取瑞士公司数据。按 UID 查询公司,按名称或法定经营目的搜索 790,000 家公司,列出公报公告、浏览公共招标、查询银行牌照,或监控公司名单的变更。

uvx swissco lookup CHE-444.420.929

所有数据均来自六个无需凭据的开放数据源:LINDAS 上的 Zefix,用于商业登记;Amtsblattportal,用于《瑞士商业公报》;simap.ch,用于公共采购;FINMA,用于获准经营的银行和证券公司;GLEIF,用于法人机构识别编码和集团结构;以及 ARAMIS,用于联邦资助的研究。

由瑞士 B2B 销售情报平台 Prospex 构建并维护。

安装

uvx swissco --help          # run it without installing
pip install swissco         # or install it

Python 3.14 或更高版本。

Docker
docker run --rm prospexch/swissco search "Nestlé" --limit 5

该镜像以非特权用户身份运行,并将状态(watch 已查看的 ID 和缓存的 FINMA 文件)保存在 /home/swissco/.swissco。如需记住上次查看的内容,请在此处挂载卷:

docker run --rm -v swissco-state:/home/swissco/.swissco \
  prospexch/swissco watch --uid CHE-105.909.036

Zefix 凭据并非任何命令的必需项,可通过环境变量传入:

docker run --rm -e ZEFIX_USER -e ZEFIX_PASSWORD prospexch/swissco lookup CHE-105.909.036

命令

每个命令都支持 --format table|json|csv、--limit 和 --quiet。

swissco lookup

查询登记簿中发布的某家公司的所有信息。

$ swissco lookup CHE-444.420.929
legal name       Baumberger Bau AG
uid              CHE-444.420.929
chid             CH-036.9.103.786-9
ehra id          1702823
legal form code  0151
legal form       Schweizerische Zweigniederlassung im Handelsregister eingetragen
municipality     Koppigen
canton           BE
address          Hauptstrasse 6, 3425 Koppigen
purpose          Anbieten von Kleintransporte aller Art.
zefix uri        https://register.ld.admin.ch/zefix/company/1702823

支持 CHE-444.420.929、CHE444420929,或其他文本中包含的 UID。

swissco search

按法定名称或法定经营目的搜索公司:即公司在登记簿中用自己的话描述其经营内容。

$ swissco search "usinage" --canton VD --limit 5
LEGAL_NAME                             UID              LEGAL_FORM                                         MUNICIPALITY  CANTON  PURPOSE
-------------------------------------  ---------------  -------------------------------------------------  ------------  ------  ------------------------------------------------------------
Atelier roue libre S.A.                CHE-261.821.895  Aktiengesellschaft                                 Penthalaz     VD      La société a pour but l'usinage, la réparation, la révision…
Cute Cut Sàrl                          CHE-403.577.924  Gesellschaft mit beschränkter Haftung GMBH / SARL  Lausanne      VD      la société a pour but toutes activités, notamment la fabric…
DecoupART CNC Sàrl                     CHE-342.723.896  Gesellschaft mit beschränkter Haftung GMBH / SARL  Paudex        VD      la société a pour but tous types de travaux dans les domain…
LAVA Technologies Sàrl en liquidation  CHE-217.431.384  Gesellschaft mit beschränkter Haftung GMBH / SARL  Nyon          VD      la société a pour but: développement de machines d'usinage …
Pousaz Mécanique SA                    CHE-166.712.190  Aktiengesellschaft                                 Oron          VD      La société a pour but l'exploitation d'un atelier mécanique…

--canton 接受两字母代码,--legal-form 接受 eCH-0097 代码(0106 表示 AG,0107 表示 GmbH)。

swissco publications

按日期范围查询公报中的商业登记公告。

swissco publications --canton ZH --since 2026-08-01
swissco publications --canton ZH --since 2026-08-01 --type CAPITAL_INCREASED

不指定 --type 时,只读取列表页:每 2,000 条公告发起一次请求。指定 --type 时,会获取每条符合条件的公告正文,并将其归类到 shab-parser 识别的十一种事件类型,因此请先缩小日期范围和州的范围。

超过约十天的日期范围会自动拆分为多个时间窗口。API 会拒绝页偏移量达到 10,000 的请求,而公报每天约发布 1,000 条商业登记信息。

swissco events

查询一家公司的登记历史。

swissco events CHE-444.420.929 --since 2024-01-01

公报列表页不包含 UID,只有标题,因此此命令会先将 UID 解析为法定名称,保留标题看起来与该名称相符的公告,再获取这些公告的正文,并保留 UID 与目标公司相符的事件。标题匹配用于判断哪些公告值得下载;正文中的 UID 则决定哪些事件会被报告。获取的正文会缓存在状态目录中,因此重复运行且日期范围重叠时无需再次下载。

swissco watch

查看自上次运行以来的变更。

printf 'CHE-444.420.929\nCHE-105.943.826\n' > uids.txt
swissco watch uids.txt --state ~/.swissco/

每家公司都会按指纹进行比较。指纹是基于公司身份、地址和经营目的字段生成的摘要。有变更时退出码为 10,没有变更时为 0,因此 cron 可以据此分支处理:

0 7 * * * swissco watch ~/uids.txt --quiet --format json > ~/changes.json \
          || mail -s "registry changes" [email protected] < ~/changes.json

如果 UID 已不在数据集中,报告内容会是已不在数据集中,而不会说已删除。LINDAS 仅包含活跃实体,因此 UID 可能会在重新登记、更正或公告延迟后离开数据集。

swissco tenders

simap 上按州和发布日期分类的公共采购项目。

$ swissco tenders --canton ZG --since 2026-08-25 --limit 3
TITLE                                                  PROJECT_NUMBER  BUYER                           CANTON  CITY  PUBLICATION_DATE  PUBLICATION_TYPE
-----------------------------------------------------  --------------  ------------------------------  ------  ----  ----------------  ----------------
Neubau Pfarreizentrum, Katholische Kirchgemeinde Baar  22047           Katholische Kirchgemeinde Baar  ZG      Baar  2026-09-05        award

--canton 和 --type 可重复使用;--lang 用于选择标题和采购方的显示语言。分页使用游标而非偏移量,因此范围较宽时会多花一些分页请求,而不会失败。

日期范围筛选的是每个项目的最新发布日期,而非其中的授标日期。一个 3 月授标、但 8 月发布更正的项目,只会出现在涵盖 8 月的范围内。

swissco vendor

查询某家公司是否已在 simap 注册为供应商。

$ swissco vendor CHE-409.633.691
name                   Egli Gartenbau AG Sursee
uid no                 CHE-409.633.691
city                   Sursee
canton                 LU
url                    https://www.gartenbau-egli.ch
company size           medium

系统会根据 UID 查出法定名称并进行搜索,然后通过目录自身的 uidNo 确认。名称用于找出候选项;UID 用于从中确定目标——目录中既有“Egli Gartenbau AG Sursee”,也有“Egli Gartenbau AG Uster”。

没有查询公司中标情况的命令。 simap 授标记录中的供应商没有 UID,只有采购办公室手动输入的自由文本。匹配这些名称会给出看似合理、但有时对应另一家公司的答案,因此不提供此功能。

swissco finma

FINMA 授权的银行和证券公司,并关联至 UID。

$ swissco finma --uid CHE-105.845.287
name                  Aargauische Kantonalbank
city                  Aarau 1
licence type          Bank
supervisory category  3
uid                   CHE-105.845.287

还可使用 swissco finma "Raiffeisen"、--licence、--category,以及在 lookup 中使用 --finma。这两个文件会在状态目录中缓存一周。

仅涵盖银行和证券公司:FINMA 将保险公司、投资组合管理公司和基金管理公司列在此处不读取的独立清单中。未找到表示“未列在此清单中”,绝不表示“未获许可”。

swissco lei

公司的法人机构识别编码,以及其并表所属的集团。

$ swissco lei CHE-412.669.376
legal name                 UBS Switzerland AG
lei                        549300WOIFUSNYH0FL22
registered as              CHE-412.669.376
jurisdiction               CH
status                     ACTIVE
initial registration date  2014-12-15
direct parent              UBS AG (BFM8T61CT2L1QCEMIK50, CH)
ultimate parent            UBS Group AG (549300SZJ9VS8SGXAN81, CH)
direct children            0

--children 会列出该公司并表的对象,而不是将其计为一项;在 lookup 中使用 --lei,则会将相同字段并入公司资料。

母公司通常位于国外,这正是运行此命令的原因:瑞士子公司的境外所有者没有商业登记记录,因此登记簿根本无法回答这个问题。

GLEIF Level 2 记录的是会计并表关系:母实体是将该实体并入自身账目的实体,即使它并不拥有该实体的全部权益也可以这样做。约 28,000 家瑞士实体拥有 LEI,而登记簿中约有 790,000 家实体,因此未找到只表示“没有 LEI 记录”,仅此而已。

swissco research

来自 ARAMIS 的联邦资助研究项目。ARAMIS 是联邦研究与创新委托项目登记簿,其中包括 Innosuisse 和 SNSF 的资金。

$ swissco research CHE-337.958.399
TITLE                                 PROJECT_NUMBER    OFFICE      STATUS      START_DATE  ROLE
Reducing Documentation Burden in S…   137.839 INNO-ICT  INNOSUISSE  In Process  2026-06-01  Implementation Partner

系统会通过每个项目自身的参与者 UID 进行确认,因此报告的每一行都准确无误。系统会按原样搜索自由文本,并返回每个匹配项及其参与机构。由于获取参与者列表每个项目都要发出一次请求,--limit 用于限制加载的候选项数量;--lang 用于选择 DE、EN、FR 或 IT。

ARAMIS 会搜索项目标题、摘要和自由文本承包方字段,但不会将结构化参与者列表编入这些字段的索引。仅作为结构化合作方列出的公司无法被找到;Innosuisse 的实施合作伙伴通常就在此列。因此,结果为空只表示没有项目按名称提及该公司,并不能证明该公司没有获得联邦研究资金。

swissco 会读取参与者的机构、角色、UID 和地点。ARAMIS 还会发布研究人员的姓名、电子邮件地址和电话号码,但解析器中没有任何字段用于存储这些信息。

输出

只有 --format 会改变输出。通过管道传给 jq 的命令与供人查看的同一命令会生成完全相同的字节,因此,能在终端中运行的脚本也能在 CI 中运行。

table 和 csv 与 json 序列化的数据来自同一批行,因此某一列不会只出现在一种格式中、却在另一种格式中缺失。进度说明会输出到 stderr,--quiet 可将其静默;错误会以单个 JSON 对象的形式输出到 stderr。

在编码 Agent 中使用

此仓库附带一个 Agent Skill。它会教会 Claude Code、Cursor、Codex 和其他约 20 种 Agent 如何使用 swissco:涵盖每条命令,以及那些会悄然导致答案错误的陷阱。

该技能位于目录 .agents/skills/swissco/,这是所有合规 Agent 都会扫描的跨客户端位置;.claude/skills/swissco 符号链接到此目录,以便 Claude Code 在自己的目录中找到它。tests/test_skill.py 每次运行时都会检查它是否符合规范中的规则,因此如果技能偏离格式,测试套件就会报错。

npx skills add prospex-ch/swissco-cli

它会安装到使用该技能的项目自己的 .agents/skills/swissco/,并符号链接到每个 Agent 的目录中。添加 -g 可为每个项目安装一次,添加 --all 可直接接受默认选项,不再询问。swissco 仍须位于路径中,或可通过 uvx 访问。

随后,Agent 就能通过自行运行合适的命令,回答诸如“哪些 Zug 公司在经营宗旨中提到区块链”或“自 6 月以来,CHE-105.943.826 有什么变化吗”之类的问题。

将其用作 MCP 服务

同一组六个数据源也可通过此仓库作为 MCP 服务使用。共有九个工具,每条命令对应一个,但不包括 watch。

claude mcp add swissco -- uvx swissco-mcp

每个工具都会返回 rows、count 和 notes。rows 是 swissco --format json 输出的字典,因此同一字段在两种接口中的名称相同。notes 说明每个数据源涵盖的内容,这能让空结果也成为答案:FINMA 的名单不包括保险公司和投资组合管理公司;约 28,000 家瑞士实体拥有 LEI,而登记册中约有 790,000 家实体。

它位于 mcp/,以 PyPI 包 swissco-mcp 和同名 npm 包发布,并注册为 ch.prospex/swissco。每个工具的完整参考资料,包括其参数和注意事项,请见 swissco-mcp.readthedocs.io。

访问与条款

SHAB / Amtsblattportal。 REST API 是运营方提供的机器访问渠道:可自由访问,无需身份验证即可获取已发布的数据,没有文档说明的速率限制,页面大小上限为 2,000。网站 UI 被 robots.txt 禁止访问,但此限制不适用于 API。运营方声明数据不保证完整,只有已签署的 PDF 才具有法律效力。

Zefix on LINDAS。 发布于 opendata.swiss,无需凭据。商业使用条款一直未明确;适用条款见数据集页面。

Zefix PublicREST。 需要使用 [email protected] 签发的凭据。此处的所有命令均可在没有凭据的情况下使用。通过 --user/--password 或 ZEFIX_USER/ZEFIX_PASSWORD 提供凭据后,lookup 会额外返回资本、状态、注销日期、曾用名和公司关系,search 则会支持名称前缀搜索。

simap。 读取 API 无需身份验证即可响应。该网站的 robots.txt 禁止访问单页应用的项目详情路由,swissco 会直接拒绝访问这些路由;它未提及 /api,此处的所有请求都会发送到该接口。

FINMA。 有两个已发布的文件,可像浏览器一样下载。FINMA 会重新发布文件,而不是为其创建不同版本,因此文件会缓存一周,并在此后重新获取。

GLEIF。 记录 API 无需身份验证即可响应。GLEIF 向任何人开放 LEI 数据,使用条款说明了适用规定。

ARAMIS。 公共服务无需身份验证即可响应,但要求不要向其发送过多请求,因此 swissco 会控制请求速率,每次读取一个项目。43 MB 的批量导出文件位于此客户端允许列表未包含的主机上,因此没有任何命令能够下载它。

做一个合格的服务使用者

这些是由联邦办公室运行的小型公共服务。swissco 最多每 0.5 秒发送一个请求——FINMA 要求留出更多间隔,因此对它每秒发送一个请求;失败时采用指数退避,并通过真实的 User-Agent 标明身份,其中包含此代码库的 URL。--interval 可以提高这些最小间隔,但不能降低。

基于

软件包功能
zefix-parserZefix:LINDAS SPARQL、PublicREST、UID 验证
shab-parserSHAB:发现、获取、解析、十一种类型的事件分类

两者均采用 MIT 许可证,并与本项目一同维护。simap、FINMA、GLEIF 和 ARAMIS 都没有提供客户端,因此 swissco 为这四项服务自带客户端。

监控名单之外的信息

通过 cron 运行 swissco watch,就是 Prospex(Prospex)所售服务的免费版本。Prospex 会持续监控整个登记册,将其与招聘、融资、招标和网络信号关联起来——包括此工具刻意不涉及的 simap 授标信息——并告诉你哪些变化值得打个电话了解。如果 cron 任务和 UID 列表就能满足需求,那么这个工具就是你所需要的一切。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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