ffd-mcp
Click on "Deploy 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., "@ffd-mcp Get the fee exhibit for Apple's latest S-1 filing"
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.
SEC EDGAR Filing Fee Disclosure MCP Server
MCP server for SEC EDGAR Exhibit 107 filing fee disclosure analysis.
Parses ffd: XBRL from registration statements (S-1, S-3, 424B, F-1, etc.) and returns structured fee data through the Model Context Protocol. No API keys required — SEC EDGAR is a free, public API.
7 Tools • 2 Resources • 1 Prompt • STDIO & Streamable HTTP
Tools
Tool | Description |
| Fetch and parse a specific Exhibit 107 by accession number + CIK. Returns every security class, fee amounts, fee rate, and net fee due. |
| Find a company's recent registration filings that contain Exhibit 107 fee disclosures. Resolves tickers, names, or CIKs automatically. |
| Fetch and parse all Exhibit 107 fee exhibits for a company in one call. Returns per-filing fee tables plus grand totals. |
| Compare filing fee data across 2-8 companies side by side — latest form, total offering, net fee due, and fee rate. |
| Full-text search across all EDGAR filings since 1993, scoped to registration statements. Supports phrases, boolean operators, and wildcards. |
| Get a company's complete ffd: filing fee history by merging the EDGAR companyfacts API (fast, no lag — covers 424B/S-3/S-8) with Exhibit 107 document parsing (covers S-1/F-1 filings that companyfacts doesn't index). |
| Query fee data and save as CSV. Three modes: |
get_fee_exhibit
Parse a specific Exhibit 107 (EX-FILING FEES) from an SEC filing.
Requires
accession_numberandcikOptionally provide the
exhibit_filenamefor faster parsing, or let the server auto-detect it from the filing indexReturns all ffd: XBRL concepts: every security class, max aggregate offering, fee amounts, fee rate, and net fee due
Includes retry logic for filings within the 24-48h EDGAR indexing lag window
search_fee_filings
Find a company's recent registration statement filings.
Accepts ticker symbols (
RDDT), company names (Reddit), or CIK numbersDefaults to all registration forms: S-1, S-3, S-4, F-1, F-3, F-4, F-6, 424B series, SC TO, PREM14A, DEFM14A, POS AM, S-8
Returns accession numbers, form types, filing dates, and EDGAR URLs
Surfaces a recency warning when results fall within the EDGAR indexing lag window
get_company_fee_history
Batch-parse all fee exhibits for a company across multiple filings.
Parses up to 10 filings in a single call (configurable via
limit)Returns the full structured fee table for each filing plus grand totals
Filterable by form type and start date
compare_fee_rates
Side-by-side comparison of fee data for 2-8 companies.
Shows the latest registration form, total offering, net fee due, and fee rate for each company
Useful for benchmarking offering sizes across a peer set
search_filings_by_fee
Full-text search across all EDGAR filing documents, scoped to registration statements.
Find companies that registered a specific security type, used a specific fee rule (e.g. Rule 457(o)), or mentioned specific terms
Supports exact phrases, boolean operators (AND/OR/NOT), and wildcards
get_ffd_concepts_by_company
Complete fee history from two complementary data sources:
Phase 1 — companyfacts API (fast, no indexing lag): Returns ffd: XBRL facts for 424B prospectus supplements, S-3/A, and S-8 employee plans
Phase 2 — Exhibit 107 parsing (backfills the gap): Scans submissions for S-1/F-1 filings that the companyfacts API doesn't index, then fetches and parses each Exhibit 107
Every entry is tagged with
source: "companyfacts"orsource: "exhibit107"Optionally filter by specific ffd concepts (
FeeAmt,NetFeeAmt, etc.) or form types
export_fee_data
Query SEC fee data and save the results as a CSV file.
fee_historymode — one row per filing with summary totals: accession number, form type, filing date, total offering, total fee, net fee due, fee rate, security class countline_itemsmode — one row per security class across all filings: security type, class title, fee calculation rule, amount registered, price per unit, max aggregate offering, fee rate, fee amountffd_conceptsmode — one row per ffd: XBRL fact entry from the hybrid companyfacts + Exhibit 107 source: concept tag, label, value, unit, form, filing date, accession, source tagWrites to
output_pathif provided, otherwise defaults to./<TICKER>_<mode>.csvFilterable by form type and max filing count
Example prompts:
"Export Tesla's filing fee history as a CSV"
"Save Goldman Sachs' complete ffd data to C:\Users\me\Desktop\GS_fees.csv"
"Export the line-item breakdown for all of Reddit's S-1 filings"
CSV columns by mode:
Mode | Columns |
|
|
|
|
|
|
Related MCP server: EdgarTools MCP
Resources
URI | Description |
| Complete ffd: XBRL concept reference for Exhibit 107 — per-row and summary-level concepts, fee calculation rules, and historical SEC fee rates |
| Registration form types that require Exhibit 107 — S-1, S-3, F-1, 424B series, merger proxies, with key dates |
Prompts
Prompt | Description |
| Guides structured analysis of a company's Exhibit 107 fee disclosures — identify the filing, parse the fee table, analyze the fee structure, and summarize |
Getting started
Prerequisites
Node.js v20 or higher
Install from source
git clone https://github.com/davidtauriello/ffd-mcp.git
cd ffd-mcp
npm install
npm run buildRun locally (stdio)
EDGAR_USER_AGENT="YourApp you@email.com" npm startRun locally (HTTP)
EDGAR_USER_AGENT="YourApp you@email.com" MCP_TRANSPORT_TYPE=http npm start
# Server listens at http://localhost:3010/mcp
# Health check at http://localhost:3010/healthClient configuration
Claude Desktop (stdio)
Add to claude_desktop_config.json:
{
"mcpServers": {
"filing-fee-mcp": {
"command": "node",
"args": ["/path/to/ffd-mcp/dist/index.js"],
"env": {
"EDGAR_USER_AGENT": "YourApp you@email.com"
}
}
}
}Claude Code
claude mcp add filing-fee-mcp -- node /path/to/ffd-mcp/dist/index.jsMicrosoft Copilot
Add to mcp.json:
{
"servers": {
"Filing Fee MCP": {
"type": "stdio",
"command": "node",
"args": [
"/path/to/ffd-mcp/dist/index.js"],
"env": {"EDGAR_USER_AGENT" : "YourApp you@email.com"}
}
},
"inputs": []
}Set EDGAR_USER_AGENT in your environment.
Any MCP client (Streamable HTTP)
Point any client that supports Streamable HTTP at http://your-server:3010/mcp.
Docker
Build and run
docker build -t filing-fee-mcp .
docker run -d -p 3010:3010 -e EDGAR_USER_AGENT="YourApp you@email.com" filing-fee-mcpThe container defaults to HTTP transport on port 3010. Override the port with -e MCP_HTTP_PORT=8080 -p 8080:8080.
CSV export from Docker
The export_fee_data tool writes CSV files inside the container. Mount a volume to make them accessible on the host:
docker run -d -p 3010:3010 -e EDGAR_USER_AGENT="YourApp you@email.com" -v $(pwd)/exports:/app/exports filing-fee-mcpThen use output_path: "/app/exports/GS_fees.csv" and the file appears in ./exports/ on the host.
Health check
curl http://localhost:3010/health
# {"status":"ok","server":"filing-fee-mcp-server","version":"1.0.0"}Configuration
Variable | Required | Default | Description |
| Yes | — | User-Agent header for SEC compliance. Format: |
| No |
| Max requests/second to SEC APIs. Do not exceed 10. |
| No |
| Seconds to cache the company tickers lookup file. |
| No |
| Transport mode: |
| No |
| HTTP server port (only used when transport is |
Project structure
src/
index.ts # Server entry point (McpServer + transport)
config/
server-config.ts # Environment variable parsing (Zod)
services/edgar/
edgar-client.ts # Rate-limited SEC EDGAR HTTP client
fee-exhibit-parser.ts # Exhibit 107 iXBRL/HTML parser
fee-exhibit-service.ts # Orchestrates client + parser
types.ts # Domain types
mcp-server/
tools/definitions/
get-fee-exhibit.ts # Parse a specific Exhibit 107
search-fee-filings.ts # Find registration filings
get-company-fee-history.ts # Batch-parse fee exhibits
compare-fee-rates.ts # Cross-company comparison
search-filings-by-fee.ts # Full-text search
get-ffd-concepts-by-company.ts # Hybrid companyfacts + parsing
export-fee-data.ts # CSV export
resources/definitions/
fee-taxonomy.ts # ffd: XBRL concept reference
form-types.ts # Registration form types
prompts/definitions/
fee-disclosure-analysis.ts # Guided analysis promptHow it works
Exhibit 107
Since February 2022, the SEC requires all registration statement filers to include Exhibit 107 (EX-FILING FEES) — a machine-readable inline XBRL document disclosing every security class, offering amount, fee calculation rule, fee rate, and net fee due.
This server parses those exhibits using regex-based extraction of ffd: namespace XBRL facts from the iXBRL HTML. It handles both inline XBRL (<ix:nonNumeric>, <ix:nonFraction>) and standalone XML (<ffd:Tag>) formats, with a fallback HTML table parser for non-XBRL exhibits.
EDGAR indexing lag
EDGAR's submissions API lists new filings immediately, but the per-document index and full-text search can lag 24-48 hours behind acceptance. This server handles the gap with:
Retry logic: When a document index returns empty for a filing within the 48h window, retries up to 3 times with increasing delays
Recency warnings: Tools surface an advisory when results touch the lag window
Companyfacts fast path: The
get_ffd_concepts_by_companytool reads from the companyfacts API (no lag) for 424B/S-3/S-8 filings, falling back to document parsing only for S-1/F-1 filings
License
Apache 2.0. See LICENSE.
Available Tools
7 toolscompare_fee_ratesA
Compare Exhibit 107 filing fee data across 2-8 companies side by side. Shows the latest registration form, total offering, net fee due, and fee rate for each company. Note: SEC fee rates are uniform — differences reflect rounding or alternate calculation rules.
Inputs: companies (required).
export_fee_dataA
Query SEC fee data and save it as a CSV file. Three modes: "fee_history" (one row per filing with summary totals), "line_items" (one row per security class across all filings), "ffd_concepts" (one row per ffd: XBRL fact from companyfacts + parsed exhibits). Writes to the specified output_path or defaults to ./_.csv. The CSV text is also returned in structuredContent.csvText so callers can reconstruct the file locally without depending on the server's filesystem.
Inputs: mode (required), company (required), limit, form_types, +1 more.
get_company_fee_historyA
Fetch and parse all Exhibit 107 fee exhibits for a company across multiple filings in one call. Returns the full structured fee table for each filing plus grand totals. Best for understanding a company's full offering history and total fees paid. Slower than get_fee_exhibit since it fetches and parses multiple documents.
Inputs: company (required), limit, form_types, start_date.
get_fee_exhibitA
Fetch and parse a specific Exhibit 107 (EX-FILING FEES) from an SEC filing. Returns all ffd: XBRL concepts: every security class, max aggregate offering, fee amounts, fee rate, and net fee due. Requires accession_number + cik. Provide the exhibit document filename for faster parsing, or let the server auto-detect it.
Inputs: cik (required), accession_number (required), exhibit_filename.
get_ffd_concepts_by_companyA
Get a company's complete ffd: filing fee history by merging two sources: (1) the EDGAR companyfacts API for 424B/S-3/S-8 filings (fast, no lag), and (2) Exhibit 107 document parsing for S-1/F-1 filings that companyfacts doesn't index. Returns all fee-related facts (FeeAmt, NetFeeAmt, TtlOfferingAmt, FeeRate, etc.) across every form type. Each entry is tagged with its source. Use get_fee_exhibit when you need the full per-security-class line-item breakdown for a single filing.
Inputs: company (required), limit, concepts, form_types.
search_fee_filingsA
Find a company's recent registration statement filings that contain Exhibit 107 fee disclosures. Returns accession numbers, form types, filing dates, and EDGAR URLs. Use the results to call get_fee_exhibit for full fee table parsing. Resolves tickers, company names, or CIK numbers automatically.
Inputs: company (required), limit, form_types.
search_filings_by_feeA
Full-text search across all EDGAR filing documents since 1993, scoped to registration statements. Use to find all companies that registered a specific security type, used a specific rule (e.g. 457(o)), or mention specific terms in their fee exhibits. Supports phrases, boolean operators, and wildcards.
Inputs: query (required), forms, limit, end_date, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Tools are mostly distinct, but get_company_fee_history and get_ffd_concepts_by_company both provide fee history for a company, which could cause selection confusion. All other tools have clear boundaries.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_fee_exhibit, search_fee_filings, export_fee_data), making the API predictable and easy to navigate.
Seven tools are well-scoped for the domain of SEC fee data, covering all key workflows without being overwhelming. Each tool serves a clear purpose, and none feel redundant.
The set covers discovery (search_fee_filings, search_filings_by_fee), extraction (get_fee_exhibit, get_ffd_concepts_by_company), comparison (compare_fee_rates), historical analysis (get_company_fee_history), and export (export_fee_data). There are no obvious gaps for the stated purpose.
Maintenance
Related MCP Connectors
SEC EDGAR company lookup, filings, XBRL financials and filing text. Pay per call in USDC via x402.
Extract structured SEC EDGAR company facts, CIK lookups, and regulatory financial filings.
Cross-model evidence pipeline for financial filings & contracts. x402 pay-per-call.
Primary-source SEC filing intelligence and financial/disclosure reconciliation for AI agents.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceEnables deep analysis of SEC EDGAR filings through universal company search, document content extraction, and advanced filing search capabilities. Provides AI-ready access to business descriptions, risk factors, financial statements, and full-text search across any public company's SEC documents.-
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to download, parse, and analyze SEC EDGAR filings, including 10-K/Q reports, XBRL financial statements, and insider trading data. It provides structured access to institutional holdings, corporate events, and financial facts for comprehensive investment research.19MIT
- FlicenseNot gradedqualityDmaintenanceProvides AI assistants direct access to SEC EDGAR filing data — financials, filings, and filing text — with no API key required.-

hub-equity-mcpofficial
AlicenseAqualityCmaintenanceStandardizes XBRL financial data from US SEC and European ESEF filings for LLM agents, enabling querying normalized financial facts like revenue and total assets across issuers and taxonomies.2133 PyPIApache 2.0