金融数据访问服务器

OpenDART MCP Server是一个用于与韩国金融监督院Open DART API交互的MCP服务器,提供访问韩国企业文件、公司概览、财务报表和股东信息的工具。

  • by aidankwon
  • HTML
  • 本地部署
  • 更新于
在 GitHub 查看 aidankwon/opendart_mcp

使用说明

OpenDART MCP服务器

一个MCP(模型上下文协议)服务器,用于与韩国金融监督服务(FSS)的开放DART API进行交互。

此服务器提供工具,可以直接在启用MCP的AI助手(如Claude或Cursor)中访问韩国公司文件、公司概述、财务报表和股东信息。它包括一个内置的SQLite缓存,以优化API的使用并减少延迟。

特性

  • 内置缓存: 使用SQLite本地缓存API响应并减少冗余的网络调用。
  • 现代HTTP传输: 由...驱动 StreamableHTTPServerTransport,提供了一个健壮且可扩展的HTTP/SSE连接模型。
  • 并发多客户端支持: 通过动态分配隔离的会话状态和传输,无缝处理多个同时进行的客户端连接。
  • 会话连续性: 通过以下方式提供会话路由功能 mcp-session-id 以及自动清理过时会话。
  • API全面覆盖: 公开了18+开放DART API端点作为易用的MCP工具,并为LLM提供了优化的架构。
  • TypeScript和Zod: 具有严格参数验证和描述性提示的强类型输入和输出。

暴露的MCP工具

服务器提供以下工具:

  1. search_disclosures (DS001)
    • 搜索公司公开文件。
    • 按公司代码、日期范围、报告类型等进行筛选。
    • 后过滤和限制: 支持按报表名称中的特定关键字筛选结果(exclude_words)并限制返回的结果总数(limit).
    • 手动排序: 结果由服务器自动按日期(降序)排序,以确保准确性,即使上游API排序不一致。使用 sort 和 sort_mthd 用于定制订购。
    • 注:此API返回元数据和收据编号(rcept_no).您可以使用 get_document 使用此收据编号的工具下载实际披露文件。
  2. get_company_overview (DS001/DS002)
    • 检索特定公司的基本个人资料信息(首席执行官姓名、地址、网站等)。
  3. get_financial_statement (DS003)
    • 获取单个公司的关键财务报表数据(资产负债表、损益表)。
  4. get_multiple_companies_major_accounts (DS003)
    • 获取多家公司的关键财务报表数据(最多5家)。
  5. get_single_company_all_accounts (DS003)
    • 获取单个公司的全套财务报表账户。
  6. get_xbrl_taxonomy (DS003)
    • 获取基于国际财务报告准则的XBRL标准分类和账户格式指南。
  7. get_single_company_major_indicators (DS003)
    • 获取单个公司的主要财务指标(如ROE、ROA、债务比率)。
  8. get_multiple_companies_major_indicators (DS003)
    • 计算多家公司的主要财务指标(最多5个)。
  9. get_xbrl_original_file (DS003)
    • 下载原始XBRL财务报表ZIP文件,提取XML、XSD、TXT和HTM组件。
  10. get_major_shareholders (DS004)
    • 检索有关主要股东和高管的信息。
  11. get_capital_increase_info (DS005)
    • 获取一段时间内资本增加或减少的详细信息。
  12. get_equity_securities_info (DS006)
    • 检索已发行权益证券的信息。
  13. get_periodic_report_info (DS002合并器)
    • DS002组的一个强大的综合工具,可访问27个以上的定期报告功能。获取以下信息:股息、库存股、最大股东、少数股东、高管和员工身份、高管薪酬、债务证券发行、未赎回的CP/债券余额、审计师姓名、审计服务合同以及公共/私人资金的使用情况。
  14. search_corpcode
    • 搜索公司的8位唯一数字 corp_code 按公司名称或股票代码。
    • 自我初始化: 在第一次运行时下载完整的企业代码XML字典(约100000多个条目),将其存储在本地SQLite数据库中,并在本地进行亚秒级搜索。
  15. get_document (DS001)
    • 下载特定文件的完整披露文件(XML格式)。
    • 需要14位收据号码(rcept_no),可从 search_disclosures 工具。
  16. get_equity_disclosure_info (DS004)
    • DS004 API的综合工具,用于检索大量持股或高管/大股东持股报告。
  17. get_major_issues_report_info (DS005)
    • DS005的整合工具,用于访问36个主要公司问题(如破产、并购、增资、诉讼)。
  18. get_registration_statement_info (DS006)
    • DS006的合并工具,用于汇总股权/债务证券、合并、部门等的注册声明。

设置和本地开发

  1. 克隆存储库
  2. 安装依赖项:
    npm install
    
  3. 配置API密钥: 创建一个 .env 文件,然后添加您的Open DART API密钥(您可以从 https://opendart.fss.or.kr/):
    OPENDART_API_KEY=your_api_key_here
    
  4. 构建项目:
    npm run build
    
    注意:必须先运行此程序,然后AI客户端才能使用MCP服务器。

与MCP客户端一起使用

克劳德桌面版

要在Claude Desktop中使用此功能,请将以下内容添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "opendart": {
      "command": "node",
      "args": ["/absolute/path/to/opendart_mcp/dist/index.js"],
      "env": {
        "OPENDART_API_KEY": "your_api_key_here"
      }
    }
  }
}

光标IDE

要将其与Cursor一起使用,请转到 Cursor Settings > MCP 并添加新服务器:

  • 类型: command
  • 命令: node /absolute/path/to/opendart_mcp/dist/index.js

注意:您可能需要导出 OPENDART_API_KEY 在shell配置文件中,或者如果Cursor没有拾取本地变量,则修改start命令以注入环境变量 .env 文件。

Gemini CLI(反重力)

要使用Gemini CLI运行此服务器,您只需将其添加到您的 ~/.gemini/mcp/mcp.json 文件。模式与Claude Desktop的配置相同:

{
  "mcpServers": {
    "opendart": {
      "command": "node",
      "args": ["/absolute/path/to/opendart_mcp/dist/index.js"],
      "env": {
        "OPENDART_API_KEY": "your_api_key_here"
      }
    }
  }
}

部署到n8n

对于n8n实例(尤其是在Docker中或远程运行的实例),建议使用 流式HTTP(SSE) 运输。这种现代传输方式可靠地支持多个并发会话。

1.使用Docker(预构建镜像)

最快的部署方式是使用GitHub容器注册表(GHCR)中的映像:

docker run -d \
  -p 3000:3000 \
  -e OPENDART_API_KEY=your_api_key_here \
  -v opendart-cache:/app/data \
  --name opendart-mcp \
  ghcr.io/aidankwon/opendart_mcp:latest

2.使用Docker Compose

使用提供的 docker-compose.yml 以获得更受管理的设置。这确保了缓存被持久化,容器会自动重启。

# Create a .env file with your key first
echo "OPENDART_API_KEY=your_key_here" > .env

# Start the service
docker-compose up -d

3.从源头建设

如果您更喜欢在本地构建和运行:

# Build the image
docker build -t opendart-mcp:latest .

# Run it
docker run -d -p 3000:3000 -e OPENDART_API_KEY=your_key_here opendart-mcp:latest

4.手动启动(无Docker)

直接在服务器上运行:

npm run build
npm run start:sse

5.在n8n中注册

  1. 在n8n工作流中,添加 MCP客户端工具 节点。
  2. 集 服务器传输 到 HTTP Streamable.
  3. 集 服务器URL 到 http://<your-host-ip>:3000/mcp.
    • 关键的: 确保路径终止于 /mcp.
  4. 会话路由: 服务器使用 mcp-session-id header用于处理多个客户端。n8n会自动处理此问题。
  5. 自动清理: 停滞的会话在1小时不活动后会被清除。
  6. 配置任何必要的防火墙规则或代理,以允许n8n到达端口 3000.

许可证

国际协调委员会