Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
German Handelsregister + Austrian Firmenbuch for AI agents: master data, financials & ratios.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
X-API-KeyValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Run this in your terminal
claude mcp add --transport http handelsregister https://register.agentic-firmenbuch.at/mcp --header 'X-API-Key: your-value'Fill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"handelsregister": {
"url": "https://register.agentic-firmenbuch.at/mcp",
"headers": {
"X-API-Key": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"handelsregister": {
"type": "http",
"url": "https://register.agentic-firmenbuch.at/mcp",
"headers": {
"X-API-Key": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Your choice stays on this device in a cookie; no account needed.
X-API-Key secret HTTP headerThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
The server asks you to sign in before it lists its tools.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account jkbngb, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Responded in 358 ms (HTTP 401)
Declares OAuth sign-in, so your AI app can take you to log in
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: X-API-Key
It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.
The GitHub repo last changed –, and the latest version (1.0.3) reached the registry 11 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Spec Driven Development, Remote Desktop Commander, NexusWindows
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
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.
Windows computer use in the background: desktop apps driven without your mouse or keyboard.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Austria's entire company register, queryable by AI agents in plain language. Official master data, annual accounts and key ratios for every firm – served over MCP, answered on real numbers instead of hallucinations.
[Try the playground](https://www.agentic-firmenbuch.at/playground.html) · [Start free: 50 credits, 7 days](https://www.agentic-firmenbuch.at) · [Quickstart ↓](#quickstart)
A live, automated data product over the Austrian Firmenbuch (free EU HVD / High Value Datasets), served through a multi-tenant MCP server. A deterministic Azure pipeline pulls the published Jahresabschluss (annual financial statement) filings from the official register, parses them, consolidates per company, computes ratios/growth/trends, and serves the result to MCP clients. The whole register holds ~640k legal entities; the served slice is currently ~341k and grows as the backfill progresses. Version 1 = facts + clean derivations only (no scoring, no third-party enrichment, no NACE, no AI summaries).
Also available: Germany and the wider DACH region. Alongside this Austrian product, a unified `agentic-register` endpoint serves both the Austrian Firmenbuch and the German Handelsregister / Unternehmensregister over a single MCP. It is listed in the official MCP registry as `io.github.jkbngb/handelsregister` (spec:
handelsregister.server.json) and reachable athttps://register.agentic-firmenbuch.at/mcpwith the same account and the same access rules (free trial, then Pro). A search returns matches from both countries, tagged bycountry(AT/DE).
Use the hosted service – query official Firmenbuch data from an MCP client that accepts an HTTP header key (Claude Code, VS Code with GitHub Copilot, Cursor, …):
claude mcp add --scope user --transport http agentic-firmenbuch https://mcp.agentic-firmenbuch.at/mcp --header "X-API-Key: <your-key>"
GitHub Copilot / VS Code: code --add-mcp "{\"name\":\"agentic-firmenbuch\",\"type\":\"http\",\"url\":\"https://mcp.agentic-firmenbuch.at/mcp\",\"headers\":{\"X-API-Key\":\" \"}}". Any other HTTP-MCP-Header client: URL https://mcp.agentic-firmenbuch.at/mcp, header X-API-Key: .
search_companies / get_company_details and answers with official data – no SDK required.Claude Cowork & claude.ai (sandboxed clients) don't take the API-key header – they connect via
Settings → Connectors → Add custom connectorwith the URLhttps://mcp.agentic-firmenbuch.at/mcpand a one-time email login (OAuth, no key). Step-by-step with screenshots: [agentic-firmenbuch.at/cowork.html](https://www.agentic-firmenbuch.at/cowork.html).
Prefer to try before signing up? Use the [playground](https://www.agentic-firmenbuch.at/playground.html).
Or run the pipeline yourself – clone, uv sync, uv run pytest (offline, no Azure). See Develop.
| Tool | Purpose |
|---|---|
search_companies | Filter / rank Austrian companies by region, size, balance-sheet total, equity ratio, revenue, growth profile, management age, last filing year, status. Returns a compact result card per match. |
get_company_details | Full served profile of one company: identity, location, founding/filing years, size class, multi-year balance sheet + P&L, 13 computed ratios, growth, management, list of filings. |
get_full_record | Superset of get_company_details: full 317-position UGB taxonomy, passthrough unknown codes, completeness, GuV-years, signatories history, derivations registry. |
get_company_history | Filing-by-filing time series of every reported position — one company, or a batch via fnrs (max 50; 1 credit per company found where credits apply). |
find_peers | K-nearest peer set for a company within its size class / region. |
get_cohort_summary | Aggregate statistics (counts, percentiles, distributions) for a filtered cohort. |
get_coverage | Per-Bundesland / per-Rechtsform / per-size-class coverage statistics for the served dataset. |
list_sectors | Available legal-form (Rechtsform) and Bundesland codes for use in filters. |
describe_fields | Self-describing field dictionary with type + null-rules + EBIT/EBITDA definition. |
get_document | Fetch the URL/blob key for an original filed annual statement (XML or PDF). |
get_document_text | Return the extracted text of a filed annual statement (parsed XML/PDF) for direct reading. |
list_documents | One newest-first chronology of a company's Abschluss documents: filed annual statements plus register-held PDFs (Konzernabschluss, HV-Protokoll) with their Dokumentart. |
search_person | Find companies by an officer / representative (managing directors, board members, signatories) by name. |
benchmark_company | Position one company against its peer cohort (percentile ranks on key metrics). |
list_events | Register-change events (name/seat/legal-form/capital/management changes, derived daily since 2026-07) for a company or cohort. |
get_event_stats | Aggregate event statistics (counts by type/period) across a filtered cohort. |
export_companies_csv | Export a filtered company set as a CSV download (server-generated, time-limited link). |
get_my_usage | The caller's own usage, plan, remaining trial credits and the upgrade link. |
ping | Connection test; always free. |
All tools return a processed derivative of official Austrian Firmenbuch data (source: BMJ – Justiz, CC BY 4.0). Concretely: we ingest the published filings from the register, parse and consolidate them, compute ratios, and serve that from our own database — no web scraping, no LLM-generated summaries, no third-party data mixed in (V1). Every response carries provenance.data_version + built_at and names the original source, so the agent can attribute it correctly; for the authoritative record, the official Firmenbuch always governs.
Currently served: ~341,000 active legal entities across all Rechtsformen (GmbH, AG, KG, OG, EU, Genossenschaft, Privatstiftung, SE …). The full register has ~640,000 entities; the gap is companies without a published Jahresabschluss plus inactive/deleted entries, which are added step by step.
Full index with the versioning convention (shipped _v1 specs vs. the forward ROADMAP.md + V2 design spec): [docs/README.md](docs/README.md). The headline documents:
| Doc | What it is |
|---|---|
| docs/pipeline-step-samples.md | File format + golden sample for every pipeline stage. |
| docs/FIELD_REFERENCE.md | Served field dictionary – every field each MCP tool returns, with type + null rules. Public page: felder.html. |
| ROADMAP.md | Forward plan – status/priorities and the V2 direction (banks/insurers, GISA, Ediktsdatei). |
| docs/appendix_position_mapping.json | Full 317-entry canonical position taxonomy → copied into products/agentic-firmenbuch/packages/core_at/…/mapping/. |
| docs/reference/ | Official source material (API reference, JAb 4.0 XSDs/Excel). |
agentic-first)This repository is the `agentic-first` monorepo umbrella. It separates source-agnostic shared code from per-source products, so another source-specific product can be added without touching the Austrian pipeline:
agentic-first/ (this repo)
├── packages/ SHARED — source-agnostic, zero Firmenbuch/UGB knowledge │ ├── core/ (fbl_core) lineage/meta + metric contracts, config, storage clients │ └── auth/ (fbl_auth) signup, token issue/validate, metering, 00_accounts └── products/ └── agentic-firmenbuch/ AUSTRIA product (live) — README below ├── packages/ │ ├── core_at/ (fbl_core_at) UGB taxonomy, Firmenbuch domain models, ÖNACE, FI dirs │ ├── firmenbuch_client, 99_registry, 90_ingest, 70_parse, │ │ 50_consolidate, 30_derive, 10_present, mcp_server, orchestration │ └── … └── tests/ AT integration tests + golden fixtures
Additional source-specific products are added in their own separate repositories that consume packages/{core,auth} as a dependency (they are not scaffolded here). The precise 1:1 / adapt / product-local reuse boundary is the reuse table (Appendix R) of the technical spec, and the generic recipe is in docs/monorepo/ADDING_A_PRODUCT.md.
Product READMEs: agentic-firmenbuch · shared core · auth
90 → 10)99_registry (foundation: all companies) → 90_raw (Blob) → 70_parsed (Blob) → 50_consolidated → 30_derived → 10_presentation → MCP
(Cosmos) (Cosmos) (Cosmos) side: 00_accounts (MCP signup) · 00_directories (register-based FI flag, OeNB) reserved for v2: 40_enriched, 20_scored
`90_raw` is the **immutable source of truth** (every downloaded XML/PDF, kept forever). `70_parsed`
is a write-through cache of the per-filing ParsedFiling JSON – always re-derivable from raw, so safe to drop/rebuild; it exists so a reprocess (re-consolidate/derive after a logic change) skips re-parsing all filings, and so the lineage inputs[] in each consolidated doc resolve to a real parsed document. 50/30/10 are the queryable Cosmos layers; 10_presentation is what the MCP serves.
Each pipeline-stage package directory is prefixed with its layer number so the owner of every data layer is obvious. (Python module names can't start with a digit, so the importable package keeps its fbl_* name; the number is also exposed as a LAYER constant in each stage package.)
All AT stage packages live under products/agentic-firmenbuch/packages/ (abbreviated …/ below).
| Layer | Package (dir) | import | Store / container | Pydantic model | Sample |
|---|---|---|---|---|---|
99_registry | …/99_registry | fbl_registry | Cosmos 99_registry | RegistryDoc | §15a.0 doc |
90_raw | …/90_ingest | fbl_ingest | Blob 90-raw | raw Meta + manifest | Stage 0 |
70_parsed | …/70_parse | fbl_parse | Blob 70-parsed | ParsedFiling | Stage 1 |
| 50_consolidated | …/50_consolidate | `fbl_consolidate
Only the beginning is shown; read the rest in the repo