mcpField
E
Edgar

Edgar

远程服务
pipeworx.io金融数据1今天更新

关于 Edgar

Edgar 是用于查询美国上市公司申报文件和 SEC 结构化数据的 MCP 服务,提供企业概览、XBRL 趋势、同业及子公司查询,也可检索产品收入和申报附件。

主要功能

  1. 01包含申报文件和 XBRL 数据的企业概览
  2. 02搜索申报文件并读取内容
  3. 03获取 XBRL 数据及概念时间序列
  4. 04按 SIC 代码查找同业公司
  5. 05解析母公司与子公司实体
  6. 06提取产品收入和申报附件

适用场景

  1. 01查看上市公司的最新财务概况
  2. 02追踪各报告期的收入变化
  3. 03比较同一行业的公司
  4. 04调查子公司、产品或披露信息

MCP 相关

向 MCP 客户端提供 SEC EDGAR 企业、XBRL、同业、子公司、产品收入和附件查询工具。README 说明可通过 Pipeworx 网关连接,并提供可引用的资源 URI。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://gateway.pipeworx.io/edgar/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

SEC EDGAR — 上市公司申报文件

美国证券交易委员会的申报文件数据库。美国的每家上市公司都会在此提交文件,每份文件都带有时间戳且不可更改,每项披露(收入、债务、风险因素、高管薪酬、并购活动、内幕交易)都采用结构化形式,便于机器检索。免费且权威。

这是 Pipeworx 的一部分——一个将 AI Agent 连接到 1882+ 个实时数据源的 MCP 网关。这是独立、非官方的集成,与上游提供方无关联,未获其认可,也非由其发布。

这对 AI Agent 为什么重要

如果你的 Agent 要回答任何有关美国上市公司的问题——财务状况、法律风险、知识产权、高管变动、近期重大事件——答案都在 EDGAR 中。数据采用结构化格式(XBRL),因此无需解析 PDF。

两种关键工作流,以及一次调用完成两者的方式:

0. 快照(一次调用)。“给我一份 Apple 的 SEC 概况。” → edgar_company_snapshot({ticker_or_cik: "AAPL"}) → CIK + 近期实质性申报文件(默认包括 10-K/10-Q/8-K/20-F/40-F/6-K/DEF 14A;除非你指定 form_type: "all",否则会排除 Form 4 噪声)+ 最新年度报告中的主要 XBRL 数据(收入、净收入、资产、现金、EPS……)。这一步合并了工作流 1 和 2:解析 → 列出 → 拉取,而需要深入数据的用户原本要手动分三次调用来完成这一连串操作。没有 XBRL 的申报方(例如基金或信托)仍会返回其申报文件,并附上 financials_status: "unavailable" 及原因。edgar_ticker_to_cik 现在会返回一个指向此处的 next 提示。

1. 申报文件工作流。“给我看看 Apple 最近的 10-Q。” → edgar_ticker_to_cik("AAPL") → edgar_company_filings(cik) → 返回申报文件列表,包含接收编号、表格类型和申报日期。

2. 概念工作流。“Apple 过去 4 个季度的收入趋势如何?” → edgar_company_concept(cik, "Revenues") → 返回按期间划分的 XBRL 标记值时间序列。

3. 同行/竞争对手工作流。“谁是 Apple 的竞争对手?” → edgar_companies_by_sic({ticker_or_cik: "AAPL"}) → 解析 Apple 自身的 SIC 代码(3571,电子计算机),并返回该代码下的其他 SEC 申报方,优先列出有上市股票代码的同行。也可以直接传入 sic 代码而不是公司,直接浏览某个行业。

4. 实体解析工作流(母公司 ↔ 子公司)。sponsor_to_filer({sponsor: "Merck Sharp and Dohme"}) 会将子公司/运营实体名称解析到其上市母公司(MRK)。filer_to_sponsors({ticker_or_cik: "MRK"}) 则反向查询——返回母公司最新 10-K 中 Exhibit 21 披露的完整子公司列表,并附上司法管辖区和申报来源信息。传入 name_filter,即可核查某个候选名称,无需读取完整列表。

5. 产品级收入。“Keytruda 创造了多少收入?” → edgar_product_revenue({ticker_or_cik: "MRK", product_filter: "Keytruda"})。edgar_company_concept/edgar_company_facts 仅提供未按维度细分的 XBRL 总额——产品/分部明细以 XBRL 维度(“Keytruda [Member]”)标记,这些 API 无法显示。此工具会直接读取 SEC 自行呈现的该维度数据财务报告,从收入细分附注中提取数据,并提供引用信息(接收编号、申报日期、报告 URL)。未指定 form_type 时,它会依次解析 10-K、20-F、40-F,因此外国私人发行人也能以相同方式使用(edgar_product_revenue({ticker_or_cik: "NVS", product_filter: "Entresto"}) 会读取 Novartis 的 20-F);实际使用的表格类型会通过 resolved_form 返回。并非所有申报方都会在 XBRL 中标记产品级收入——Neurocrine 按主要客户披露收入,而 United Therapeutics 只披露收入确认政策;两者都会明确返回 not_found,而不是空数组。 6. 永远不会进入 XBRL 的运营 KPI(新闻稿)。 “Tesla 2026 年第三季度的汽车交付量和产量”/“Tesla 部署了多少储能”。公司的季度生产、交付和发货/部署 KPI 会在其新闻稿中披露——该新闻稿是附在 8-K 后的附件——而不是结构化财务报表中的内容,因此 edgar_company_concept/edgar_company_facts 正确地不会返回任何结果。edgar_filing_exhibit_text({ticker_or_cik: "TSLA", filed: "2026-10"}) 会直接读取附件文本(8-K 自身的主文档通常只会写“请参阅所附附件”,其中不包含任何数字),并默认读取 EX-99.* 附件,这是 Item 2.02/7.01 业绩或 KPI 新闻稿的通用惯例。传入 search 查询具体数据(例如 “vehicle deliveries”、“Megapack”、“same-store sales”),无需通读整篇新闻稿。这适用于任何美国申报人的 8-K 新闻稿,而不只是 Tesla 的新闻稿。

这两种流程通常都会先调用 edgar_ticker_to_cik 或 resolve_entity({type: "company", value: "AAPL"}),以获取规范的 10 位 CIK。

身份验证

无需身份验证。SEC EDGAR 是免费的公开服务,无需身份验证。Pipeworx 会转发礼貌的 User-Agent 标头,以遵守 SEC 的 API 指南。

可引用的 URI

pipeworx://edgar/company/{cik}/filings
pipeworx://edgar/company/{cik}/facts

将其嵌入输出中。即使公司重组,URI 也保持稳定——公司可能更改品牌,但其 CIK 不会改变。

值得了解的表格类型

表格内容时间
10-K年度报告财年结束后约 60 天
10-Q季度报告季度结束后约 45 天
8-K重大事件(并购、高管变动、业绩等)4 个工作日内
DEF 14A代理声明(高管薪酬、公司治理)年度股东大会前约 6 周
Form 4内部人交易披露交易发生后 2 个工作日内
13F机构持仓(管理资产规模 >1 亿美元的基金)季度结束后 45 天
S-1IPO 注册文件公司上市时
13D / 13G>5% 的受益所有权披露持股比例超过门槛后 10 天内

如需查询内部人交易,请参阅专用的 insider-trading 包——它通过更清晰的架构呈现 Form 4 / 13D / 13G 变动。

常见问题

  • 概念名称变更。 SEC 申报者偶尔会更改其用于标记收入的 XBRL 概念。默认的 Revenues 概念在较新的财年可能已经过时;可尝试将 RevenueFromContractWithCustomerExcludingAssessedTax 作为备用项。
  • 期间不匹配。 不同公司的财年结束时间不同(Apple = 9 月,Microsoft = 6 月,Google = 12 月)。进行比较时,务必注明期间。
  • CIK 格式。 有些端点要求使用补齐到 10 位的格式(0000320193),有些则要求不补齐的格式(320193)。Pipeworx 两种格式都接受;edgar_ticker_to_cik 中的 cik_padded 字段是资源 URI 的标准格式。
  • 近实时,并非实时。 申报文件会在提交后几分钟内出现在 EDGAR 上,但 Pipeworx 会缓存结果。若需要突发新闻级别的时效性,请设置 Cache-Control: no-cache(适用匿名请求限额),或检查 _meta.cache.fresh_until 字段。
  • 概念可用性各不相同。 小型申报者标记的 XBRL 概念少于大型申报者。对于公司实际上并未报告的有效概念,edgar_company_concept 可能返回空数组。使用 edgar_company_facts 查看公司实际报告了哪些概念。
  • 此工具包中,公司参数有三种不同的拼写方式,而 edgar_company_concept 全部接受。 edgar_company_filings/edgar_insider_transactions/edgar_product_revenue 将其命名为 ticker_or_cik,edgar_fund_holdings/edgar_ticker_to_cik 将其命名为 ticker,而 edgar_company_concept/edgar_company_facts 将其命名为 cik(也接受 ticker)。模型填充参数时会使用它最后读到的名称,因此 edgar_company_concept 将 ticker 和 ticker_or_cik 声明为 cik 的别名,并将 metric 声明为 concept 的别名。在此更改之前进行的测量(fleet #2058):在 ask_pipeworx 仲裁器从 16 个从未提问过的问题中选中此工具的 11 次情况下,有 9 次调用被网关的必需参数预检拒绝——每一次都是因为发送了 ticker 或 ticker_or_cik,而不是 cik;其中三分之一还发送了 metric,而不是 concept。使用 cik+concept 的两次调用均成功。被拒绝调用的结果记录为 partial,而不是错误,因为作为单工具选择的请求若以单元素 tools 数组到达,就会进入扇出分支——因此,“唯一一次查找根本没有运行”与“多次查找中有一些运行了”使用的是同一个词。
  • 未指定名称的申报文件,就是我们选定的申报文件;现在响应信封会说明选的是哪份(fleet #3319)。 如果省略 accession,edgar_filing_text 和 edgar_filing_documents 会自动解析 form_type 中最新的申报文件,随后每个字段都会像用户指定了该文件一样描述它。2026-10-18 的实时测量:一个有依据的问题询问“Tesla 2026 年 9 月 29 日的 8-K”,最终调用了 edgar_filing_text({ticker:"TSLA", form_type:"8-K", search:"credit facility"}),结果解析到 2026-10-02 的 8-K——这是另一份申报文件,含 3,061 个字符,匹配数为零;5 次尝试中有 5 次都以 not_in_source 拒答,而用户询问的申报文件就在同一索引中下一行,其中包含全部三个信贷额度。因此,每个响应都会包含 accession_source("caller" | "auto_selected");若由我们选定,还会包含一个 auto_selected 区块,说明用户请求了什么、选中了什么、读取了什么及其精确匹配数,以及哪些候选文件未被读取。如果问题中提到了日期,请传入 filed("2026-09-29"、"2026-09"、"September 29, 2026");对于 8-K,最新申报文件通常不是用户指的那份。若只有 search 可用,edgar_filing_text 会跳过文本中没有精确匹配的候选文件继续查找(最多查 4 份文件,且只接受精确匹配);若没有匹配项,则回退到最新文件,并发出警告,说明其中零匹配的结果只能说明该文件中没有匹配,不能据此判断公司没有相关内容。
  • edgar_company_filings 曾经会直接丢弃指定的 accession。 它既未声明 accession,也未声明 include_primary_text,因此调用者即使指定了一份申报文件,也会得到与未指定时相同的未筛选列表——HTTP 200,看起来像是成功完成。这正是 fleet #3319 问题最终失败的原因:有依据的调用链最后一次尝试将请求路由到此处,参数为 {accession:"0001628280-26-063820", ticker:"TSLA", include_primary_text:true}(AE blob12——路由器已解析出正确的 8-K),但提取模型收到的是一份通用的 10 行申报文件列表,其中没有任何信贷额度金额。现在这两个参数都已正式支持,filed 也同样支持;单行结果会在 narrowed_note 中说明,而申报者从未提交过的 accession 会明确报出 not_found: 错误,而不是返回未筛选列表。
  • fiscal_year 和 fiscal_period 既是筛选条件,也是响应字段。 它们是 values 中每一行的两个字段名,而描述中“匹配请求的 fiscal_year 和 fiscal_period”的建议曾导致参数填充器将它们作为参数发送;由于当时未声明这两个参数,它们会被静默丢弃,调用者于是收到全部 89-230 个报告期间,却看不出筛选条件已被忽略。现在它们已是正式的可选筛选条件:传入其中一个或两个,values/latest 就会按条件筛选,并附带 period_filter 区块回显已应用的条件。筛选条件无匹配项时,会返回零行,并列出申报者实际报告的财年和期间,而不会回退到所有期间——fiscal_year 是申报者自己的标签(NVDA 的 FY2024 于 2024 年 1 月结束),因此,按日历年思考的调用者应看到这些标签,而不是收到相邻财年的编号。
  • 如果未同时考虑以下两点,edgar_search_filings 会忽略上游的 size/limit,并静默丢弃只指定一端的日期筛选条件(fleet #3251)。 EDGAR 的搜索索引(efts.sec.gov)无论请求的 size 是多少,都会返回固定页面,最多包含 100 条结果——已通过实时验证——因此该工具现在会自行按调用者指定的 limit 截断结果,并将 total_hits(实际匹配数)与 returned(返回数)分开报告;如果固定页面包含的结果多于请求数量,则会在 note 中说明。另一方面,如果 startdt/enddt 只设置了一个,efts 会静默忽略 dateRange=custom(筛选条件不会生效,结果会包含从 2001 年起的申报文件)——现在只传入 start_date 或 end_date 时,另一端会默认设为相应边界(EDGAR 全文覆盖范围的起始日期 2001-01-01,或今天),避免筛选条件失效。传入 entity(ticker、公司名称或 CIK;别名为 ticker_or_cik/cik/ticker),即可将全市场搜索限定到单个申报者——解析方式与 edgar_ticker_to_cik 解析公司的方式相同,并包含针对不在 company_tickers.json 中的已退市/非上市申报者的回退处理。由于 efts 的响应缓存按 q/日期/forms/from 建立键,而不包含 ciks/entityName(reference_efts_cache_key_leak,fleet #619——按 ciks 筛选的请求可能收到缓存的未筛选结果,且正常返回 200),实体筛选会在 q 中附加一个否定式缓存破坏令牌,并在客户端重新检查每一行是否匹配请求的 CIK;若某行不匹配而被丢弃,会通过 entity_filter_guard_dropped 报告,而不会静默消失。该工具不会返回文本片段——EDGAR 的索引不提供文本片段——因此,请将结果的 accession 传给 edgar_filing_text,并将 search 设置为查询内容,以查找匹配段落;不要让此工具代你获取每条命中结果的文档(SEC 会通过一个共享出口 IP 对整个服务群进行限流)。

快速开始

添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):

{
  "mcpServers": {
    "edgar": {
      "url": "https://gateway.pipeworx.io/edgar/mcp"
    }
  }
}
此端点实际提供的内容

https://gateway.pipeworx.io/edgar/mcp 上的 tools/list 会返回上表中的工具,以及 Pipeworx 共享元工具——ask_pipeworx、 discover_tools、search_within、remember/recall,以及网关级的其他工具。因此,你看到的工具数量会多于表中的数量:目前,单个工具包端点除了该工具包自有的工具外,还会列出大约 30 个共享工具。连接的 initialize 响应会说明其确切范围,也是当天情况的权威依据。

这是刻意为之,并非意外地进行多路复用。元工具让限定范围的连接也能回答此工具包无法涵盖的问题——通过可跨整个目录路由的 ask_pipeworx 实现——无需添加第二个 MCP 服务。目前无法挂载不包含这些元工具的工具包端点;如果额外的架构定义消耗的上下文超过路由带来的价值,请连接一次完整网关,而不是连接多个工具包端点。

也可以连接到完整的 Pipeworx 网关,直接获取每个工具包的工具,而不只是此工具包的工具:

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://gateway.pipeworx.io/mcp"
    }
  }
}

两个 URL 都连接到同一个网关和相同的 1882+ 个数据源。唯一的区别在于直接列出哪个工具包的工具;从任一端点调用 ask_pipeworx 都能访问所有工具。

没有 MCP 客户端?通过 HTTP 调用

curl -X POST https://gateway.pipeworx.io/v1/tools/edgar_search_filings \
  -H 'Content-Type: application/json' \
  -d '{"query":"artificial intelligence","form_type":"10-K","start_date":"2024-01-01","end_date":"2024-12-31","limit":20}'

首次调用无需账户。检查任意工具:GET https://gateway.pipeworx.io/v1/tools/edgar_search_filings。查找工具:使用 {"query":"..."} 向 https://gateway.pipeworx.io/v1/tools/search_packs 发送 POST 请求。

独立运行(无需网关账户)

此软件包也可以作为本地 stdio MCP 服务运行——无需 Pipeworx 账户,也无需经由网关往返:

{
  "mcpServers": {
    "edgar": {
      "command": "npx",
      "args": ["-y", "@pipeworx/mcp-edgar"]
    }
  }
}

或者直接运行,确认它能正常启动:

npx -y @pipeworx/mcp-edgar

它通过 stdin/stdout 使用 MCP 协议,并且只会对此工具包的工具响应 initialize/tools/list/tools/call——不包含上述网关连接额外提供的任何共享元工具。相同的源代码、相同的工具,但没有 ask_pipeworx 路由功能。

使用 ask_pipeworx

你可以用通俗易懂的语言提问,而不是直接调用工具——此功能既适用于上面的工具包端点,也适用于完整网关:

ask_pipeworx({ question: "your question about Edgar data" })

网关会自动选择合适的工具并填写参数。

更多信息

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。