get_stock_quoteLABSCO SUMMARY
It remembers your positions between sessions.
That persistence is the difference between a quote lookup and something you can actually ask about your holdings — the portfolio store survives restarts and gets enriched with live prices on every read. If you deploy it anywhere public, set the auth mode deliberately: the tools read a portfolio you own, and none is a real option in the configuration.
What it is
A market-data server that keeps state. Beyond quotes and history it holds a portfolio or watchlist on disk, values it against live prices, and evaluates per-ticker alert thresholds — so "how is my position doing" is one call rather than a series of lookups the model has to assemble.
What you get
- A normalised live quote with price, change, market cap, volume, exchange and timestamp —
get_stock_quote - Chart-ready OHLCV history over a period and interval you choose —
get_price_history - A company profile with key valuation fields where available —
get_company_overview - Your positions and watchlist returned with live quote enrichment and a portfolio market-value summary, and symbols added or removed from the persistent store —
get_portfolio,add_stock,remove_stock - Price thresholds configured per ticker and evaluated against the portfolio's rules —
set_stock_alert,get_portfolio_alerts - Financial headlines for a ticker or a query, and a context summary built for a downstream model —
get_stock_news,financial_context
Requirements
Run it locally over stdio with MCP_TRANSPORT=stdio, the default for Claude Desktop and other local clients, or deploy it as a remote endpoint at https://<host>/mcp where the default transport is streamable-http. Public deployments need authentication: MCP_AUTH_MODE=static with a strong secret in MCP_ACCESS_TOKEN, or MCP_AUTH_MODE=oauth with OAUTH_ISSUER_URL, OAUTH_AUDIENCE and OAUTH_REQUIRED_SCOPES — OAuth client credentials belong in the client, not on the server. One-click deploys are provided for Azure Container Apps, Render and Google Cloud Run, with a Cloudflare Worker available as an HTTPS proxy in front.
Setup effort
Build from source — git clone https://github.com/osamadev/financial_mcp_server.git
USE CASES
Checking how your holdings are doing
Read the portfolio and get positions plus live valuation in one response rather than quoting each ticker separately.
Being told when a price crosses a line you care about
Set above and below thresholds per ticker, then evaluate which have triggered.
Researching a company before adding it
Pull the quote, the profile and recent headlines together, then add the symbol to the watchlist if it survives.
Backtesting or charting a trend
Fetch OHLCV history at the interval you need and work from the series rather than a single snapshot.
11 tools
Listed in project docs. Your client may show a different list.
get_price_historyget_company_overviewget_portfolioadd_stockremove_stockset_stock_alertget_portfolio_alertsget_stock_newsfinancial_contextmarket_summaryBEFORE YOU INSTALL
What to know first
Tools you get
11 tools named in the project's documentation.
Requires
- Python 3.7+
- SERPAPI_API_KEY in the project's .env
- MCP_AUTH_MODE with an MCP_ACCESS_TOKEN of your choosing (or MCP_AUTH_MODE=none) in the project's .env
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/osamadev/financial_mcp_server.git
cd financial_mcp_server
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -r requirements.txtCreate a .env file in the project root. SERPAPI_API_KEY is required (news search behind get_stock_news, financial_context and market_summary). The server refuses to start unless MCP_AUTH_MODE=static comes with an MCP_ACCESS_TOKEN value (any string of your own for local use) or MCP_AUTH_MODE=none. TELEGRAM_BOT_TOKEN / TELEGRAM_USER_ID are only used when ENABLE_TELEGRAM_ALERTS=true; OPENAI_API_KEY only when SUMMARIZER_PROVIDER=openai (the default is a local Ollama at http://localhost:11434).
MCP Clients
Claude Desktop
{
"mcpServers": {
"Financial-MCP-Server": {
"command": "<YOUR_PATH_TO_FINANCIAL_MCP_SERVER>/.venv/bin/mcp",
"args": [
"run",
"<YOUR_PATH_TO_FINANCIAL_MCP_SERVER>/server.py"
]
}
}
}<YOUR_PATH_TO_FINANCIAL_MCP_SERVER> is the full path to your clone, so Claude Desktop runs the virtual environment you installed into. The server reads its keys from the .env file in that folder. If you add an "env" section instead, give it real values: an empty string there overrides the .env value.