edinet mcp
日本金融数据的EDINET XBRL解析库和MCP服务器。
   ](https://pypi.org/project/edinet-mcp/)  
📝 日语教程:只需问Claude就能知道上市公司的决算(Zenn)
这是什么?
edinet mcp 提供对日本的程序访问 埃迪内 财务披露制度。它将跨会计准则(J-GAAP/IFRS/US-GAAP)的XBRL文件标准化为规范的日本标签,并将其作为 主控程序 用于AI助手的服务器。
- 搜索5000多家日本上市公司
- Retrieve annual/quarterly financial reports(有似证券报告书,四半期报告书)
- 自动标准化:
stmt["売上高"]不按会计准则办事 - 财务指标(ROE、ROA、利润率)和同比比较
- 将XBRL解析为Polars/pandas数据帧(BS、PL、CF)
- 多公司筛选:比较多达20家公司的财务指标
- 跨周期差异(xbrl差异):将不同时期的财务报表与变化金额和增长率进行比较
- MCP服务器,配备9个克劳德桌面工具和其他人工智能工具
快速开始
安装
pip install edinet-mcp
# or
uv add edinet-mcp
# or with Docker
docker run -e EDINET_API_KEY=your_key ghcr.io/ajtgjmdjp/edinet-mcp serve获取API密钥
注册(免费) 埃迪内 并设置:
export EDINET_API_KEY=your_key_here30秒示例
import asyncio
from edinet_mcp import EdinetClient
async def main():
async with EdinetClient() as client:
# Search for Toyota
companies = await client.search_companies("トヨタ")
print(companies[0].name, companies[0].edinet_code)
# トヨタ自動車株式会社 E02144
# Get normalized financial statements
stmt = await client.get_financial_statements("E02144", period="2025")
# Dict-like access — works for J-GAAP, IFRS, and US-GAAP
revenue = stmt.income_statement["売上高"]
print(revenue) # {"当期": 45095325000000, "前期": 37154298000000}
# See all available line items
print(stmt.income_statement.labels)
# ["売上高", "売上原価", "売上総利益", "営業利益", ...]
# Export as DataFrame
print(stmt.income_statement.to_polars())
asyncio.run(main())财务指标
import asyncio
from edinet_mcp import EdinetClient, calculate_metrics
async def main():
async with EdinetClient() as client:
stmt = await client.get_financial_statements("E02144", period="2025")
metrics = calculate_metrics(stmt)
print(metrics["profitability"])
# {"売上総利益率": "25.30%", "営業利益率": "11.87%", "ROE": "12.50%", ...}
asyncio.run(main())多公司筛选
import asyncio
from edinet_mcp import EdinetClient, screen_companies
async def main():
async with EdinetClient() as client:
result = await screen_companies(
client,
["E02144", "E01777", "E01967"], # Toyota, Sony, Keyence
period="2025",
sort_by="営業利益率", # Sort by operating margin
)
for r in result["results"]:
print(f"{r['company_name']}: {r['profitability']['営業利益率']}")
# 株式会社キーエンス: 51.91%
# ソニーグループ株式会社: 11.69%
# トヨタ自動車株式会社: 9.98%
asyncio.run(main())跨期差异
import asyncio
from edinet_mcp import EdinetClient, diff_statements
async def main():
async with EdinetClient() as client:
result = await diff_statements(
client, "E02144",
period1="2024", period2="2025",
)
for d in result["diffs"][:5]:
print(f"{d['科目']}: {d['増減額']:+,.0f} ({d['増減率']})")
# 売上高: +7,941,027,000,000 (+21.38%)
# 営業利益: +1,204,832,000,000 (+28.44%)
# ...
asyncio.run(main())MCP服务器
添加到AI工具的MCP配置中:
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json)
{
"mcpServers": {
"edinet": {
"command": "uvx",
"args": ["edinet-mcp", "serve"],
"env": {
"EDINET_API_KEY": "your_key_here"
}
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"edinet": {
"command": "uvx",
"args": ["edinet-mcp", "serve"],
"env": {
"EDINET_API_KEY": "your_key_here"
}
}
}
}Claude Code
claude mcp add edinet -- uvx edinet-mcp serve
# Then set EDINET_API_KEY in your environmentThen ask your AI:“告诉我丰田最新的营业利润”
可用的MCP工具
| 工具 | 说明 |
|---|---|
search_companies 用企业名、证券代码、EDINET代码搜索 | |
get_filings | 指定期间の开示书类一覧を取得 |
get_financial_statements 获取标准化财务报表(BS/PR/CF) | |
get_financial_metrics | ROE・ROA・利益率等の财务指标を计算 |
compare_financial_periods | 前年比较(增减額・增减率) |
screen_companies | 复数企业の财务指标を一括比较(最大20社) |
list_available_labels |可获得的财务科目一览| | |
get_company_info 获取企业详细信息 | |
diff_financial_statements | 2期间の财务诸表を比较(增减額・增减率) |
备注:Theperiod参数是 申请年份不是财政年度。3月财政年度末的日本公司在次年6月提交年度报告(例如2024财年→ 2025年提交→period="2025").
命令行界面
# Search companies
edinet-mcp search トヨタ
# Fetch income statement
edinet-mcp statements -c E02144 -p 2024
# Screen multiple companies
edinet-mcp screen E02144 E01777 E02529 --sort-by ROE
# Compare across periods (xbrl-diff)
edinet-mcp diff -c E02144 -p1 2023 -p2 2024
# Start MCP server
edinet-mcp serveAPI 参考
EdinetClient
所有客户端方法都是异步的。使用 async with 为了进行适当的资源清理:
import asyncio
from edinet_mcp import EdinetClient
async def main():
async with EdinetClient(
api_key="...", # or EDINET_API_KEY env var
cache_dir="~/.cache/edinet-mcp",
rate_limit=0.5, # requests per second
max_retries=3, # retry on 429/5xx with exponential backoff
) as client:
# Search
companies: list[Company] = await client.search_companies("query")
company: Company = await client.get_company("E02144")
# Filings
filings: list[Filing] = await client.get_filings(
start_date="2024-01-01",
edinet_code="E02144",
doc_type="annual_report",
)
# Financial statements (by edinet_code + period)
stmt: FinancialStatement = await client.get_financial_statements(
edinet_code="E02144",
period="2024", # Filing year (not fiscal year)
)
# Or get the most recent filing (within past 365 days)
stmt = await client.get_financial_statements(edinet_code="E02144")
df = stmt.income_statement.to_polars() # Polars DataFrame
df = stmt.income_statement.to_pandas() # pandas DataFrame (optional dep)
asyncio.run(main())Filing
退回的归档对象 get_filings() 具有以下属性:
for filing in filings:
print(filing.description) # "有価証券報告書-第121期(...)"
print(filing.filing_date) # datetime.date(2025, 6, 18)
print(filing.doc_id) # "S100VWVY"
print(filing.company_name) # "トヨタ自動車株式会社"
print(filing.period_start) # datetime.date(2024, 4, 1)
print(filing.period_end) # datetime.date(2025, 3, 31)StatementData
每份财务报表(BS、PL、CF)都是 StatementData 具有类似dict访问权限的对象:
# Dict-like access by Japanese label
stmt.income_statement["売上高"] # → {"当期": 45095325, "前期": 37154298}
stmt.income_statement.get("営業利益") # → {"当期": 5352934} or None
stmt.income_statement.labels # → ["売上高", "営業利益", ...]
# DataFrame export
stmt.balance_sheet.to_polars() # → polars.DataFrame
stmt.balance_sheet.to_pandas() # → pandas.DataFrame (requires pandas)
stmt.balance_sheet.to_dicts() # → list[dict]
len(stmt.balance_sheet) # number of line items
# Raw XBRL data preserved
stmt.income_statement.raw_items # original pre-normalization data归一化
edinet-mcp自动规范跨会计准则的XBRL元素名称:
| 会计准则 | XBRL元素 | 标准化标签 |
|---|---|---|
| J-GAAP | NetSales | 売上高 |
| IFRS | Revenue, SalesRevenuesIFRS | 売上高 |
| US-GAAP | Revenues | 売上高 |
映射在中定义 taxonomy.yaml --161个项目涵盖PL(42)、BS(79)和CF(40),IFRS/US-GAAP要素变体通过后缀剥离自动解析。通过编辑YAML文件添加新的映射,无需更改代码。
from edinet_mcp import get_taxonomy_labels
# Discover available labels
labels = get_taxonomy_labels("income_statement")
# [{"id": "revenue", "label": "売上高", "label_en": "Revenue"}, ...]EDINET后缀剥离
EDINET在XBRL元素名称后附加会计标准和特定章节的后缀(例如。, TotalAssetsIFRSSummaryOfBusinessResults).这些会被自动剥离以匹配规范分类条目。非合并上下文被过滤掉,以首选合并数字。
建筑
EDINET API → Parser (XBRL/TSV) → Normalizer (taxonomy.yaml) → MCP Server
↓
StatementData["売上高"]
calculate_metrics(stmt)
compare_periods(stmt)发展
git clone https://github.com/ajtgjmdjp/edinet-mcp
cd edinet-mcp
uv sync --extra dev
uv run pytest -v # 213 tests
uv run ruff check src/数据归因
此项目使用以下数据 埃迪内 (投资者网络电子披露),由 Financial Services Agency of Japan (金融庁). EDINET数据根据 公共数据许可证1.0.
相关项目
日本金融数据栈 (同一作者):
- tdnet披露mcp —TDNET timely disclosures(适时开示)
- 状态-mcp --政府统计(e-Stat)
- 日本央行 --日本银行统计
- 股票价格mcp --股票价格和外汇汇率(融资)
- jfin的 --日本金融质量保证基准
社区:
- edinet2数据集 --Sakana AI的EDINET XBRL→JSON工具
- EDINET工作台 --财务分类基准
许可证
阿帕奇-2.0。看 通知 第三方归因。

