edgar-mcp
edgar-mcp
一个 MCP 服务器,让 Claude 可以搜索 SEC 申报文件的全文。
向 Claude 提问 "今年有哪些公司在 10-K 中讨论了 agentic AI?" 它就会直接搜索 EDGAR——返回 235 份真实申报文件,并附上链接。
https://github.com/user-attachments/assets/afa2e1e5-ee79-42ad-a736-6f016b8f6c64
最棘手的问题
EDGAR 通过 CIK 进行筛选,CIK 是一个十位数字标识符,对人类毫无意义,但对 API 来说却至关重要。最直观的设计是:以 CIK 作为工具参数,让模型来提供它。但这种设计会以最糟糕的方式失败——语言模型会对任何它没记住的公司都信心十足地编造一个 CIK,而错误公司的申报文件看起来与正确公司的申报完全一样:格式正确、貌似合理,却彻头彻尾地错了,且没有任何线索来提醒出错。因此,这些工具接收股票代码或公司名称,并在代码中依据 SEC 自己的映射表来解析。当名称存在歧义时——"American" 匹配到 66 家公司——解析器会返回候选列表,而不是选一个最佳匹配,由 Claude 询问用户想要哪个。模型在上下文中处理容易判断的情形;对于难以判断的情形,代码会兜住。
Related MCP server: Aegis Gov SEC Filings MCP
安装
npm install -g @alinarashid/edgar-mcp在 claude_desktop_config.json 中添加:
{
"mcpServers": {
"edgar": {
"command": "npx",
"args": ["-y", "@alinarashid/edgar-mcp"],
"env": {
"SEC_USER_AGENT": "your-app your@email.com"
}
}
}
}SEC_USER_AGENT 为必填。SEC 会拒绝不标识请求方的请求,缺少该请求头时会返回 403,而不是一个空的查询结果。
重启 Claude Desktop。
工具
search_filings — 对自 2001 年以来的所有申报文件进行全文搜索。可按申报类型、日期范围、公司进行过滤。返回申报公司、申报类型、日期和文档链接。
list_company_filings — 一家公司的全部申报文件,最新的在前。接收股票代码或公司名称。要按申报类型过滤,否则你会看到大部分都是 Form 4 内幕交易。
示例
今年哪些公司在 10-K 申报文件中提到了 "agentic AI"?
显示 American Airlines 最近的季度报告。
查找 2026 年提到 "material weakness" 的 8-K 申报文件。
已知限制
搜索返回的是元数据,不是申报文件正文。 它只告诉你哪些申报文件匹配,而不是文件说了什么。请访问返回的 URL 阅读原文。
排名依据是关键词相关度,而不是公司规模。 一份多次出现某个词句的小文档,可能排在重量级大公司一遍又一遍提及吗?不,"它只会压过那一份"——排名只按相关度。
搜索只在上市公司上做。 私营公司不会向 SEC 申报任何文件。
按公司搜索会一并包含第三方的申报文件。 比如以该 CIK 代表外提交的股东提案。
说明
efts.sec.gov 上的全文搜索端点是未公开的——SEC 既未公开参数列表、响应模式,也没有任何会保持稳定的承诺。本包解析采用防御性设计,如果返回格式出现变化,可能需要更新。
请求按大约每秒 8 条的速率串行发送,低于 SEC 公布的 10 条每秒上限。
许可证
MIT
Available Tools
2 toolslist_company_filingsList a company's SEC filingsA
List filings a specific public company submitted, newest first. Use when the user names a company and wants its recent reports rather than searching for particular words. Accepts a ticker or company name and resolves it internally. Companies file constantly, mostly routine insider-trading forms, so filter by form type unless the user wants everything.
| Name | Required | Description | Default |
|---|---|---|---|
| forms | No | Optional but recommended, e.g. ["10-K", "10-Q"]. Without it you mostly get Form 4 insider filings. | |
| limit | No | How many filings to return. Defaults to 10. | |
| company | Yes | Ticker ("AAPL") or company name ("Apple Inc."). Never pass a CIK; this tool looks it up. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It discloses ordering (newest first), internal ticker/company resolution, and the fact that unfiltered results are dominated by Form 4 filings. It does not explicitly state read-only behavior or return format, but 'List' makes this reasonably clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four concise sentences, each with a purpose: action/scope, usage context, company resolution, and filtering guidance. No wasted words, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with three well-documented parameters, the description covers selection criteria, invocation behavior, and filtering advice. It does not describe return fields, but with no output schema the agent can still reasonably infer it returns a list of filings. Slightly more detail on return shape would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents company, forms, and limit, including the Form 4 warning. The description reinforces the ticker/company resolution and filter-by-form guidance, but does not add substantively new parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'List filings a specific public company submitted, newest first,' which clearly identifies the resource and operation. It also distinguishes itself from the sibling search_filings by contrasting recent-reports-by-company with word-based searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool: 'Use when the user names a company and wants its recent reports rather than searching for particular words.' It also gives practical guidance on filtering by form type, which helps the agent decide how to invoke it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_filingsSearch SEC filingsA
Search the full text of SEC filings from 2001 onward. Returns which filings contain the search terms, with the filing company, form type, date, and a link. Use this to find how public companies discuss a topic in their own words. IMPORTANT: returns filing metadata only, not the matching text; follow the URL to read what a filing says. Results rank by keyword relevance, not company size, so small companies often outrank large ones. Do not use for stock prices, financial figures, or private companies, which do not file with the SEC.
| Name | Required | Description | Default |
|---|---|---|---|
| forms | No | Optional. Form types, e.g. ["10-K"] annual, ["10-Q"] quarterly, ["8-K"] material events, ["DEF 14A"] proxy. | |
| limit | No | How many filings to return. Defaults to 10. | |
| query | Yes | Search terms. Wrap in double quotes for an exact phrase, e.g. "agentic AI". Multiple bare words are treated as AND. | |
| company | No | Optional. Limit to one company by ticker ("AAPL") or name ("Apple Inc."). Never pass a CIK; this tool looks it up. | |
| end_date | No | Optional. Latest filing date, YYYY-MM-DD. | |
| start_date | No | Optional. Earliest filing date, YYYY-MM-DD. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and delivers key behavioral traits: it returns metadata only (not matching text, so the URL must be followed) and ranks by keyword relevance rather than company size. These are genuine surprises the agent would not know from annotations or schema. It could add pagination or rate-limit details, but the core quirks are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that front-loads the core purpose and return shape, then delivers use-case and exclusion guidance, then two critical behavioral caveats. Every sentence adds value; it is slightly long as a wall of text but well-organized and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 6 params, 100% schema coverage, no output schema, and no annotations, the description is comprehensive: it covers the date scope, return format, use case, exclusions, ranking behavior, and the metadata-only caveat. There are no obvious gaps for an agent to safely invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents all 6 parameters including the company lookup behavior and the exact-phrase quote syntax. The description adds no additional parameter-level detail beyond the schema, so the baseline of 3 is appropriate since the structured schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource combination ('Search the full text of SEC filings from 2001 onward') and clearly states what it returns (matching filings with company, form type, date, link). It distinguishes itself from the sibling list_company_filings by emphasizing full-text search across all filings vs. what appears to be a per-company listing function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it ('find how public companies discuss a topic in their own words') and provides clear exclusions ('Do not use for stock prices, financial figures, or private companies'). It lacks an explicit pointer to the sibling alternative tool, but the use-case framing and negative guidance are strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.0- First observed
list_company_filings - First observed
search_filings
TDQS
Scored across 2 tools
The two tools are sharply distinct: one searches full-text across all filings, the other lists filings for a specific company. There is no overlap in purpose or likely misselection.
Both tool names follow a consistent verb_noun pattern: search_filings and list_company_filings. The convention is uniform and predictable.
Two tools is at the thin end of the range, but the server's stated scope of accessing EDGAR filings can reasonably be covered by search and list operations. It feels minimal rather than bloated.
The tools cover discovery (keyword search and per-company listing) but lack any retrieval tool to actually read a filing's content. Search results intentionally return metadata only, and without a fetch-filing tool, agents cannot access the underlying text, creating a dead end.
Maintenance
Related MCP Connectors
SEC EDGAR filings for AI agents: company lookup, filings, financials, insider trades. No keys.
SEC EDGAR filings for AI agents: company lookup, filings, financials, insider trades. No keys.
Search SEC EDGAR filings, financial statements, and company data.
Scrape SEC EDGAR filings by company, form type, date, or full text. Pay per row.
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.-
- AlicenseAqualityBmaintenanceQuery SEC EDGAR for company filings, financial data, and executive disclosures. Search by company name or ticker, retrieve 10-K/10-Q/8-K filings, and extract structured financials — backed by the official SEC EDGAR API, built for AI agents.4MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to access SEC EDGAR data: search filings, extract sections, pull structured financials, and track insider transactions.19 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables to search and retrieve SEC EDGAR filings, insider transactions, major shareholders, and executive compensation data through natural language.6 npmMIT