
Codal (کدال) Disclosures
io.github.sepehr071由 GitHub 账号 sepehr071 发布v0.2.0更新于 Nov 7, 2026
Read-only codal.ir: search disclosures of Iranian listed companies, read letters and statements.
概览
只读 MCP 服务器,让助手搜索并阅读伊朗上市公司在 Codal(کدال)披露的公告、财务报表和月度报告。
- 可以做什么
- 按代码、公告组或类型、标题词、波斯历日期范围、报告期或追踪号搜索公告,最新在前
- 阅读单份公告的正文或表格,财务报表按表页逐个读取,并给出页面、PDF、Excel 和附件链接
- 阅读月度活动报告:原材料采购、各产品产量与销量、能源使用及外汇收支
- 按代码或名称查询公司与基金,含市场、行业和类型
- 列出公告组与公告类型及其 id,以及某公司的财年结束日期
- 适用场景
- 当用户询问某家伊朗上市公司披露了什么时使用:中期或年度报表、每股收益、月度产销、股东大会决议、增资,或某份 Codal 公告的原文。它不提供股价、盘口或指数,也不给出投资建议。
- 运行要求
- 通过 uvx(或 pip)以 stdio 在本地运行,需要 uv 和 Python 3.10 以上。无需账号或 API 密钥。codal.ir 通常只响应伊朗境内连接,可能需要通过可选变量 CODAL_MCP_PROXY 指定带伊朗出口的 HTTP 代理;系统代理设置会被忽略。需要能访问 codal.ir 的网络。
安装
在 SourceWeft 中
- 打开 控制台中的 Codal (کدال) Disclosures,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
codal-mcp: Codal (کدال) disclosure and financial statement MCP server for AI agents
codal-mcp lets an AI agent search and read Codal, the official disclosure system of Iranian listed companies.
Codal (codal.ir, سامانه جامع اطلاعرسانی ناشران) is where companies and funds on the Tehran Stock Exchange, Iran Fara Bourse
and the other Iranian exchanges publish financial statements, monthly activity reports, meeting decisions and material news.
codal-mcp is an unofficial, read-only MCP server with 5 tools that turns those letters into text and tables for Claude, Cursor or Copilot.
[PyPI] [Python] [CI] [MCP Registry] [License: MIT]
For AI agents · Quick start · What it can do · Tools · FAQ · فارسی
For AI agents
- What: unofficial MCP server (model context protocol) for codal.ir, the disclosure system of companies and funds listed on Iranian exchanges (Tehran Stock Exchange, Iran Fara Bourse, commodity and energy exchanges, and registered unlisted companies).
- Install:
uvx codal-mcporclaude mcp add codal -- uvx codal-mcp. Transport: stdio. Needs uv (Python 3.10+). - Auth: none, no API key or account. Optional
CODAL_MCP_PROXY(HTTP proxy URL, or a comma-separated list); system proxy settings are ignored. - Access: read-only. It cannot log in or file anything, so no confirmation is needed before calling any tool.
- Tools: 5, all prefixed
cd_. Typical sequence:cd_company->cd_search_letters->cd_letter.cd_letter_typesgives letter type ids for filtering;cd_financial_yearsgives a company's fiscal year ends. - Use when: the user asks what a listed company disclosed: its latest interim or annual financial statements, EPS, monthly sales and production, shareholder meeting decisions, dividend schedule, capital increase, or the text of one Codal letter.
- Do not use when: the user wants share prices, order books or market indices (use tsetmc-mcp), or wants to trade.
- Output: compact JSON with ASCII digits. Dates are Jalali (
YYYY/MM/DD), Tehran time. Report amounts are as published, usually million Rial (seeunit_note). - Rate limit: codal.ir blocks an IP for up to an hour after a burst of requests. Make few, targeted calls and reuse results. If a tool says codal.ir is rate limiting, stop and wait.
- Network: codal.ir often answers only Iranian connections. If requests time out, set
CODAL_MCP_PROXYto an Iranian HTTP proxy. - Machine-readable:
server.jsonand the iran-mcp catalog.
Why
Everything an Iranian listed company publishes is on Codal, but behind a search form, Persian digits and report
pages rendered by JavaScript, with one statement sheet per page. Answering "how did Foolad do in the first half of
the year?" means finding the right letter among 1,475 and reading a table on screen. codal-mcp searches with the
site's own filters and returns the statement as rows an agent can read:
You: What did Foolad (فولاد) report for its first six months of 1405?
Agent: calls
cd_search_letters(symbol="فولاد", letter_type=6, period_months=6)->cd_letter(tracing_no=1612323)Mobarakeh Steel's unaudited six-month statements to 1405/06/31 (published 1405/07/30) show operating revenue of 2,509,422,184 million Rial, 56% more than the same period a year earlier, and a net profit of 591,629,286 million Rial, up 133%. Basic earnings per share were 308 Rial.
Real figures from tracing number 1612323, read with codal-mcp on 2026-10-31 and checked against the letter page on codal.ir.
What it can do
- Search disclosures of any publisher on Codal, newest first: by symbol, letter group, letter type, words in the title, Jalali date range, report period (1-12 months) or tracing number
- List the newest letters of the whole market when no filter is given
- Read financial statements as tables, one sheet at a time: income statement, comprehensive income, balance sheet, changes in equity, cash flows and the interpretive report pages, with the unit note and listed capital
- Read monthly activity reports: raw material purchases, production and sales by product, energy use and foreign currency sources and uses
- Read text letters such as explanations, clarifications and notices, without the page's hidden form templates
- Get the links to each letter's page, PDF, Excel file and attachments (with their descriptions and dates)
- Look up companies and funds by symbol or name: ISIC code, market, kind, industry and reporting type
- List letter groups and letter types with the ids the search takes, and a company's fiscal year ends
- Read-only by design: no login, no captcha solving
Example prompts:
- "What did Foolad report in its latest interim financial statements?"
- "Show the balance sheet from that letter."
- "List Iran Khodro's monthly activity reports for 1405."
- "Which companies published monthly activity reports this week?"
- "When does Foolad's fiscal year end, and when were its last annual statements published?"
- آخرین صورتهای مالی میاندورهای فولاد در کدال چه بود؟
- گزارش فعالیت ماهانه مهر ۱۴۰۵ ایران خودرو را بیاور.
- تصمیمات آخرین مجمع عمومی سالیانه فولاد را از کدال بخوان.
Quick start
You need uv. No API key or account.
Claude Code
Claude Desktop
Settings → Developer → Edit Config, then add:
Cursor
Add the Claude Desktop block above to ~/.cursor/mcp.json (or .cursor/mcp.json in a project).
VS Code (Copilot agent mode)
Click Install in VS Code above, or add to .vscode/mcp.json:
Codex CLI
Or in ~/.codex/config.toml:
Gemini CLI
Add to ~/.gemini/settings.json:
Windsurf
Add the Claude Desktop block to ~/.codeium/windsurf/mcp_config.json.
Anything else
It is a standard stdio MCP server: run uvx codal-mcp, or pip install codal-mcp and run codal-mcp.
Tools
Pass the trading symbol in Persian (فولاد, خودرو). Dates are Jalali YYYY/MM/DD; Persian digits are accepted.
All 5 tools are annotated readOnlyHint: true.
How it works
codal-mcp runs locally and calls the same search API and letter pages the codal.ir website uses. It has no hosted
server in between and no API key. Structured reports carry their tables as data inside the letter page; the server
reads that data and returns each row as one line, in the site's column order. Other letters come back as their
visible text. Requests go out through a Chrome-impersonating client, only to search.codal.ir and www.codal.ir.
It only reads.
Good to know
- Rate limit. codal.ir answers HTTP 429 and shows a captcha after a burst of requests, then blocks the IP for up to an hour. The server sends one request at a time, at least 2 seconds apart, keeps the company list and letter types for 12 hours, letters for an hour and searches for 2 minutes, and never retries a 429. After a 429 it stops calling codal.ir for 60 seconds and tells the agent to wait. It never solves captchas.
- Iranian connection. codal.ir often does not answer connections from outside Iran (from a foreign VPN exit, requests timed out in our tests). Set
CODAL_MCP_PROXYto an HTTP proxy with an Iranian exit. System proxy variables are ignored on purpose. - Units. Statement and report amounts are as published, usually million Rial;
unit_notequotes the page. EPS is in Rial. Divide Rial by 10 for Toman. - Tables are text. Each table row is one line with cells separated by
|. Numbers have no thousands separators, and negatives are-Nwhere the site shows(N). Income statements have two «درصد تغيير» columns: change against the same period last year and against the last full year. - One sheet at a time. Financial statements are split into sheets;
cd_letterreturns the list ofsheetsand takessheetto read another one (for example0for the balance sheet). - Attachments are listed, not read. Explanation letters often carry their content in an attached image or PDF.
cd_letterreturns the links. - Long letters are cut at 16,000 characters (
truncated); the PDF link has the whole letter. - Search tips.
period_months=12finds annual reports,6half-year and3quarterly;titlematches words in the letter title.cd_letter_typeslists letter type ids (6 financial statements, 58 monthly activity report, 20 annual general meeting decisions). - Persian text. Letter text is returned as the company wrote it, including Arabic ي/ك. Digits are converted to ASCII.
- What it does not do: no share prices (see tsetmc-mcp), no XBRL parsing, no reading of attached files, no login and no captcha solving.
FAQ
What is Codal (کدال)?
Codal (codal.ir, سامانه جامع اطلاعرسانی ناشران) is the official disclosure system run under Iran's Securities and Exchange Organization (SEO). Companies and funds listed on the Tehran Stock Exchange, Iran Fara Bourse and the other Iranian exchanges publish their financial statements, monthly activity reports, meeting notices and decisions, capital increases and material news there. About 5,400 publishers are on it.
How can an AI read a company's financial statements from Codal?
Add codal-mcp to your agent, then ask in plain language. The agent finds the letter with cd_search_letters
(for example symbol="فولاد", letter_type=6, period_months=6) and reads it with cd_letter(tracing_no=...), which
returns the income statement as rows; sheet=0 gives the balance sheet.
Is there an official Codal API?
There is no documented public API. codal-mcp uses the same search API and letter pages that the codal.ir website
uses, without login, and returns compact JSON.
Does it work outside Iran?
Often not directly: codal.ir did not answer requests from a foreign VPN exit in our tests. Run it on an Iranian
connection, or set CODAL_MCP_PROXY to an HTTP proxy with an Iranian exit.
Why does it say codal.ir is rate limiting?
codal.ir blocks an IP for up to an hour after many requests in a short time. The server spaces and caches requests to avoid it; if it still happens, wait and ask again with fewer calls. Results you already have stay valid.
How is it different from tsetmc-mcp?
tsetmc-mcp gives market data from the Tehran Stock Exchange: prices,
order book, trades and indices. codal-mcp gives what the companies themselves publish: statements, reports and
notices. Use both for a full picture of a stock.
Does it parse XBRL or give financial ratios?
No. It returns the tables as the site shows them; the agent can compute ratios from the rows. For a spreadsheet,
use the excel link that cd_letter returns.
Can it give investment advice?
No. It only reads what companies published. Nothing it returns is financial advice.
How do I debug what the agent sees?
Configuration
فارسی: سرور MCP کدال برای دستیار هوش مصنوعی
پروژه codal-mcp یک سرور MCP غیررسمی و فقطخواندنی برای کدال (codal.ir) است، سامانهای که شرکتها و صندوقهای بورس تهران، فرابورس و بقیه بورسهای ایران اطلاعیهها و صورتهای مالی خود را در آن منتشر میکنند. با این سرور، دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اطلاعیههای کدال را جستجو میکند و متن و جدولهای آنها را میخواند.
چه کارهایی میکند
- جستجوی اطلاعیهها با نماد، گروه و نوع اطلاعیه، کلمههای عنوان، بازه تاریخ شمسی، طول دوره گزارش یا شماره پیگیری؛ جدیدترینها اول.
- خواندن صورتهای مالی به شکل جدول، هر بار یک برگه: سود و زیان، وضعیت مالی، جریانهای نقدی و بقیه برگهها.
- خواندن گزارش فعالیت ماهانه: خرید مواد اولیه، تولید و فروش هر محصول، مصرف انرژی و منابع و مصارف ارزی.
- متن اطلاعیههای توضیحی و شفافسازی، همراه با لینک PDF، فایل اکسل و پیوستها.
- جستجوی شرکتها و صندوقها با نماد یا نام، با کد آیسیک، بازار، صنعت و سالهای مالی.
نکتهها
- فقط اطلاعات منتشرشده را میخواند؛ وارد حسابی نمیشود و توصیه سرمایهگذاری نیست.
- مبلغها همانطور است که در کدال آمده، معمولاً میلیون ریال. تاریخها شمسی است.
- کدال بعد از تعداد زیادی درخواست، دسترسی را تا یک ساعت میبندد. این سرور درخواستها را یکییکی و با فاصله دستکم ۲ ثانیه میفرستد و نتیجه را نگه میدارد.
- کدال معمولاً فقط به اینترنت ایران جواب میدهد. اگر درخواستها بیجواب ماند، متغیر
CODAL_MCP_PROXYرا روی یک پراکسی HTTP با خروجی ایران بگذارید. - کلید API لازم نیست و سرور روی سیستم خود شما اجرا میشود.
نصب (اول uv را نصب کنید). در Claude Code:
در Claude Desktop، Cursor و بقیه برنامهها همان تنظیم بخش Quick start را بگذارید.
نمونه پرسشها
- «آخرین صورتهای مالی ششماهه فولاد را بیاور و سود خالص را با پارسال مقایسه کن.»
- «ترازنامه همان اطلاعیه را هم نشان بده.»
- «گزارشهای فعالیت ماهانه ایران خودرو در سال ۱۴۰۵ را فهرست کن.»
- «این هفته کدام شرکتها گزارش فعالیت ماهانه منتشر کردهاند؟»
- «سال مالی فولاد کی تمام میشود؟»
Development
All tools live in src/codal_mcp/codal.py; all HTTP, pacing and caching in src/codal_mcp/http.py. Keep the live
suite small: codal.ir rate-limits hard. Issues and PRs are welcome.
Releases: bump the version in pyproject.toml and server.json, then push a v* tag. GitHub Actions publishes to PyPI.
Related servers
- tsetmc-mcp for Tehran Stock Exchange prices, order book, real vs legal trading and indices
- iran-tax-mcp for Iranian tax data: goods IDs and VAT, activity codes, property values and tax laws
- iran-mcp: catalog of all Iranian-service MCP servers
Disclaimer
Unofficial and not affiliated with or endorsed by Codal or the Securities and Exchange Organization of Iran (SEO). It is read-only and uses the search API and pages of the codal.ir website, which can change without notice. Data is informational. Nothing here is financial advice.
Author
Built and maintained by Sepehr Radmard (سپهر رادمرد). Connect on LinkedIn or follow @sepehr071 on GitHub for more MCP servers for Iranian websites, all listed in iran-mcp. If this saves you time, a star on the repo helps other people find it.
License
来源:README.md,提交 0a4cb6d
工具
0版本历史
3- v0.2.0最新Nov 7, 2026
- v0.1.1Nov 3, 2026
- v0.1.0Oct 31, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分