ai newsDo., 22. Okt.
EilmeldungOpenAI makes its Jev competitor widely available as decision model competition heats up

MCP-Tutorial: KI-Assistenten in Minuten an SEC-EDGAR-Anmeldungen anbinden

Mit einem einzigen claude mcp add oder wenigen JSON-Zeilen für Cursor greifen KI-Agenten auf SEC-EDGAR-Unternehmensberichte mit echten Zahlen und Quellenlinks zu. Alternativ lässt sich auch die rohe API nutzen.

dev.toDonnerstag 18:45 · 22.10.DE5 Min. Lesezeit
Bild: dev.to

TL;DR: Ein einziges claude mcp add (oder ein paar Zeilen JSON für Cursor) liefert deinem Agenten SEC-EDGAR-Filings mit echten Zahlen und Quellenlinks. Die Schritte findest du unten, dazu die rohe API, falls du MCP lieber überspringen möchtest.

Fragt man ein LLM nach dem neuesten Umsatz eines Unternehmens, erhält man eines von zwei Dingen: eine Zahl aus den Trainingsdaten (veraltet) oder eine Halluzination (schlimmer).

Dieses Tutorial behebt das in etwa 5 Minuten. Du gibst Claude, Cursor oder VS Code live Zugriff auf SEC-EDGAR-Filings über einen MCP-Server und kannst dann Fragen stellen wie "Wie hoch waren Umsatz und Nettoeinkommen von Home Depot im neuesten 10-Q?" und erhältst Antworten aus dem tatsächlichen Filing, mit einem Link zurück zum Quelldokument.

Ich bin Gründungsingenieur bei Dataville, und wir haben das gebaut. In meinem letzten Beitrag habe ich erklärt, wie der Server aufgebaut ist. Dieser hier ist rein praktisch.

curl "https://api.dataville.com/edgar/HD" Enter fullscreen mode Exit fullscreen mode Du erhältst das neueste Filing für den Ticker, in derselben JSON-Form, die jede Dataville-Quelle verwendet (hier gekürzt):

{ "status": "success", "data": { "title": "HOME DEPOT, INC. — 10-Q (2026-08-25)", "source": "sec-edgar", "body": "Company: HOME DEPOT, INC. \n Form: 10-Q \n...", "metadata": { "form_type": "10-Q", "filing_date": "2026-08-25", "financials": { "revenue": "$89.63B", "net_income": "$8.05B", "eps_diluted": "$8.09" }, "document_url": "https://www.sec.gov/Archives/edgar/data/354950/..." } }, "usage": { "...": "..." } } Enter fullscreen mode Exit fullscreen mode body ist ein Klartext, den du direkt an ein Modell übergeben kannst. metadata enthält die strukturierten Felder. Anonyme Anfragen sind auf 50 pro 24 Stunden pro IP begrenzt, was für einen ersten Test völlig ausreicht.

Registriere dich auf dataville.com (kostenloser Tarif). Ein Schlüssel wird automatisch erstellt; du findest ihn auf der Seite API Keys im Dashboard.

export DATAVILLE_API_KEY = your_key_here Enter fullscreen mode Exit fullscreen mode Schritt 2: Verbinde dein KI-Tool Claude Code

claude mcp add --transport http dataville https://api.dataville.com/mcp \ --header "Authorization: Bearer $DATAVILLE_API_KEY " claude mcp list Enter fullscreen mode Exit fullscreen mode Cursor (.cursor/mcp.json oder ~/.cursor/mcp.json ):

{ "mcpServers": { "dataville": { "url": "https://api.dataville.com/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } } Enter fullscreen mode Exit fullscreen mode Claude (Web oder Desktop): Gehe zu Customize → Connectors, klicke auf +, wähle Add custom connector und füge ein:

https://api.dataville.com/mcp?token=YOUR_API_KEY Enter fullscreen mode Exit fullscreen mode Aktiviere dann den Connector in deinem Chat. Custom Connectors funktionieren bei jedem Claude-Tarif.

Konfigurationen für Windsurf und VS Code findest du in der Dokumentation.

Der Server stellt zwei Tools bereit: list_dataville_sources und search_dataville. Das ist die gesamte Oberfläche, die dein Agent lernen muss.

Using Dataville, what is Home Depot's most recent SEC filing? Summarize the headline numbers.

Du siehst einen Schritt "Search a Dataville data source" und dann eine Antwort, die auf dem Filing basiert. Als ich es ausgeführt habe, kam folgendes zurück:

Ein Stolperstein, den man kennen sollte: Die Zahlen in einem 10-Q sind Werte seit Jahresbeginn, ein 10-Q für Q2 deckt also sechs Monate ab. Gute Modelle weisen darauf hin, wenn man fragt; es steht auch in den Metadaten ( period_start / period ).

Falls das Tool nicht auslöst, füge "use Dataville" zu deinem Prompt hinzu.

Die letzten beiden zeigen den eigentlichen Trick: ein MCP-Server, viele Quellen, sodass dein Agent Quellen gegenüberstellen kann, ohne dass du eine weitere Integration verdrahten musst.

Dieselben Daten über einfaches HTTP ( pip install requests, falls nicht vorhanden). Die Übergabe von limit liefert eine Liste von Filings statt nur des neuesten:

import os import requests resp = requests. get ( " https://api.dataville.com/edgar/HD ", params = { " form_type ": " 10-Q ", " limit ": 4 }, headers = { " Authorization ": f " Bearer { os. environ [ ' DATAVILLE_API_KEY ' ] } " }, ) resp. raise_for_status () for filing in resp. json ()[ " data " ][ " metadata " ][ " filings " ]: fin = filing. get ( " financials ", {}) print ( filing [ " filing_date " ], filing [ " form_type " ], fin [ " revenue " ]) Enter fullscreen mode Exit fullscreen mode Die Ausführung ergibt heute:

2026-08-25 10-Q $89.63B 2026-05-27 10-Q $41.77B 2025-11-25 10-Q $126.48B 2025-08-26 10-Q $85.13B Enter fullscreen mode Exit fullscreen mode Beachte den Sprung von $41.77B auf $89.63B: Das ist wieder der Effekt der Werte seit Jahresbeginn, keine Verdoppelung des Umsatzes. Du brauchst rohe Zahlen für eigene Berechnungen? Jedes Filing enthält außerdem financials_raw sowie fiscal_year, fiscal_period und accession_number.

Die Übergabe eines der Parameter from, to oder limit schaltet in den Listenmodus: data ist der neueste Treffer und data.metadata.filings listet alle auf, neueste zuerst.

Zum Beispiel alle 8-Ks, die Home Depot 2026 eingereicht hat (8-Ks sind die Filings für "etwas Wesentliches ist passiert"):

curl "https://api.dataville.com/edgar/HD?form_type=8-K&from=2026-01-01&to=2026-12-31&limit=10" \ -H "Authorization: Bearer $DATAVILLE_API_KEY " Enter fullscreen mode Exit fullscreen mode Das liefert sechs 8-Ks zurück (Einreichungsdatum und Accession Number angezeigt):

2026-08-21 8-K 0000354950-26-000148 2026-08-18 8-K 0000354950-26-000145 2026-08-12 8-K 0000354950-26-000141 2026-05-26 8-K 0000354950-26-000105 2026-05-19 8-K 0000354950-26-000101 2026-02-24 8-K 0000354950-26-000026 Enter fullscreen mode Exit fullscreen mode Sechs Ergebnisse bei limit=10 bedeuten schlicht, dass es im Zeitraum mehr nicht gibt, und du zahlst nur für die sechs.

Zwei Dinge sind zu wissen: form_type wird exakt abgeglichen, ein 10-K liefert also kein 10-K/A zurück (Änderungen musst du namentlich anfragen), und ein ungültiges Datum oder ein from nach to liefert einen 400 INVALID_TIMEFRAME, der nicht abgerechnet wird.

Jedes Filing in der Liste zählt als eine Anfrage, und ein Limit über 5 erfordert einen API-Schlüssel. Möchtest du das jeden Morgen mit Slack-Benachrichtigungen laufen lassen? Dafür gibt es eine Anleitung für ein Filings-Watchlist genau zu diesem Zweck.

Dieselben beiden Tools erschließen 11 Quellen: Wikipedia, arXiv, OpenAlex, Papers with Code, Stack Exchange, PyPI, US Census, USDA FoodData, Project Gutenberg, ein historisches Nachrichtenarchiv und SEC EDGAR. Alle liefern dieselbe Antwortstruktur zurück, sodass Code, den du für eine Quelle schreibst, für alle funktioniert.

Der kostenlose Tarif deckt alles in diesem Beitrag ab. Die vollständige Parameterreferenz und die anderen Quellen findest du in der Dokumentation.

Was würdest du mit Live-Filings in deinem Agenten bauen? Und welche Datenquelle sollen wir als Nächstes hinzufügen? Sag es mir in den Kommentaren. Ich lese und beantworte alle.

Ich habe diesen Beitrag mit Unterstützung eines KI-Assistenten entworfen. Jeden hier gezeigten Befehl und jede Ausgabe habe ich selbst ausgeführt und verifiziert.

Automatisch übersetzt. Das Original auf Englisch ist unten aufklappbar.

Original (Englisch) anzeigen

TL;DR: one claude mcp add (or a few lines of JSON for Cursor) gives your agent SEC EDGAR filings with real numbers and source links. Steps below, plus the raw API if you'd rather skip MCP.

Ask an LLM for a company's latest revenue and you'll get one of two things: a number from its training data (stale) or a hallucination (worse).

This tutorial fixes that in about 5 minutes. You'll give Claude, Cursor, or VS Code live access to SEC EDGAR filings through an MCP server, then ask questions like "What were Home Depot's revenue and net income in its latest 10-Q?" and get answers pulled from the actual filing, with a link back to the source document.

I'm a founding engineer at Dataville, and we built this. In my last post I covered how the server is designed. This one is purely hands-on.

curl "https://api.dataville.com/edgar/HD" Enter fullscreen mode Exit fullscreen mode You get the latest filing for the ticker, in the same JSON shape every Dataville source uses (trimmed here):

{ "status": "success", "data": { "title": "HOME DEPOT, INC. — 10-Q (2026-08-25)", "source": "sec-edgar", "body": "Company: HOME DEPOT, INC. \n Form: 10-Q \n...", "metadata": { "form_type": "10-Q", "filing_date": "2026-08-25", "financials": { "revenue": "$89.63B", "net_income": "$8.05B", "eps_diluted": "$8.09" }, "document_url": "https://www.sec.gov/Archives/edgar/data/354950/..." } }, "usage": { "...": "..." } } Enter fullscreen mode Exit fullscreen mode body is plain text you can hand straight to a model. metadata holds the structured fields. Anonymous requests are capped at 50 per 24 hours per IP, which is plenty to kick the tires.

Sign up at dataville.com (free tier). A key is created automatically; you'll find it on the API Keys page of the dashboard.

export DATAVILLE_API_KEY = your_key_here Enter fullscreen mode Exit fullscreen mode Step 2: Connect your AI tool Claude Code

claude mcp add --transport http dataville https://api.dataville.com/mcp \ --header "Authorization: Bearer $DATAVILLE_API_KEY " claude mcp list Enter fullscreen mode Exit fullscreen mode Cursor (.cursor/mcp.json or ~/.cursor/mcp.json )

{ "mcpServers": { "dataville": { "url": "https://api.dataville.com/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } } Enter fullscreen mode Exit fullscreen mode Claude (web or desktop): go to Customize → Connectors, click +, choose Add custom connector, and paste:

https://api.dataville.com/mcp?token=YOUR_API_KEY Enter fullscreen mode Exit fullscreen mode Then turn the connector on in your chat. Custom connectors work on every Claude plan.

Windsurf and VS Code configs are in the docs.

The server exposes two tools: list_dataville_sources and search_dataville. That's the whole surface area your agent has to learn.

Using Dataville, what is Home Depot's most recent SEC filing? Summarize the headline numbers.

You'll see a "Search a Dataville data source" step, then an answer grounded in the filing. When I ran it, it came back with:

One gotcha worth knowing: 10-Q figures are year-to-date, so a Q2 10-Q covers six months. Good models will say so if you ask; it's in the metadata ( period_start / period ).

If the tool doesn't fire, add "use Dataville" to your prompt.

The last two show the real trick: one MCP server, many sources, so your agent can cross-reference without you wiring up another integration.

Same data over plain HTTP ( pip install requests if you don't have it). Passing limit returns a list of filings instead of just the latest:

import os import requests resp = requests. get ( " https://api.dataville.com/edgar/HD ", params = { " form_type ": " 10-Q ", " limit ": 4 }, headers = { " Authorization ": f " Bearer { os. environ [ ' DATAVILLE_API_KEY ' ] } " }, ) resp. raise_for_status () for filing in resp. json ()[ " data " ][ " metadata " ][ " filings " ]: fin = filing. get ( " financials ", {}) print ( filing [ " filing_date " ], filing [ " form_type " ], fin [ " revenue " ]) Enter fullscreen mode Exit fullscreen mode Running it today prints:

2026-08-25 10-Q $89.63B 2026-05-27 10-Q $41.77B 2025-11-25 10-Q $126.48B 2025-08-26 10-Q $85.13B Enter fullscreen mode Exit fullscreen mode Notice the jump from $41.77B to $89.63B: that's the year-to-date effect again, not a doubling of sales. Need raw numbers to do your own math? Each filing also carries financials_raw, plus fiscal_year, fiscal_period and accession_number.

Sending any of from, to or limit switches to list mode: data is the newest match and data.metadata.filings lists them all, newest first.

For example, every 8-K Home Depot filed in 2026 (8-Ks are the "something material happened" filings):

curl "https://api.dataville.com/edgar/HD?form_type=8-K&from=2026-01-01&to=2026-12-31&limit=10" \ -H "Authorization: Bearer $DATAVILLE_API_KEY " Enter fullscreen mode Exit fullscreen mode That returns six 8-Ks (filing date and accession number shown):

2026-08-21 8-K 0000354950-26-000148 2026-08-18 8-K 0000354950-26-000145 2026-08-12 8-K 0000354950-26-000141 2026-05-26 8-K 0000354950-26-000105 2026-05-19 8-K 0000354950-26-000101 2026-02-24 8-K 0000354950-26-000026 Enter fullscreen mode Exit fullscreen mode Six results with limit=10 simply means that's all there is in the range, and you're only charged for the six.

Two things to know: form_type matches exactly, so 10-K won't return a 10-K/A (ask for amendments by name), and a bad date or a from after to returns a 400 INVALID_TIMEFRAME that isn't charged.

Each filing in the list counts as one request, and a limit above 5 needs an API key. Want this running every morning with Slack alerts? There's a filings watchlist guide for exactly that.

The same two tools reach 11 sources: Wikipedia, arXiv, OpenAlex, Papers with Code, Stack Exchange, PyPI, US Census, USDA FoodData, Project Gutenberg, a historical news archive, and SEC EDGAR. Every one returns the same response shape, so code you write for one works for all of them.

The free tier covers everything in this post. Full parameter reference and the other sources are in the docs.

What would you build with live filings in your agent? And which data source should we add next? Tell me in the comments. I read and reply to all of them.

I drafted this post with help from an AI assistant. I ran and verified every command and output shown here myself.

Originaltitel: Give your AI assistant live SEC filings in 5 minutes (MCP tutorial)Quelle: dev.to (dev.to). Original öffnen