Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
MCP for ARES, the Czech business registry: lookup, due diligence, insolvency, signed provenance
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
ARES_PROVENANCE_PRIVATE_KEY, ARES_PROVENANCE_KEY_ID, ARES_BASE_URL「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"ares": {
"command": "npx",
"args": [
"-y",
"@milos106/ares-mcp"
],
"env": {
"ARES_PROVENANCE_PRIVATE_KEY": "your-value",
"ARES_PROVENANCE_KEY_ID": "your-value",
"ARES_BASE_URL": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add ares --env ARES_PROVENANCE_PRIVATE_KEY=your-value --env ARES_PROVENANCE_KEY_ID=your-value --env ARES_BASE_URL=your-value -- npx -y @milos106/ares-mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"ares": {
"command": "npx",
"args": [
"-y",
"@milos106/ares-mcp"
],
"env": {
"ARES_PROVENANCE_PRIVATE_KEY": "your-value",
"ARES_PROVENANCE_KEY_ID": "your-value",
"ARES_BASE_URL": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"ares": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@milos106/ares-mcp"
],
"env": {
"ARES_PROVENANCE_PRIVATE_KEY": "your-value",
"ARES_PROVENANCE_KEY_ID": "your-value",
"ARES_BASE_URL": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
ARES_PROVENANCE_KEY_ID envARES_BASE_URL envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント milos106 で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:ARES_PROVENANCE_PRIVATE_KEY
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.1.2)がレジストリに届いたのは5 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Cape Winelands Visit Planner
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Cape Winelands wine farm finder and day-route planner
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
MCP server for ARES — the Czech business registry. Validate IČO/DIČ, look up companies, statutory bodies, trade licenses and addresses directly from Claude Desktop, Claude Code, Cursor and any other MCP-compatible client.
Open-source (MIT), self-hosted. Runs against the public ARES API — your queries never leave your machine. Optionally emits Ed25519-signed, sourced answers so anyone can verify their integrity and origin offline.
Hosted version: icovazby.cz — full web company-checks across 10+ Czech registers (ARES, Public Register, trade licenses, insolvency, sanctions, …).
ARES (Administrativní registr ekonomických subjektů) is the official public registry of Czech businesses, operated by the Czech Ministry of Finance (MFČR). This project is an independent, community-built MCP server that calls the public ARES REST API.
Not affiliated with the Czech Ministry of Finance. This project is not affiliated with, endorsed by, or sponsored by MFČR or the ARES operator. "ARES" refers to the public information system; this MCP server is third-party software.
ares_full_due_diligence macro with 🟢🟡🔴 risk flag, and an export adapter that emits Fakturoid / iDoklad / Pohoda payloads ready to POST./mcp) for remote / web deployment.Retry-After), per-IP request throttling on the HTTP variant, structured errors, no PII stored or logged by default.Two ways to run ares-mcp — pick one:
{
"mcpServers": { "ares": { "command": "npx", "args": ["-y", "@milos106/ares-mcp"] } } }
git clone git@github.com:milos106/ares-mcp.git
cd ares-mcp npm install npm run build npm test
Then point your MCP client at the absolute path of dist/index.js. The per-client examples below use this from-source form — swap "command": "node", "args": ["…/dist/index.js"] for the npx form above if you prefer a zero-install setup.
Edit your claude_desktop_config.json:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.json{
"mcpServers": { "ares": { "command": "node", "args": ["/absolute/path/to/ares-mcp/dist/index.js"] } } }
Restart Claude Desktop.
claude mcp add ares -- node /absolute/path/to/ares-mcp/dist/index.js
In Cursor settings → MCP servers:
{
"ares": { "command": "node", "args": ["/absolute/path/to/ares-mcp/dist/index.js"] } }
After npm run build, this prints absolute-path config blocks for Claude Desktop, Cursor, Claude Code, and the local HTTP transport:
npm run config
Copy the JSON block straight into your client's MCP config — no path editing needed.
npm run inspector
(Equivalent to npx @modelcontextprotocol/inspector node dist/index.js.)
Opens a browser UI at http://localhost:6274 where you can list tools, fill arguments, and run them against live ARES — no client configuration needed.
A second entry point exposes the same tools over MCP Streamable HTTP. Useful when sharing one running instance across multiple local clients.
PORT=3030 npm run start:http
Endpoints:
POST /mcp — Streamable HTTP transport (JSON-RPC over HTTP / SSE)GET /healthz — liveness + session countConfiguration via environment variables:
| Variable | Default | Description |
|---|---|---|
PORT | 3030 | Listen port |
ARES_HTTP_RATE_LIMIT | 60 | Per-IP requests per minute (token bucket) |
ARES_HTTP_MAX_BODY | 1000000 | Max request body bytes |
ARES_HTTP_SESSION_TTL_MS | 3600000 | Idle session timeout |
ARES_HTTP_ALLOW_ORIGIN | _(unset)_ | If set, sent as Access-Control-Allow-Origin (e.g. * or https://example.com) |
There is no built-in authentication — bind it to 127.0.0.1 only or put a reverse proxy in front if you ever need to expose it.
| Tool | Purpose |
|---|---|
ares_validate_ico | Mod-11 checksum validation. No network call. |
ares_lookup_company | Aggregated company profile by IČO. |
ares_search_companies | Structured search by name, postcode, NACE, legal form. |
ares_get_statutory_bodies | Directors, board, partners (from VR). |
ares_get_trade_licenses | Trade licenses (from RŽP). |
ares_check_vat_payer | VAT-payer status with optional DIČ cross-check. |
ares_standardize_address | Canonicalize a free-form address via RÚIAN. |
ares_lookup_cz_nace | CZ-NACE classification lookup. |
ares_cross_company_persons | Given 2–50 IČOs, find persons who hold active statutory roles in two or more of them. Returns JSON + Mermaid graph. |
ares_search_by_address | Find all entities at a given address. Flags virtual offices / shell-address concentrations. |
ares_get_res_classification | Statistical classification from RES — size bracket, ESA 2010 sector, NUTS region. |
ares_check_insolvenci | Fast red-flag: is the entity currently in insolvency proceedings (IR) or marked as bankrupt (CEÚ)? |
ares_full_due_diligence | One-shot DD report — profile + statutary + licenses + VAT + insolvency + 🟢🟡🔴 risk flag + Markdown summary. |
ares_export_for_invoicing | Transform an ARES profile into a Fakturoid / iDoklad / Pohoda payload ready for invoicing systems. Pure transformation — no calls to the target system. |
"Validate IČO 27074358 and tell me if it's a VAT payer and which region it's based in."
"Find Czech IT companies (CZ-NACE 620) registered in Prague."
"Who are the statutory directors of IČO 26168685? When were they appointed?"
"Standardize this address: 'Za prachárnou 4962/45, Jihlava'."
"Look up the CZ-NACE code for software development."
"I have IČOs 26185610, 46967851, 46900411, 27435148. Are any people on the boards of more than one? Draw it."
"Run a full due-diligence check on IČO 45193258 before I sign anything."
The DD prompt calls ares_full_due_diligence and returns a complete risk-flagged report. Real example (Liberty Ostrava a.s., captured 2026-06-07):
# Due diligence: Liberty Ostrava a.s.
Risk level: 🔴 RED
Findings:
45193258CZ45193258 (VAT payer: yes)
The same prompt on a healthy company (AGROFERT IČO 26185610) yields 🟢 GREEN with 12 active statutary members and no findings.
The last prompt uses ares_cross_company_persons. The tool returns a Mermaid graph that Claude Desktop, Claude Code, and Cursor will render inline. On the Agrofert holding example above, the tool reports that *Michal Jedlička* sits on three of the four boards and *Jaroslav Kurčík* on two — a classic holding-group fingerprint.
ARES's public REST v3 API does not expose a search-by-person endpoint (the AngazovanaOsobaFiltr schema is defined but unused). ares_cross_company_persons therefore operates over a known set of IČOs that you provide — it does not enumerate the registry. Full reverse lookup ("which companies has Jan Novák ever sat on?") requires a mirrored graph database and is out of scope for this MIT-licensed server.
Run ares_cross_company_persons with four IČOs from the Agrofert group (AGROFERT itself + three subsidiaries) and the tool returns the full board overlap. Captured from a live ARES call on 2026-06-07:
zpracovanoIco: 4
totalActivePersons: 29 sharedCount: 3
• Ing. MICHAL JEDLIČKA (1978-01-06) AGROFERT, a.s. — člen představenstva Kostelecké uzeniny a.s. — předseda představenstva Vodňanské kuře, s.r.o. — Jednatel
• Ing. JAROSLAV KURČÍK (1969-08-24) AGROFERT, a.s. — člen představenstva PENAM, a.s. — předseda představenstva
• AGROFERT, a.s. (právnická osoba, IČO 26185610) PENAM, a.s. — člen představenstva Kostelecké uzeniny a.s. — člen představenstva
Rendered as Mermaid (Claude Desktop / Claude Code / Cursor render this inline):
graph LR
C_26185610["AGROFERT, a.s. 26185610"]:::company C_46967851["PENAM, a.s. 46967851"]:::company C_46900411["Kostelecké uzeniny a.s. 46900411"]:::company C_27435148["Vodňanské kuře, s.r.o. 27435148"]:::company P_0(["Ing. MICHAL JEDLIČKA"]):::person P_0 ---|"člen představenstva"| C_26185610 P_0 ---|"předseda představenstva"| C_46900411 P_0 ---|"Jednatel"| C_27435148 P_1(["Ing. JAROSLAV KURČÍK"]):::person P_1 ---|"člen představenstva"| C_26185610 P_1 ---|"předseda představenstva"| C_46967851 P_2["AGROFERT, a.s. (IČO 26185610)"]:::legal P_2 ---|"člen představenstva"| C_46967851 P_2 ---|"člen představenstva"| C_46900411 classDef company fill:#e0f7fa,stroke:#006064,stroke-width:2px; classDef person fill:#fff3e0,stroke:#bf360c,stroke-width:2px; classDef legal fill:#f3e5f5,stroke:#4a148c,stroke-width:2px;
The third connection — AGROFERT a.s. itself listed as a corporate director in two of its subsidiaries — is a real holding-company pattern that flat per-company listings miss but the graph helper surfaces automatically.
The server reads optional environment variables:
| Variable | Default | Description |
|---|---|---|
ARES_BASE_URL | https://ares.gov.cz/ekonomicke-subjekty-v-be/rest | API base URL |
ARES_RATE_PER_SECOND | 5 | Token-bucket budget. MFČR documents a ceiling of 500 req/min (~8 req/s); we default to 5 for headroom. Do not exceed 8. |
ARES_TIMEOUT_MS | 15000 | Per-request timeout |
ARES_RETRIES | 3 | Retry budget (on top of the initial attempt) for retriable errors |
Errors are returned as a JSON payload inside the tool result (with isError: true) so the agent can reason about them. Codes:
| Code | When |
|---|---|
NOT_FOUND | The IČO or resource does not exist in ARES. |
INVALID_INPUT | The input failed validation (e.g. IČO checksum, missing search filter). |
RATE_LIMITED | ARES returned 429 and retries were exhausted. |
UPSTREAM_ERROR | ARES returned 5xx. |
NETWORK_ERROR | The request timed out or could not be sent. |
ARES data is published by the Czech Ministry of Finance as open data under the Creative Commons Attribution 4.0 (CC BY 4.0)
冒頭だけを表示しています。続きはリポジトリで読めます