mcp-finance
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-financeGet the latest news for Microsoft"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Introduction
This is a MCP server that helps your MCP client/LLM get access to financial data like stock price, company info, and company news.
It is powered by the yfinance Python library and MarketAux API.
Tools available:
Get Stock Price: Fetch the latest stock price for a symbol.
Get Company Info: Fetch basic company info(Name, Sector, Industry, Website, Business Summary)
Get Historical Data: Fetch historical data for a stock
Get Stock News: Fetch latest news related to a stock symbol
Get Market Indices: Fetch the latest data for major US market indices.
Setup your environment
1. Installing uv
For MacOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | shFor Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Make sure to restart your terminal afterwards to ensure that the uv command gets picked up.
Related MCP server: Yahoo Finance MCP Server
2. Setting up the server
Now, let’s create and set up our project:
Cloning the repo
git clone git@github.com:nimitmk7/mcp-finance.git
Set up environment variables:
# Create .env file for your API keys
cp .env.example .env
# Set API key in .env
MARKETAUX_API_KEY=your-marketaux-api-keyAdding the server to Claude Client
If you are using Claude Desktop Client, you can go to Settings -> Developer, and press on the button 'Edit Config'. It will open claude_desktop_config.json. Put the following configuration with your relevant details in the file:
For Mac Users
{
"mcpServers": {
"mcp-finance": {
"command": "/Users/<username>/.local/bin/uv",
"args": [
"--directory",
"/Users/<username>/<path-to-dir>/mcp-finance",
"run",
"mcp_finance.py"
]
}
}
}For Windows users
{
"mcpServers": {
"mcp-finance": {
"command": "C:\\Users\\<username>\\.local\\bin\\uv.exe",
"args": [
"--directory",
"C:\\Users\\<username>\\<path-to-dir>\\mcp-finance",
"run",
"mcp_finance.py"
]
}
}
}If you already have some MCP servers, just add the mcp-finance config in the list of configs of MCP servers.
Restart the Claude Desktop client after these steps.
3. Verify the setup
In the UI, click on the hammer icon and check whether our server tools are present in the list of available tools.
4. Example Usage
Try asking Claude questions like:
"What is the price of Nvidia stock right now"
"How much has the share price of Google changed over 1 month "
"Get me latest news for Microsoft"
Available Tools
5 toolsget_company_infoC
Fetch basic company info.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden of behavioral disclosure. It only restates that the tool fetches info, without mentioning output format, data sources, potential errors, or the read-only nature beyond what is obvious from the verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler, making it easy to scan. However, it is so brief that it borders on under-specification, which slightly detracts from the conciseness advantage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and absence of an output schema, the description fails to communicate what 'basic company info' includes or what the response will look like. It also omits parameter semantics, leaving the agent under-informed for a tool that has only one parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter, 'symbol', with 0% description coverage. The description does not explain what 'symbol' refers to (e.g., ticker format, exchange, case sensitivity) or any constraints, so it adds no meaning beyond the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Fetch' and names the resource 'company info', which distinguishes it from sibling tools that handle stock price, historical data, news, or indices. However, 'basic company info' is vague about what exactly is included.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like get_stock_price or get_stock_news. There are no exclusions or contextual hints, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historical_dataB
Fetch historical stock data.
Args:
symbol: Stock ticker symbol
period: Period of data (e.g., 1d, 5d, 1mo, 3mo, 1y)
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | 5d | |
| symbol | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full burden of behavioral disclosure. It only says 'Fetch historical stock data' which implies a read operation, but doesn't state any limitations, the nature of the returned data (e.g., OHLCV), or whether any rate limits or permissions apply. There is no explicit statement that it is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: a single lead sentence plus a straightforward parameter list. Every sentence earns its place, and the structure front-loads the core purpose before detailing arguments. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description adequately explains the main purpose and all parameters. However, it lacks any mention of what the returned data looks like, any usage constraints, or relationship to sibling tools. Given the minimal complexity, it is borderline adequate but leaves room for more helpful context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context beyond the schema by explaining 'symbol' as 'Stock ticker symbol' and 'period' with concrete examples of valid values ('1d, 5d, 1mo, 3mo, 1y'). Since the schema has no descriptions for properties, this fills a critical gap and helps the agent construct valid calls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches historical stock data, which is a specific verb and resource. It distinguishes from siblings like get_stock_price (current price) and get_company_info by the 'historical' qualifier, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_stock_price for current quotes or get_market_indices for broader market data. The description only states what it does, not when it should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_indicesA
Fetch the latest data for major US market indices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Fetch the latest data' implies a read operation but doesn't disclose what data fields will be returned, whether the data is real-time or delayed, or any rate limits. The description is too thin to convey behavioral traits beyond the basic fetch action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence delivers the essential purpose without any filler. Every word is meaningful, and the description is well-sized for a tool with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (zero parameters, no output schema), the description adequately names the resource and action. However, it could be improved by listing example indices (e.g., S&P 500, Dow, Nasdaq) or clarifying that it returns current values only. Still, for a simple list tool, the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema provides no properties to explain. The description adds a slight semantic hint by specifying 'major US market indices,' which implicitly defines the scope of the return set. With no parameters, the description doesn't need to compensate, so the baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Fetch the latest data for major US market indices' clearly identifies the action (fetch) and the resource (major US market indices), distinguishing it from sibling tools that target individual stocks, company info, historical data, or news. The scope is specific enough for an agent to select it for index-related queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus the sibling tools (e.g., 'Use for market indices; for individual stocks use get_stock_price'). The description only states what it does, so the agent must infer usage context from the tool name and sibling list, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_newsC
Fetch latest news using MarketAux API.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| symbol | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It mentions the external API but omits response format, filtering behavior, rate limits, or error handling. The 'latest' scope is vague and unqualified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It is concise, though under-specification in content is penalized elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a 2-parameter tool with no annotations and no output schema, the description is insufficient. It lacks critical context about how the symbol affects results, default behavior, and what the returned news payload contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain either parameter. The required `symbol` and optional `count` are completely undocumented, adding no semantic value beyond the schema's types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches latest news and names the MarketAux API. It distinguishes from siblings like get_stock_price and get_company_info, though it could explicitly mention that news is for a specific stock symbol.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Sibling tools exist but no comparative context is given, leaving the agent without usage criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_priceA
Fetch the latest stock price for a symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It only indicates a read operation ('Fetch') and the recency ('latest'), but omits important details like response format, error handling, or data source reliability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It immediately states the action and target, making it easily scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one param, no annotations, no output schema), but the description does not mention return values or edge cases. While the purpose is clear, the missing output details make it only partially complete for an agent deciding on use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It mentions 'symbol' and implies it is a stock ticker, but does not elaborate on format or examples. For a single parameter, this is minimally adequate, though it adds little beyond the schema's title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch') and resource ('latest stock price') with a clear scope ('for a symbol'). It distinguishes itself from sibling tools like get_historical_data and get_stock_news by focusing on the current price.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when the latest stock price is needed, but provides no explicit guidance on when to choose this tool over alternatives. It does not mention exclusions or name sibling tools, leaving usage context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
get_company_info - First observed
get_historical_data - First observed
get_market_indices - First observed
get_stock_news - First observed
get_stock_price
TDQS
Scored across 5 tools
Each tool targets a distinct resource: price, company info, historical data, news, and market indices. There is no overlap in purpose, making selection unambiguous.
All tool names follow the consistent 'get_' prefix followed by a clear resource noun (e.g., get_stock_price, get_company_info). The pattern is uniform and predictable.
With 5 tools, the server is well-scoped for a finance data provider. Each tool covers a core data category without being bloated or insufficient.
The server covers the primary financial data needs: current price, company info, historical trends, news, and market indices. Minor gaps exist (e.g., no financial statements or symbol search), but core workflows are well-supported.
Maintenance
Related MCP Connectors
Financial market, fundamental, valuation, risk, ownership, forecast, and portfolio tools.
Fetch current stock prices and key data for symbols across global markets. Look up companies like…
Real-time news with bias scoring, live market data, and AI-powered options pricing
Analyze stocks with summaries, price targets, and analyst recommendations. Track SEC filings, divi…
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides comprehensive financial market data and news through the Finnhub API. Enables real-time stock quotes, company profiles, financial metrics, analyst recommendations, and market news access.1MIT
- AlicenseNot gradedqualityDmaintenanceProvides real-time stock quotes, historical price data, financial news, and multi-stock comparisons using Yahoo Finance data. Enables users to access comprehensive financial market information through natural language queries.541 npmMIT
- AlicenseNot gradedqualityNot gradedmaintenanceProvides real-time financial data from Yahoo Finance, enabling stock price lookups, historical data analysis, company information retrieval, and multi-stock comparisons through natural language queries.-
- AlicenseAqualityDmaintenanceProvides comprehensive financial analysis and real-time market data including stock information, options chains, technical indicators, financial statements, earnings calendars, and market sentiment indicators through integration with yfinance and other financial APIs.14MIT