Skip to main content
Glama
finance-mcp-server-ko

finance-mcp-server-ko

by mkkim2102

Finance MCP Server

License: MIT

English version

LLM 에이전트를 위한 개인용 금융 리서치·실행 툴킷입니다. DART, Telegram, Toss증권이라는 세 가지 소스를 하나로 묶은 MCP 서버로 구현했습니다.

왜 이 세 가지인가

대부분의 "AI + 금융" 프로젝트는 시세 API, 뉴스 피드, 증권사 연동 중 하나만 붙입니다. 이 프로젝트는 제대로 된 금융 판단을 하려면 성격이 서로 다른 세 가지 입력이 필요하다는 전제에서 출발했습니다. 각자 가장 잘하는 역할만 맡깁니다.

  • DART — 정형 데이터 (structured data). 한국의 공식 전자공시 시스템 (공시서류, 재무제표, 지분 구조, 배당). 감사받고 날짜가 찍힌, 명확한 사실(ground truth)입니다. 다만 태생적으로 느리고 과거지향적입니다 — 직전 분기 보고서일 뿐, 지금 이 순간 일어나는 일은 아닙니다.

  • Telegram — 비정형 데이터 (unstructured data). 단순히 "뉴스 대체재"로 고른 게 아니라 의도적으로 선택했습니다. 애널리스트와 개인 투자자들이 매일 자신의 리서치와 의견을 텔레그램에 올립니다 — 국내 주식 투자 커뮤니티에서 비공식적으로, 정식 발간 전에 오가는 정보 상당수가 실제로 여기서 일어납니다. 목적은 "뉴스 헤드라인을 더 많이 긁어오는 것"이 아니라, 실제로 매매하는 사람들이 지금 이 순간 무엇에 주목하고 있는지를 보는 것입니다 — 이는 어떤 뉴스 통신사가 전하는 것과는 다른 종류의 신호입니다.

  • Toss증권 — 실행 계층 (execution layer). 시세, 호가, 캔들, 계좌 보유 현황 — 그리고 점점 더, 실제로 행동할 수 있는 능력: 실거래 주문의 제출·정정· 취소, 포트폴리오 관리. 리서치가 실제 포지션으로 바뀌는 지점입니다.

정리하면: DART는 무엇이 사실인지 알려주고, Telegram은 사람들이 지금 무엇에 주목하는지 알려주며, Toss는 그 둘을 바탕으로 실제 행동에 옮기는 수단입니다.

Related MCP server: toss-securities-mcp

아키텍처

각 소스는 그 자체로 완결된, 독립적으로도 동작하는 MCP 서버입니다.

finance-mcp-server/
├── server.py       # 아래 세 서버를 하나의 MCP 서버로 합칩니다
├── dart/           # 정형 데이터
├── toss/           # 실행 계층
└── telegram/       # 비정형 데이터

루트의 server.py는 세 서버의 로직을 복제하거나 다시 구현하지 않습니다. 임포트 시점에 각 <source>/server.py를 독립된 모듈로 불러온 뒤, 거기 등록된 툴들을 하나의 공유 MCP 서버 인스턴스에 그대로 복사해 옵니다. 즉 특정 툴의 동작을 바꾸고 싶으면 그 툴이 속한 소스 폴더 안에서 수정하면 됩니다 — 루트 파일은 그저 연결만 담당하며, 소스 쪽 변경 사항은 다음 재시작 때 자동으로 반영됩니다.

세 서버 모두에서 유일하게 겹치는 이름은 test_connection입니다 (셋 다 자체적으로 하나씩 가지고 있습니다). 이들은 각각 dart_test_connection, toss_test_connection, telegram_test_connection으로 이름을 바꿔 등록했습니다. 그 외 이름은 모두 원래 그대로 고유합니다. 세 소스의 자격증명/연결 상태를 한 번에 확인하는 finance_test_connection 툴도 추가했습니다.

빠른 시작

각 소스는 자체 자격증명이 필요합니다 — 소스별 설정 방법(Toss의 IP 화이트리스트 요건, Telegram의 최초 1회 로그인 포함), 전체 툴 목록, 사용 예시는 USAGE.md를 참고하세요.

# 사용하려는 dart/, toss/, telegram/ 각각에서:
cp .env.example .env   # 실제 값으로 채우기

# 저장소 루트에서:
uv sync
uv run server.py

MCP 클라이언트에 등록하기

{
  "mcpServers": {
    "finance-mcp": {
      "command": "/절대경로/finance-mcp-server/.venv/bin/python",
      "args": ["/절대경로/finance-mcp-server/server.py"]
    }
  }
}

실거래 주문 기능 (Toss)

place_order와 modify_order는 실제 계좌에 진짜 주문을 제출하며, 명시적으로 confirm=True를 넘겨야만 동작합니다 — 넘기지 않으면 아무것도 제출하지 않고 에러를 냅니다. 일정 금액 이상의 주문은 confirm_high_value_order=True까지 추가로 요구합니다. cancel_order는 의도적으로 confirm=True 게이트가 없습니다 — 취소는 안전한 방향의 행동이기 때문입니다. 이 중 어느 것도 "사람의 최종 확인"을 대체하지는 않습니다: 자율적으로 동작하는 에이전트가 스스로 confirm=True를 넘길 수도 있으므로, 이는 사람이 승인했다는 증거가 아니라 호출자의 의도를 기록하는 정도로 받아들여야 합니다. 시뮬레이션/모의 투자 모드는 없습니다. 자율적으로 툴을 호출할 수 있는 환경에 연결하기 전에 반드시 toss/README.md를 읽어보세요.

문서

  • USAGE.md — 소스별 전체 설정 방법, 전체 툴 목록, 사용 예시

  • DESIGN.md — 각 소스의 안전장치가 지금 형태로 설계된 이유: DART/Telegram의 제한(데이터 양을 제한)과 Toss의 제한(되돌릴 수 없는 행동을 제한)이 서로 어떻게 다른지, 그리고 공개 전 보안 점검으로 무엇이 바뀌었는지

현재 상태

이 프로젝트는 계속 진화 중인 개인 프로젝트이며, 완성된 제품이 아닙니다. 세 소스 각각은 독립적으로 만들고 다듬어진 뒤 이렇게 합쳐졌습니다. 다듬어지지 않은 부분이 있을 수 있고, 특히 Toss 쪽을 중심으로 툴 목록은 계속 늘어날 것으로 예상합니다.

라이선스

MIT

Available Tools

46 tools
cancel_orderB

Cancel a pending live order; cancellation does not require confirmation.

Inputs: order_id (required), account_seq (required). Returns: object

check_dart_api_keyA

Check whether the DART API key was loaded without exposing it.

Inputs: no named parameters. Returns: object

check_toss_api_credentialsA

Check whether TOSS_CLIENT_ID / TOSS_CLIENT_SECRET were loaded, without exposing them.

Inputs: no named parameters. Returns: object

dart_test_connectionB

Return a message to verify that the MCP server is working.

Inputs: message (required). Returns: object

download_fileA

Download the file attached to one message to local disk and return its path.

Saves under this project's downloads/ folder by default; dest_dir selects a subdirectory within that downloads/ folder (relative paths, .., and absolute paths that resolve outside it are rejected). The filename is sanitized and de-duplicated against existing files in the target directory.

Inputs: chat (required), message_id (required), dest_dir. Returns: object

finance_test_connectionA

Check DART, Toss, and Telegram credentials/connectivity in one call.

Inputs: no named parameters. Returns: object

get_accountsA

List your Toss Securities accounts (계좌 목록 조회).

Returns each account's accountSeq, which the other account tools (get_holdings, get_buying_power, get_commissions, get_sellable_quantity) require as their account_seq argument.

Inputs: no named parameters. Returns: object

get_buying_powerA

Get cash buying power for one account. (매수가능금액 조회, read-only)

Args: account_seq: The numeric accountSeq returned by get_accounts(). currency: 'KRW' or 'USD'.

Inputs: account_seq (required), currency. Returns: object

get_candlesA

Get OHLCV candle-chart data for a single symbol. (캔들 차트 조회)

Args: symbol: A single ticker symbol, no market prefix, e.g. '005930' (KRX) or 'AAPL' (US). Only one symbol is accepted per call. interval: Candle interval: '1m' (1-minute) or '1d' (daily). count: Number of candles to return, between 1 and 200. before: Optional cursor (from a previous response's 'nextBefore') to page further back in time. Omit for the most recent candles. adjusted: Whether prices should be adjusted for splits/dividends.

Inputs: symbol (required), count, before, adjusted, +1 more. Returns: object

get_channel_infoA

Get title, description/about, member count, type, and username for a chat.

chat may be a @username, a numeric/marked (-100...) chat ID from list_dialogs, or (best-effort) a chat title. If resolution by ID fails on a fresh session, call list_dialogs first to warm the client's entity cache, then retry.

Inputs: chat (required). Returns: object

get_commissionsA

Get your brokerage commission rates by market. (매매 수수료 조회, read-only)

Args: account_seq: The numeric accountSeq returned by get_accounts().

Inputs: account_seq (required). Returns: object

get_company_profileB

Get official company information from Open DART.

Args: corp_code: The company's eight-digit Open DART corporation code. Samsung Electronics is 00126380.

Inputs: corp_code (required). Returns: object

get_company_profile_by_queryA

Find a listed company and return its DART company profile.

Args: query: Exact company name, six-digit stock code, or eight-digit DART corporation code.

Inputs: query (required). Returns: object

get_current_priceA

Get the current (last-traded) price for one or more symbols. (현재가 조회)

Args: symbols: Comma-separated ticker symbols, up to 200. No market prefix. Examples: '005930,000660' (KRX) or 'AAPL,MSFT' (US).

Inputs: symbols (required). Returns: object

get_disclosure_document_textA

Get the plain-text content of one DART disclosure document.

Downloads the original filing (원문) for a receipt number and strips HTML markup, so the content can be read directly. Useful for reading the details of any filing found via search_disclosures.

Args: rcept_no: The 14-digit disclosure receipt number (접수번호), as returned by search_disclosures or other DART tools.

Inputs: rcept_no (required). Returns: object

get_dividend_infoA

Get dividend-related figures (배당에 관한 사항) across a range of years.

Uses Open DART's 배당에 관한 사항 endpoint, which reports per-share face value, net income, earnings per share, total cash/stock dividend amounts, dividend payout ratio, dividend yield, and dividend per share for the current period and the two prior periods.

Args: corp_code: The company's eight-digit Open DART corporation code. Samsung Electronics is 00126380. start_year: First business year to fetch (four digits), e.g. 2021. end_year: Last business year to fetch (four digits), e.g. 2023. report_type: "annual" (사업보고서), "half" (반기보고서), "q1" (1분기보고서), "q3" (3분기보고서), or "all" to fetch all four report types for each year.

Inputs: end_year (required), corp_code (required), start_year (required), report_type. Returns: object

get_exchange_rateA

Get the exchange rate between two currencies. (환율 조회)

Args: base_currency: 'KRW' or 'USD'. quote_currency: 'KRW' or 'USD'. date_time: Optional ISO 8601 timestamp for a historical rate. Omit for the latest rate.

Inputs: date_time, base_currency, quote_currency. Returns: object

get_executive_ownership_reportsA

Get executive/major-shareholder stock ownership reports (임원ㆍ주요주주 소유보고).

Uses Open DART's 임원ㆍ주요주주 소유보고 endpoint, which lists ownership reports filed by company executives and major (10%+) shareholders whenever their holdings change. DART returns this endpoint's full filing history in one call with no date parameter of its own, so date filtering and the result limit are both applied here after fetching. Active large-cap companies can have thousands of these filings, so the default limit keeps a call without a date range from returning all of them at once.

Args: corp_code: The company's eight-digit Open DART corporation code. Samsung Electronics is 00126380. start_date: Optional start of a filing-date range, as YYYYMMDD or YYYY-MM-DD. When omitted, defaults to roughly the last 3 months (90 days), since this endpoint covers frequent, routine insider-ownership filings. end_date: Optional end of a filing-date range, as YYYYMMDD or YYYY-MM-DD. When omitted, defaults to today (or completes a roughly three-month window when only end_date is supplied). limit: Maximum number of filings to return, most recent first (default 50, max 200). Narrow the date range to see more than the most recent filings.

Inputs: corp_code (required), limit, end_date, start_date. Returns: object

get_financial_statementsA

Get key financial-statement accounts for a company across a range of years.

Uses Open DART's key-accounts endpoint (주요계정), which returns core figures such as total assets, total liabilities, total equity, revenue, operating profit, and net income, for both consolidated (CFS) and separate (OFS) financial statements.

Args: corp_code: The company's eight-digit Open DART corporation code. Samsung Electronics is 00126380. start_year: First business year to fetch (four digits), e.g. 2021. end_year: Last business year to fetch (four digits), e.g. 2023. report_type: "annual" (사업보고서), "half" (반기보고서), "q1" (1분기보고서), "q3" (3분기보고서), or "all" to fetch all four report types for each year.

Inputs: end_year (required), corp_code (required), start_year (required), report_type. Returns: object

get_full_financial_statementA

Get the complete financial statement (every line item) for one period.

Uses Open DART's full-statement endpoint (전체 재무제표), which returns every line item in the balance sheet, income statement, and other statements for a single business year and report type.

Args: corp_code: The company's eight-digit Open DART corporation code. Samsung Electronics is 00126380. year: Business year to fetch (four digits), e.g. 2023. report_type: "annual" (사업보고서), "half" (반기보고서), "q1" (1분기보고서), or "q3" (3분기보고서). fs_div: "CFS" for consolidated financial statements (연결재무제표, default) or "OFS" for separate financial statements (별도/개별 재무제표).

Inputs: year (required), corp_code (required), fs_div, report_type. Returns: object

get_holdingsA

Get portfolio summary and per-symbol positions for one account. (보유자산 조회, read-only)

Args: account_seq: The numeric accountSeq returned by get_accounts().

Inputs: account_seq (required). Returns: object

get_major_holding_reportsA

Get 5%-rule major shareholding disclosure reports (대량보유 상황보고).

Uses Open DART's 대량보유 상황보고 endpoint, which lists every report filed under the "5% rule" whenever an investor's holding in the company crosses a disclosure threshold. DART returns this endpoint's full filing history in one call with no date parameter of its own, so date filtering and the result limit are both applied here after fetching.

Args: corp_code: The company's eight-digit Open DART corporation code. Samsung Electronics is 00126380. start_date: Optional start of a filing-date range, as YYYYMMDD or YYYY-MM-DD. When omitted, defaults to roughly the last year (365 days), since 대량보유 filings are relatively infrequent 5%-rule events. end_date: Optional end of a filing-date range, as YYYYMMDD or YYYY-MM-DD. When omitted, defaults to today (or completes a roughly one-year window when only end_date is supplied). limit: Maximum number of filings to return, most recent first (default 50, max 200). Without start_date/end_date, this is what keeps a very active filer from returning thousands of rows in one call — narrow the date range to see more.

Inputs: corp_code (required), limit, end_date, start_date. Returns: object

get_major_shareholder_changesA

Get changes in the largest shareholder (최대주주 변동현황) across years.

Uses Open DART's 최대주주 변동현황 endpoint, which lists each date the largest shareholder changed, who the new largest shareholder was, and why.

Args: corp_code: The company's eight-digit Open DART corporation code. Samsung Electronics is 00126380. start_year: First business year to fetch (four digits), e.g. 2021. end_year: Last business year to fetch (four digits), e.g. 2023. report_type: "annual" (사업보고서), "half" (반기보고서), "q1" (1분기보고서), "q3" (3분기보고서), or "all" to fetch all four report types for each year.

Inputs: end_year (required), corp_code (required), start_year (required), report_type. Returns: object

get_major_shareholder_statusA

Get major/largest-shareholder ownership status (최대주주 현황) across years.

Uses Open DART's 최대주주 현황 endpoint, which lists each major shareholder's name, relationship to the company, and share ownership at the start and end of each reporting period.

Args: corp_code: The company's eight-digit Open DART corporation code. Samsung Electronics is 00126380. start_year: First business year to fetch (four digits), e.g. 2021. end_year: Last business year to fetch (four digits), e.g. 2023. report_type: "annual" (사업보고서), "half" (반기보고서), "q1" (1분기보고서), "q3" (3분기보고서), or "all" to fetch all four report types for each year.

Inputs: end_year (required), corp_code (required), start_year (required), report_type. Returns: object

get_market_calendarA

Get market session times (pre/regular/after-market) around a given date. (장 운영 정보 조회)

Args: market: 'KR' (Korean exchanges) or 'US' (US exchanges). date: Optional date (YYYY-MM-DD) to center the lookup on. Omit for today.

Inputs: date, market. Returns: object

get_messagesA

Get up to 200 recent messages from one chat, newest first.

chat: @username, numeric/marked chat ID (see get_channel_info for resolution notes), or title. since_date: optional cutoff, ISO 8601 (e.g. "2026-08-01" or "2026-08-01T00:00:00+09:00"); results default to the last 7 days when it is omitted. Pass an explicit date to look further back; a very old date effectively means all history. A value with no timezone is treated as UTC. offset_id: only return messages with an ID strictly below this one, useful for paging backward through history. Returns each message's id, ISO date, sender name/id, text, has_media, and media_type.

Inputs: chat (required), limit, offset_id, since_date. Returns: result

get_minority_shareholder_statusA

Get minority/small shareholder status (소액주주 현황) across years.

Uses Open DART's 소액주주 현황 endpoint, which reports the number of minority shareholders, their share of total shareholders, and the proportion of total shares they hold.

Args: corp_code: The company's eight-digit Open DART corporation code. Samsung Electronics is 00126380. start_year: First business year to fetch (four digits), e.g. 2021. end_year: Last business year to fetch (four digits), e.g. 2023. report_type: "annual" (사업보고서), "half" (반기보고서), "q1" (1분기보고서), "q3" (3분기보고서), or "all" to fetch all four report types for each year.

Inputs: end_year (required), corp_code (required), start_year (required), report_type. Returns: object

get_orderB

Get all available details for one order, including execution information.

Inputs: order_id (required), account_seq (required). Returns: object

get_orderbookA

Get the current bid/ask order book for a single symbol. (호가 조회)

Args: symbol: A single ticker symbol, no market prefix, e.g. '005930' (KRX) or 'AAPL' (US). Only one symbol is accepted per call.

Inputs: symbol (required). Returns: object

get_ordersC

List orders using the spec's status, symbol, from, to, cursor and limit filters.

Inputs: status (required), account_seq (required), limit, cursor, +3 more. Returns: object

get_price_limitsA

Get today's upper/lower price limits for a single symbol. (상한가/하한가 조회)

Args: symbol: A single ticker symbol, no market prefix, e.g. '005930'.

Inputs: symbol (required). Returns: object

get_recent_tradesA

Get the most recent executed trades (체결) for a single symbol.

Args: symbol: A single ticker symbol, no market prefix, e.g. '005930' (KRX) or 'AAPL' (US). Only one symbol is accepted per call. count: Number of recent trades to return, between 1 and 50.

Inputs: symbol (required), count. Returns: object

get_sales_contract_disclosuresA

Get single sale/supply contract disclosures (단일판매ㆍ공급계약체결).

Finds every 단일판매ㆍ공급계약체결 filing for a company in a date range and reads each one to extract the contract amount, the contract period (start/end dates), the counterparty, and related details — useful for tracking order backlog (수주잔고) from disclosed sales contracts. This disclosure type has no structured JSON API in Open DART, so each filing's original document is downloaded and parsed.

Args: corp_code: The company's eight-digit Open DART corporation code. Samsung Electronics is 00126380. start_date: Start of the search range (filing date), as YYYYMMDD or YYYY-MM-DD. end_date: End of the search range (filing date), as YYYYMMDD or YYYY-MM-DD.

Inputs: end_date (required), corp_code (required), start_date (required). Returns: object

get_sellable_quantityA

Get how many shares of a symbol can currently be sold from one account. (판매가능수량 조회, read-only)

Args: account_seq: The numeric accountSeq returned by get_accounts(). symbol: A single ticker symbol, no market prefix, e.g. '005930'.

Inputs: symbol (required), account_seq (required). Returns: object

get_shareholder_return_disclosuresA

Get shareholder-return-related disclosure decisions over a date range.

Uses Open DART's 주요사항보고서 주요정보 (major matters report) endpoints to fetch board decisions on capital increases, capital reductions, and treasury stock (buyback) activity, filed within a given date range.

Args: corp_code: The company's eight-digit Open DART corporation code. Samsung Electronics is 00126380. start_date: Start of the search range (first filing date to include), as YYYYMMDD or YYYY-MM-DD, e.g. 20230101. end_date: End of the search range (last filing date to include), as YYYYMMDD or YYYY-MM-DD, e.g. 20231231. disclosure_type: One of: "paid_capital_increase" (유상증자 결정), "free_capital_increase" (무상증자 결정), "paid_free_capital_increase" (유무상증자 결정), "capital_reduction" (감자 결정), "treasury_stock_acquisition" (자기주식 취득 결정), "treasury_stock_disposal" (자기주식 처분 결정), "treasury_trust_contract" (자기주식취득 신탁계약 체결 결정), "treasury_trust_termination" (자기주식취득 신탁계약 해지 결정), or "all" (default) to fetch every type in one call.

Inputs: end_date (required), corp_code (required), start_date (required), disclosure_type. Returns: object

get_stock_infoA

Look up basic info (name, market, currency, status, shares outstanding...) for symbols.

Args: symbols: Comma-separated ticker symbols, up to 200. No market prefix. Examples: '005930' (Samsung Electronics, KRX), '005930,AAPL'.

Inputs: symbols (required). Returns: object

get_stock_warningsA

Get investment-caution flags for a single KRX symbol (매수 유의사항, e.g. 관리종목/VI 등).

Args: symbol: A single ticker symbol, no market prefix, e.g. '005930'.

Inputs: symbol (required). Returns: object

list_dialogsA

List Telegram dialogs. chat_type filters to all, channel, group (including supergroups), or user.

Inputs: chat_type. Returns: result

modify_orderA

Modify a live pending order; requires confirm=True before submission.

symbol is required to determine the market. US-market modifications support changing price only; changing quantity requires canceling and placing a new order instead.

Toss appears to allow KR-market modifications to decrease or keep the same quantity, but not increase it; increasing quantity requires canceling the order and placing a new one instead.

A modification does not edit an order in place. Toss replaces it with a new live order under a new ID, and the original order_id becomes inactive with status REPLACED immediately after a successful modification. The caller MUST use the returned new_order_id for any further operations on this order, including checking status, canceling, or modifying it again. Reusing the original order_id fails with HTTP 409 already-modified.

Inputs: symbol (required), order_id (required), order_type (required), account_seq (required), +4 more. Returns: object

place_orderB

Submit a live quantity- or amount-based stock order.

The API wire fields are symbol, side, orderType, timeInForce, quantity, price, orderAmount, clientOrderId, and confirmHighValueOrder. Quantity and orderAmount are mutually exclusive; orderAmount is for US MARKET orders.

Inputs: side (required), symbol (required), order_type (required), account_seq (required), +7 more. Returns: object

search_companyA

Search DART companies by company name, stock code, or corp code.

Args: query: A company name, six-digit stock code, or eight-digit DART corporation code. Examples: 삼성전자, 005930, 00126380. listed_only: When true, return only companies with a stock code. limit: Maximum number of results, between 1 and 50.

Inputs: query (required), limit, listed_only. Returns: object

search_disclosuresA

Search DART disclosure filings (공시검색) within a date range.

Uses Open DART's general disclosure search endpoint. Returns filing metadata (title, date, receipt number) only; use get_disclosure_document_text with a result's receipt_no to read a specific filing's content.

Args: corp_code: The company's eight-digit Open DART corporation code. Samsung Electronics is 00126380. start_date: Start of the search range, as YYYYMMDD or YYYY-MM-DD. end_date: End of the search range, as YYYYMMDD or YYYY-MM-DD. pblntf_ty: Optional disclosure category to filter by: "A" (정기공시), "B" (주요사항보고), "C" (발행공시), "D" (지분공시), "E" (기타공시), "F" (외부감사관련), "G" (펀드공시), "H" (자산유동화), "I" (거래소공시), or "J" (공정위공시). keyword: Optional substring to match against each filing's report title (report_nm), applied after fetching from DART since the API itself has no title-search parameter.

Inputs: end_date (required), corp_code (required), start_date (required), keyword, +1 more. Returns: object

search_filesA

Find messages carrying files, globally or in one chat.

file_type: "document" (general files/PDFs), "photo", "video", "audio" (Telegram music/audio files only — voice notes and video notes are excluded), or "any". since_date: optional ISO 8601 cutoff (e.g. "2026-01-01"). Results default to the last 7 days when omitted. Pass an explicit date to look further back; a very old date effectively means all history. A value with no timezone is treated as UTC. Same global-search caveat as search_messages: results are scanned dialog-by-dialog, not ranked account-wide. Returns per match: message id, chat id/title, date, filename, mime_type, size_bytes, caption, sender_name, media_type.

Inputs: chat, limit, query, file_type, +1 more. Returns: result

search_messagesA

Search message text globally or in one chat; omit chat for a global search.

since_date: optional ISO 8601 cutoff (e.g. "2026-01-01"). Results default to the last 7 days when omitted. Pass an explicit date to look further back; a very old date effectively means all history. A value with no timezone is treated as UTC. Global search (no chat) scans dialogs one at a time and stops once limit results are collected, so results favor whichever dialogs are scanned first rather than being ranked by relevance or recency across the whole account.

Inputs: query (required), chat, limit, since_date. Returns: result

telegram_test_connectionA

Check that Telegram credentials are present, the StringSession connects, and the account is authorized.

Inputs: no named parameters. Returns: object

toss_test_connectionC

Return a message to verify that the MCP server process is working.

Inputs: message (required). Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 46 tools

    Disambiguation3/5

    Distinct resource categories (company data, market data, trading, Telegram) are clear, but several tools overlap: search_company vs get_company_profile_by_query, get_financial_statements vs get_full_financial_statement, and multiple connection/credential-check tools. Descriptions mitigate most ambiguity, but an agent could still easily misselect between profile lookup tools or the various health-check tools.

    Naming Consistency4/5

    Almost all tools follow a consistent snake_case verb_noun pattern (get_, search_, place_, cancel_, modify_). Minor inconsistencies exist around connection tools mixing test_connection, check_api_key, and check_api_credentials, and data tools lack a consistent integration prefix, but there is no chaotic naming.

    Tool Count2/5

    46 tools is far above the typical well-scoped MCP server size, and the set mixes three largely unrelated integrations (DART, Toss, Telegram) plus six overlapping health-check tools. Many tools are individually useful, but the server would be better split into separate DART, trading, and Telegram servers, with several duplicate lookup/health-check tools removed.

    Completeness4/5

    The DART/Toss surface is quite complete: company search/profile, key and full financial statements, shareholder data, disclosures, dividends, market data, account read tools, and the order lifecycle (place/cancel/modify/get) are all present. Minor gaps exist—Telegram is read-only with no send_message tool, and some DART areas like audit reports or corporate governance details are not directly exposed—but core workflows are covered.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      MCP server wrapping Toss Securities Open API, enabling stock price queries and trading for Korean and US stocks via natural language.
      36
      265 npm
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Self-hosted MCP server that wraps the Toss Securities Open API, enabling natural language queries for account balances, holdings, transactions, and stock prices via Claude.
      4
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Read-only MCP server that connects LLMs to personal investment accounts (Toss Securities, KIS), market data, SEC filings, and Binance futures for context-aware investment responses.
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that retrieves Korean stock fundamentals and financial data from OpenDART, enabling LLMs to access corporate disclosures, financial statements, and dividend information.
      Apache 2.0