ARES Explorer
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ARES ExplorerShow company ties for ICO 24130222."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ARES Explorer π¨πΏ β MCP App
What is this? An MCP App that turns the Czech business register (ARES) into an interactive relationship graph. Ask Claude about a company and a force-directed graph of its management and ownership ties renders right in the chat β then click any company node to expand it live and watch the network grow. Built with the MCP Apps SDK, a serverless MCP endpoint (
mcp-handleron Vercel), and D3.
How to use it in Claude
This is not a website you click on β it's an MCP App connector. You don't open it in a browser; you add it to Claude as a custom connector and then talk to it in chat.
Connector endpoint:
https://ares-explorer-mcp.vercel.app/api/mcpMind the /api/mcp path β that exact path is the MCP endpoint (Streamable HTTP). Opening the URL in a browser shows nothing useful; it's an MCP server, not a web page. The bare domain or any other path won't work as a connector.
Connect it (one-time):
Open Claude on web or desktop β Settings β Connectors.
Click Add custom connector.
Paste
https://ares-explorer-mcp.vercel.app/api/mcpand confirm.
Requires a paid Claude plan (Pro / Max / Team). Custom connectors are not available on the free plan.
Harmless sign-in warning. While adding the connector, Claude may show an OAuth / sign-in message such as "Couldn't register with sign-in service." It's safe to ignore β just dismiss it. The server is public and needs no login, and the tools load regardless.
Try it. Once connected, ask in chat:
βUkaΕΎ graf vazeb firmy s IΔO 24130222." (Show the relationship graph for the company with IΔO 24130222.) β then click company nodes and the graph grows live.
βVykresli vlastnickou strukturu firmy s IΔO 27604977." (Draw the ownership structure of the company with IΔO 27604977.)
βNajdi firmu Seznam.cz a ukaΕΎ jejΓ vazby." (Find the company Seznam.cz and show its ties.)
Related MCP server: Supermemory MCP
What it is
ARES Explorer is an MCP App that takes the open data of the Czech ARES register and builds an interactive graph of a company's ties β its statutory body, members/owners, and connected companies β rendering it directly inside Claude. It isn't just a static picture: company nodes are clickable and the graph grows live as the app calls back to the server (the "bidirectional loop" of MCP Apps).
Type something like βUkaΕΎ mi vazby firmy s IΔO 24130222." (Show me the relationships of the company with IΔO 24130222.) and you get a canvas where you can explore the ownership and personnel structure by clicking.
Why it's interesting
An MCP App, not just a tool. Most MCP servers return text. Here a full UI runs in a sandbox and initiates further tool calls on its own based on what the user does. Click a node β
app.callServerTool("expand-node")β new data is merged into the graph.Real open data. No mocks β the server talks live to the public ARES REST API.
Tolerant parser. The VR (veΕejnΓ½ rejstΕΓk, public register) JSON is deeply nested and varies by legal form. The parser therefore walks the record recursively and pulls out anything that looks like a person (
jmeno+prijmeni) or a connected company (ico+obchodniJmeno), inferring the role (jednatel, spoleΔnΓk, β¦) from context. Resilient to schema changes.
What it looks like

The expanded graph (55 nodes Β· 59 ties). The inspector lists the statutory-body members (Δlen statutΓ‘rnΓho orgΓ‘nu) of the selected company, Corporate Consulting a.s., each with a deep link out to ARES.

Click a person node for its detail: RenΓ© Sommer, born 1966, sits on the supervisory board (Δlen dozorΔΓ rady) of Kofola ΔeskoSlovensko a.s.
Companies = amber rounded square, people = teal circle (distinguished by both shape and color).
A node with
+can be expanded. The side inspector shows detail, ties, and a link out to ARES.The toolbar lets you paste any IΔO to attach another company to the graph.
Architecture
βββββββββββββββββββββββββββββ MCP host (Claude) βββββββββββββββββββββββββββββ
β β
β company-graph(ico) sandboxed iframe (ui://) β
β β tool result (GraphData) ββββββββββββββββββββββββββββββββ β
β βΌ ββββββββββββββββββββββββββββΆ β D3 force graph β β
β βββββββββββββββ β node click ββββ β β
β β /api/mcp β βββ expand-node(ico) ββββ βββββββββββββββ callServerToolβ
β β (serverless)β ββββ GraphData βββββββββΆβ merge β graph grows β β
β ββββββ¬βββββββββ ββββββββββββββββββββββββββββββββ β
β β fetch β
ββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βΌ
ARES REST API (ares.gov.cz)
β’ /ekonomicke-subjekty/{ico} β base record
β’ /ekonomicke-subjekty-vr/{ico} β public register (ties)
β’ /ekonomicke-subjekty/vyhledat β search by nameServer tools
Tool | UI? | What it does |
| no | Najde firmy podle nΓ‘zvu, vrΓ‘tΓ IΔO. |
| yes | OtevΕe interaktivnΓ graf vazeb (IΔO nebo nΓ‘zev). |
| no | VrΓ‘tΓ podgraf jednΓ© firmy β volΓ‘ appka pΕi rozkliknutΓ uzlu. |
Tool titles and descriptions are intentionally kept in Czech β the app and its data are Czech, so this is how they read to both the user and the model.
The data contract (src/types.ts) is shared by the server and the UI, keeping both sides in sync. The UI never talks to ARES itself β it only renders GraphData and asks the server to expand nodes.
Architecture decision: from Express to serverless
The first version ran as a long-lived Express process exposing the MCP server over Streamable HTTP. It was rewritten as a single Vercel serverless function via mcp-handler's createMcpHandler (app/api/mcp/route.ts). Streamable HTTP is the recommended MCP transport, so a stateless request/response function maps onto it cleanly β there's no socket to keep alive, and the platform autoscales with load. Vercel's Fluid compute keeps instances warm and reuses them across invocations, avoiding the cold-start lag of sleeping free-tier processes while still scaling down when idle. The one build artifact the function depends on β the app's UI HTML β is inlined into the bundle at build time, so there's no runtime filesystem dependency in the serverless environment.
Tech stack
TypeScript (server and UI), strict mode
@modelcontextprotocol/ext-appsβ MCP Apps SDK (server helpers + clientAppclass)@modelcontextprotocol/sdkβ MCP server + Streamable HTTP transportmcp-handler+ Next.js App Router β MCP over a single serverless function (app/api/mcp/route.ts), no long-lived processzod β tool input validation
D3 (force-directed graph, zoom/pan, drag)
Vite +
vite-plugin-singlefileβ the UI is bundled into one HTML file that the build inlines directly into the serverless function (no external origins β simple CSP)
Running locally
You need Node.js 20+.
npm install # .npmrc sets legacy-peer-deps (see "Deploy to Vercel")
npm run dev # vite build β inline UI into the function β next devThe MCP endpoint then runs at http://localhost:3000/api/mcp (Streamable HTTP, POST).
Other scripts:
npm run build # production build: vite + inline + next build
npm run typecheck # tsc --noEmit
npm test # unit tests for the ties parser (no network)Both
npm run devandnpm run buildfirst bundle the UI with Vite intodist/ares-explorer.html, thenscripts/inline-html.mjsembeds it as a string intoapp/api/mcp/ares-explorer-html.ts. The serverless function therefore has no runtime filesystem dependency β the HTML is part of the bundle.
To wire a local or self-hosted instance into Claude, follow How to use it in Claude but paste your own β¦/api/mcp URL. For host-free local debugging, you can also drive the app with basic-host from the ext-apps repo.
Deploy to Vercel
The project is an API-only Next.js app β the only route is the MCP endpoint app/api/mcp/route.ts, which serves Streamable HTTP via mcp-handler. No long-lived process, no state between requests.
Via the dashboard: import the repo at vercel.com/new. The framework (Next.js) and build are detected automatically from vercel.json; nothing needs to be configured by hand. After deploy, the endpoint lives at https://<project>.vercel.app/api/mcp.
Via the CLI:
npm i -g vercel
vercel # preview deploy
vercel --prod # production deployWhat's wired up for deployment:
vercel.jsonβframework: nextjs,buildCommand: npm run build(runs vite build β inline HTML β next build), andmaxDuration: 60 sfor the/api/mcpfunction..npmrcwithlegacy-peer-deps=trueβmcp-handler@1.1.0pins its@modelcontextprotocol/sdkpeer to exactly1.26.0, whereasext-appsrequires^1.29.0. The APIs in use (McpServer+ Streamable HTTP transport) are stable across those versions, so we stay on1.29.x. Vercel reads this file at install time too, so the same resolution applies in CI.Inlined HTML β the app's UI is embedded straight into the function at build time (see above), so the serverless environment never needs to read
dist/from disk.
After deploying, add https://<project>.vercel.app/api/mcp as a custom connector in Claude (see How to use it in Claude).
Project structure
ares-explorer-mcp/
βββ app/
β βββ api/mcp/
β βββ route.ts # MCP endpoint: createMcpHandler β tools + UI resource
β βββ ares-explorer-html.ts # build-generated (gitignored): inlined UI HTML
βββ scripts/
β βββ inline-html.mjs # embeds dist/ares-explorer.html into the function as a string
βββ ares-explorer.html # app entry HTML (inline styles)
βββ src/
β βββ types.ts # shared data contract (GraphData β¦)
β βββ ares.ts # ARES REST client + tolerant ties parser
β βββ mcp-app.ts # UI: D3 force graph, node expansion
βββ test/
β βββ graph.test.ts # parser unit tests (fixtures, no network)
βββ vercel.json # Vercel: framework, build, maxDuration
βββ next.config.mjs
βββ vite.config.ts
βββ tsconfig.json
βββ package.jsonNotes & limits
ARES data is for information only and has no character of an official document (see the ARES terms). The API is rate-limited to 500 requests/min.
The parser covers the most common forms (s.r.o., a.s., spolek). For exotic structures some ties may be missing β it deliberately omits rather than guesses. The logic is covered by unit tests.
Subjects with no VR record (e.g. some sole traders / OSVΔ) show up as a standalone node with no ties.
Graph depth is capped (~80 ties per record) to stay readable; deeper levels are filled in by expanding nodes.
License
MIT β see LICENSE.
Data: Β© ARES / Ministry of Finance of the Czech Republic, provided as open data.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/duzidavid/ares-explorer-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server