Borsa MCP: market data for BIST, US equities, funds and crypto over MCP
MCP Server for Turkish & American Stock Exchange and Fund Data
At a glance
- What is it?
- Borsa MCP is a FastMCP server that exposes Turkish and US market data, TEFAS funds, crypto, foreign exchange and macroeconomic series to LLM clients through a set of consolidated tools, pulling from KAP, Yahoo Finance, BtcTurk, Coinbase, borsapy and the TCMB. It runs as a remote endpoint or locally via uvx, and the README is explicit that the numbers it returns need checking.
- Who is it for?
- Borsa MCP fits a developer who wants an agent to answer questions about Turkish and US markets, Turkish funds and macroeconomic series without wiring up six data sources by hand, and who can accept that the answers come from public endpoints with their own limits. It does not fit a trading system, since the project states plainly that it is not investment advice, and the tool counts in the documentation disagree.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 29 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A warning header that says more than the feature list
The README opens with a section of important warnings, and they are the first thing a reader should take seriously. LLMs can hallucinate, so the data must be verified. It is not investment advice, and you are told to consult a professional adviser. It is for educational purposes, and the responsibility is yours. Those three lines set the frame for everything else, and they are the correct frame for a project whose entire purpose is to hand an agent a way to ask questions about live markets. The server is described as a FastMCP server giving LLM access to Borsa Istanbul and US equities, TEFAS funds, cryptocurrencies and foreign exchange and commodity data, pulling from sources including KAP, Yahoo Finance, BtcTurk, Coinbase, borsapy and the TCMB. The description credits 26 combined tools with comprehensive financial analysis, and the feature list below it credits 28 combined tools in version 0.9.0, while the package metadata says 23 consolidated tools. The project has moved fast and the numbers have not been reconciled.
The remote endpoint moved, and the old one no longer serves data
The project announced that the server has moved to https://borsa.surucu.dev/mcp. If you were using the old address, borsamcp.fastmcp.app, you are asked to update your configuration to the new one. The old address will stay up for a while, but it now returns only the migration notice and no market data, which is a polite way of saying that anything still pointing at it is broken in a way that does not raise an error. The new route is the one that matters. There is also a sponsorship note, thanking a cloud provider that sponsors the author's open source projects, with a discount code for the reader. The read-through for an adopter is that the hosted endpoint is the vendor's infrastructure and its availability is not something the repository controls, which is exactly why the local installation path exists.
Remote setup needs no Python, only a client configuration
The quick start is the remote MCP route, and it is presented as requiring no installation. For Claude Desktop, which the README notes needs a paid subscription, the steps are to open the app, go to Settings, then Connectors, then Add Custom Connector, enter the name Borsa MCP and the URL, and press Add. For Google Antigravity, the path goes through the MCP Store and the Manage MCP Servers button, then View raw config, where the following is added to the mcp_config.json file:
{
"mcpServers": {
"borsa-mcp": {
"serverUrl": "https://borsa.surucu.dev/mcp",
"headers": {
"Content-Type": "application/json"
}
}
}
}The README gives three example questions in Turkish, asking for the last month's performance of the GARAN share, the current state of the XU100 index, and the TRY price of Bitcoin. The tip attached to the section makes the pitch for the remote route: because it is remote, you can reach Turkish financial markets from Google Antigravity without installing Python, uv or anything else. That is the tradeoff in one sentence, no setup against a dependency on someone else's server.
Local install through uvx, for clients that need a local process
The advanced section covers local installation for clients such as 5ire, and the README says you can skip it if you use the remote MCP. The prerequisites are Python 3.11 or newer, with the Add Python to PATH option ticked during installation, Git on Windows, and the Microsoft Visual C++ Redistributable, which some Python packages need. uv is the tool manager, and the README gives the install command for each platform. In the 5ire client, you add a local tool with the tool key borsamcp, the name Borsa MCP, and a command that runs the server straight from the Git repository:
uvx --from git+https://github.com/saidsurucu/borsa-mcp borsa-mcpRunning from the git URL means there is no release to pin, so the version you get is whatever the default branch holds at that moment. The repository itself has no GitHub releases, so there is no tag to point uvx at if you want reproducibility. The package metadata does define a console script, borsa-mcp, wired to unified_mcp_server:main, so a local install from the package is also possible with uv or pip.
What the tools actually cover, market by market
The feature list is the most concrete part of the document and it is worth walking through, because it defines the surface an agent can touch. Equities cover 758 BIST companies plus all NYSE and NASDAQ companies through a single tool with a market parameter. Technical screening comes in two flavours, a BIST scanner with RSI, MACD, Supertrend and T3, and a US screener with 23 presets. The TCMB EVDS integration reaches 145 categories and tens of thousands of macro series, covering interest rates, foreign exchange, the balance of payments and inflation, with a free API key, and there is a separate macro tool for TCMB inflation data and calculation helpers. Index data covers BIST and US indices in one tool, value investing gets a Buffett analysis and financial health tools such as ROE, ROIC and the Altman Z-Score, and pivot points calculate three resistance and three support levels. TEFAS funds number more than 836, with performance, portfolio and comparison through a compare_mode parameter, and crypto combines BtcTurk and Coinbase in a single tool.
Currencies, commodities, a calendar and an Islamic finance flag
The rest of the tool surface is smaller but distinctive. Foreign exchange and commodities cover 65 currencies, gold and oil through the borsapy integration. The economic calendar spans seven countries, TR, US, EU, DE, GB, JP and CN. There is a participation finance, or Islamic finance, compliance lookup exposed through an include_islamic parameter, which is a detail you will not find in most market data tools. KAP disclosures come with list and detail access, the detail call taking a news_id parameter. Three help tools exist, get_screener_help, get_scanner_help and get_regulations, which is a sensible design for an agent that has to discover the vocabulary before using the rest. The README also lists LLM-oriented touches, English descriptions and domain-specific tool selection, and notes the server runs on FastMCP 2.14 with response caching and background tasks. The two regulatory documents in the tree, fon_mevzuat_kisa.md and fon_mevzuat_uzun.md, hold the fund regulation text, and a Python module of the same name exposes it.
The code layout, and a dependency pin that explains a bug
The repository layout shows how the pieces fit. There is a unified_mcp_server.py that holds the entry point, a borsa_client.py for the HTTP work, borsa_models.py for the data models, database.py, and a providers directory and models directory that the package configuration includes. Two files are worth reading before you touch the code. token_optimizer.py and compact_json_optimizer.py exist because the responses are large enough to matter to a context window. And the dependency list carries a comment that is more informative than most changelogs, explaining that yfinance 1.5.x is required because FastInfo's mapping keys are camelCase, lastPrice and marketCap, so the snake_case .get('last_price') the provider used returned None for every price field, silently, because strip_nulls then removed them. That is a bug class worth remembering: the failure was invisible, and the fix was a version floor rather than a code change.
Container, health check and the deployment targets
The Dockerfile shows the runtime shape. It is based on python:3.12-slim with gcc and g++ installed, copies the Python files along with the providers and models directories, installs the requirements, adds uvicorn with the standard extras, installs the package in editable mode and exposes port 8000. The comment on the port is precise: it is documentation only, because Cloud Run injects its own PORT at runtime, usually 8080, while local and Fly runs fall back to 8000 through a shell parameter expansion. A HEALTHCHECK runs every thirty seconds with a ten second timeout and a forty second start period, hitting the /health path on the runtime port, and Cloud Run ignores it and probes the container port directly. The deployment files confirm the target list, with a fly.toml for Fly.io, a deploy-cloudrun.sh script for Google Cloud Run, and a .gcloudignore alongside a .dockerignore. The health check also uses proxy headers and a forwarded allow list so that uvicorn trusts the reverse proxy in front of it, which is what lets the server emit https URLs.
Editorial conclusion
Borsa MCP fits a developer who wants an agent to answer questions about Turkish and US markets, Turkish funds and macroeconomic series without wiring up six data sources by hand, and who can accept that the answers come from public endpoints with their own limits. It does not fit a trading system, since the project states plainly that it is not investment advice, and the tool counts in the documentation disagree. Before pointing an agent at it, read the warnings at the top of the README about hallucination and verification, confirm which of the remote and local setups you want given the server has moved address, and check the tool count you are relying on, because the description, the feature list and the package metadata each give a different number.
Frequently asked questions
How many tools does Borsa MCP expose?
The numbers in the documentation disagree: the repository description says 26 combined tools, the feature list says 28 combined tools in version 0.9.0, and the package description says 23 consolidated tools with cross-market return comparison. The tool names are listed individually, so the exact count is worth confirming against the server itself.
What is the current remote MCP address for Borsa MCP?
The server has moved to https://borsa.surucu.dev/mcp. The previous address, borsamcp.fastmcp.app, remains online for a while but now returns only the migration notice and no market data.
How do I run Borsa MCP locally instead of using the remote server?
Install Python 3.11 or newer, uv, and on Windows the Microsoft Visual C++ Redistributable, then add a local tool in your MCP client with the command uvx --from git+https://github.com/saidsurucu/borsa-mcp borsa-mcp, using the tool key borsamcp.
What data sources does Borsa MCP pull from?
The README lists KAP, Yahoo Finance, BtcTurk, Coinbase, borsapy and the TCMB, and the features describe coverage of BIST and US equities, TEFAS funds, crypto, 65 currencies, gold and oil, TCMB macroeconomic series, and an economic calendar for seven countries.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/saidsurucu-borsa-mcp)Was this useful?