finance-mcp-server
A personal finance MCP server that combines DART official disclosures, Telegram analyst chatter, and Toss Securities live trading to give LLM agents research and execution capabilities.
README
Finance MCP Server
A personal finance research and execution toolkit for LLM agents, built as one MCP server that composes three purpose-built sources: DART, Telegram, and Toss Securities.
Why these three
Most "AI + finance" setups reach for one thing: a market data API, or a news feed, or a broker connection. This project is built around the idea that useful financial reasoning needs three different kinds of input, each doing the job it's actually good at:
-
DART — structured data. Korea's official disclosure system (filings, financial statements, shareholder structure, dividends). This is ground truth: audited, dated, and unambiguous. It's slow-moving and backward-looking by nature — a company's last quarterly filing, not what's happening right now.
-
Telegram — unstructured data. Chosen deliberately, not as a generic "news" source. Analysts and everyday investors post their actual research and opinions on Telegram every day — it's where a lot of pre-publication and off-the-record commentary in Korean stock investing circles actually happens. Reading it isn't about ingesting news headlines; it's about seeing what people who are actively trading are paying attention to right now, which is a different signal than what any news wire reports.
-
Toss Securities — the execution layer. Prices, order books, candles, account holdings — and, increasingly, the ability to actually act: placing, modifying, and canceling live orders, and managing a portfolio. This is the layer that turns research into a position.
Put together: DART tells you what's true, Telegram tells you what people are paying attention to, and Toss is how you act on either.
Architecture
Each source is a complete, independent MCP server that also runs on its own:
finance-mcp-server/
├── server.py # composes the three below into one MCP server
├── dart/ # structured data
├── toss/ # execution layer
└── telegram/ # unstructured data
The root server.py doesn't fork or reimplement any of the three servers'
logic. At import time, it loads each <source>/server.py as an isolated
module and copies its registered tools onto one shared MCP server instance.
Editing a tool's behavior means editing it inside its own source folder —
the root file only wires things together, and picks up any change made
inside a source automatically on the next restart.
The only name collision across all three is test_connection (each ships
one); those are renamed to dart_test_connection, toss_test_connection,
and telegram_test_connection. Everything else keeps its original name.
There's also a finance_test_connection tool that checks all three sources'
credentials/connectivity in one call.
Quick start
Each source needs its own credentials — see USAGE.md for the full setup walkthrough per source (including Toss's IP allow-list requirement and Telegram's one-time login), the complete tool catalog, and worked examples.
# in each of dart/, toss/, telegram/ you want to use:
cp .env.example .env # then fill in the real values
# from the repo root:
uv sync
uv run server.py
Registering with an MCP client
{
"mcpServers": {
"finance-mcp": {
"command": "/absolute/path/to/finance-mcp-server/.venv/bin/python",
"args": ["/absolute/path/to/finance-mcp-server/server.py"]
}
}
}
Order placement is live (Toss)
place_order and modify_order submit real orders against a real account
and require an explicit confirm=True argument — calling without it raises
an error instead of submitting anything — with orders above a size threshold
additionally requiring confirm_high_value_order=True. cancel_order is
intentionally not gated behind confirm=True, since canceling is the safe
direction. None of this is a substitute for a human-in-the-loop check: an
autonomous agent can supply confirm=True on its own, so treat it as
recording caller intent, not as proof a human approved the trade. There is
no simulation/dry-run mode. Read toss/README.md before connecting this to
anything that can call tools autonomously.
Documentation
- USAGE.md — full setup per source, complete tool catalog, worked examples
- DESIGN.md — the rationale behind each source's guardrails: the different kinds of limits in DART/Telegram (bounding data volume) versus Toss (bounding irreversible intent), and what changed as a result of a security review before this was made public
Status
This is an evolving personal project, not a polished product. The three sources were each built and hardened independently before being composed here; expect rough edges, and expect the tool set to keep growing (especially on the Toss side).
License
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。