Skip to main content
Glama
leoncuhk

MCP Yahoo Finance

by leoncuhk

MCP Yahoo Finance

A Model Context Protocol (MCP) server for Yahoo Finance interaction. This server provides tools to get pricing, company information, and generate financial visualizations.

This project is a fork and extension of maxscheijen/mcp-yahoo-finance, with added visualization capabilities.

Features

  • Financial Data: Get current stock prices, historical prices, dividends, income statements, and more

  • Visual Analytics: Generate beautiful visualizations for market sentiment, portfolio tracking, and technical analysis

  • Easy Integration: Works with Claude Desktop, VS Code, Cursor, and other MCP clients

Related MCP server: Yahoo Finance MCP Server

Setup Instructions

1. Clone the Repository

Clone this repository to your local machine:

git clone https://github.com/leoncuhk/mcp-yahoo-finance.git
cd mcp-yahoo-finance

2. Install Dependencies

Install the required dependencies using pip:

pip install -r requirements.txt

If the requirements.txt file is missing, you can install dependencies directly:

pip install mcp yfinance pandas matplotlib seaborn plotly kaleido numpy pillow base64io

3. Configure MCP Client

Claude Desktop

Add this to your claude_desktop_config.json (create it if it doesn't exist):

  • macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
    "mcpServers": {
        "yahoo-finance": {
            "command": "uvx",
            "args": ["mcp-yahoo-finance"]
        }
    }
}

You can also use docker:

{
    "mcpServers": {
        "yahoo-finance": {
            "command": "docker",
            "args": ["run", "-i", "--rm", "IMAGE"]
        }
    }
}

VSCode

Add this to your .vscode/mcp.json:

{
    "servers": {
        "yahoo-finance": {
            "command": "uvx",
            "args": ["mcp-yahoo-finance"]
        }
    }
}

Cursor

Add this to your Cursor MCP configuration:

{
    "mcp-servers": {
        "yahoo-finance": {
            "command": "uvx",
            "args": ["mcp-yahoo-finance"]
        }
    }
}

4. Restart your MCP client

After configuring, restart Claude Desktop or your preferred MCP client to load the server.

Available Tools

Basic Financial Data

  • get_current_stock_price: Get the current stock price for a symbol

  • get_stock_price_by_date: Get the stock price for a specific date

  • get_stock_price_date_range: Get stock prices for a date range

  • get_historical_stock_prices: Get historical stock data with customizable periods

  • get_dividends: Get dividend information for a stock

  • get_income_statement: Get income statement data

  • get_cashflow: Get cashflow statement data

  • get_earning_dates: Get earning dates information

  • get_news: Get recent news for a stock

Visualization Tools

  • generate_market_dashboard: Create a market sentiment dashboard with real-time index performance

  • generate_portfolio_report: Generate a portfolio performance tracking report

  • generate_stock_technical_analysis: Create a technical analysis report for a stock

Visualization Examples

Market Sentiment Dashboard

Market Sentiment Dashboard

Portfolio Tracking

Portfolio Performance Tracking

Stock Technical Analysis

Stock Price Technical Analysis

Example Prompts

Here are some example prompts to try with Claude:

Basic Financial Data

  1. "What is the current stock price of Apple?"

  2. "What is the difference in stock price between Apple and Google?"

  3. "How much did the stock price of Apple change between 2025-01-01 and 2025-3-31?"

Visualization Requests

  1. "Generate a market sentiment dashboard showing the performance of major indices."

  2. "Create a portfolio tracking report for tech stocks AAPL, MSFT, GOOGL, AMZN, and NVDA."

  3. "Show me a technical analysis chart for Tesla stock with moving averages and support/resistance levels."

  4. "Generate a market sentiment dashboard with S&P 500, Dow Jones, and NASDAQ."

  5. "Can you create a portfolio report for my energy stocks: XOM, CVX, BP, COP, and SLB?"

  6. "I need a detailed technical analysis for NVDA stock showing RSI and volume patterns."

Testing

To test the visualization capabilities:

cd tests
python test_visualization.py

This will generate example visualization images in the examples directory.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgements

Available Tools

10 tools
get_cashflowC

Get cashflow for a given stock symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock symbol in Yahoo Finance format.
freqNoAt what frequency to get cashflow statements. Defaults to "yearly". Valid freqencies: "yearly", "quarterly", "trainling"

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It only states the basic action without mentioning data freshness, rate limits, authentication needs, or error handling. For a financial data tool, this lack of context on reliability and constraints is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what the cashflow data includes (e.g., operating, investing, financing activities), format of return values, or any prerequisites. For a financial data retrieval tool, this leaves critical gaps in understanding the tool's behavior and output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents both parameters ('symbol' and 'freq'). The description adds no additional meaning beyond implying cashflow is retrieved per stock symbol, which is already clear from the schema. Baseline 3 is appropriate as the schema handles parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('cashflow for a given stock symbol'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its siblings like 'get_income_statement' or 'get_dividends', which are also financial data retrieval tools for stocks, so it misses full sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_income_statement' and 'get_dividends' available, it doesn't specify scenarios where cashflow data is preferred over other financial metrics, leaving the agent without context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_current_stock_priceC

Get the current stock price based on stock symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock symbol in Yahoo Finance format.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool's function but doesn't describe traits such as rate limits, authentication needs, data freshness, error handling, or return format. This leaves significant gaps for a tool that likely interacts with external data sources.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It is appropriately sized for a simple tool and front-loads the key information without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like data source reliability, potential errors, or return structure. For a tool fetching real-time financial data, more context on limitations or usage constraints would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the parameter 'symbol' fully documented in the schema as 'Stock symbol in Yahoo Finance format.' The description adds no additional meaning beyond what the schema provides, so it meets the baseline for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('current stock price') with the specific condition ('based on stock symbol'). It distinguishes from siblings like get_historical_stock_prices and get_stock_price_by_date by specifying 'current', but doesn't explicitly contrast them in the description text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like get_stock_price_by_date or get_historical_stock_prices. It lacks any mention of prerequisites, exclusions, or comparative contexts with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dividendsC

Get dividends for a given stock symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock symbol in Yahoo Finance format.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure but offers minimal information. It does not mention if this is a read-only operation, potential rate limits, authentication needs, error handling, or the format of returned data. This leaves significant gaps in understanding how the tool behaves beyond its basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It is appropriately sized and front-loaded, making it easy to grasp quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It does not explain what the tool returns (e.g., dividend amounts, dates, frequency), potential limitations, or how it integrates with sibling tools. For a financial data tool with no structured output, more context is needed to ensure proper usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter semantics beyond what the input schema provides. The schema has 100% coverage with a clear description for the 'symbol' parameter, so the baseline is 3. The description does not compensate with additional details like examples or constraints, but it doesn't need to given the schema's completeness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('dividends for a given stock symbol'), making the purpose immediately understandable. It does not explicitly differentiate from siblings like 'get_earning_dates' or 'get_historical_stock_prices', which might also involve financial data retrieval, so it misses full sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. For example, it does not specify if this is for current dividends, historical dividends, or how it differs from other financial data tools like 'get_cashflow' or 'get_income_statement'. The description lacks context on prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_earning_datesC

Get earning dates.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock symbol in Yahoo Finance format.
limitNomax amount of upcoming and recent earnings dates to return. Default value 12 should return next 4 quarters and last 8 quarters. Increase if more history is needed.

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure but offers minimal information. It implies a read-only operation ('Get'), but doesn't address critical aspects like rate limits, authentication needs, error handling, or what the return format looks like (e.g., structured data vs. raw text). For a tool with no annotation coverage, this leaves significant gaps in understanding how the tool behaves in practice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at just three words, with zero wasted language. It's front-loaded with the core purpose, though this brevity comes at the cost of completeness. Every word earns its place by directly stating the tool's function, making it efficient despite being under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of financial data tools and the lack of both annotations and an output schema, the description is incomplete. It doesn't explain what earning dates are, how they're structured, or what the tool returns, forcing the agent to infer from context. While the schema covers parameters well, the overall context for effective tool use is insufficient, especially compared to sibling tools that might overlap in purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter-specific information beyond what's already in the schema, which has 100% coverage with detailed descriptions for both 'limit' and 'symbol'. Since the schema fully documents the parameters, the baseline score is 3. The description doesn't compensate with additional context like examples or edge cases, but it also doesn't contradict the schema, so it meets the minimum viable standard.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get earning dates.' is a tautology that essentially restates the tool name without adding meaningful context. It specifies the verb 'Get' and resource 'earning dates', but doesn't clarify what earning dates are (e.g., earnings announcement dates for stocks) or how they differ from other financial data tools. While it's clear this retrieves earning dates, it lacks the specificity needed to distinguish it from sibling tools that also retrieve financial data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like get_historical_stock_prices or get_news, nor does it explain why one would choose earning dates over other financial metrics. There's no context about use cases, prerequisites, or exclusions, leaving the agent with no basis for tool selection beyond the name itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_historical_stock_pricesC

Get historical stock prices for a given stock symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock symbol in Yahoo Finance format.
periodNoThe period for historical data. Defaults to "1mo". Valid periods: "1d", "5d", "1mo", "3mo", "6mo", "1y", "2y", "5y", "10y", "ytd", "max"
intervalNoThe interval beween data points. Defaults to "1d". Valid intervals: "1d", "5d", "1wk", "1mo", "3mo"

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions 'Get historical stock prices' but doesn't disclose behavioral traits such as rate limits, authentication requirements, data freshness, error handling, or response format. For a tool with no annotation coverage, this leaves significant gaps in understanding how it behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with every word contributing to understanding what the tool does.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of financial data tools, no annotations, and no output schema, the description is incomplete. It doesn't explain what the return values look like (e.g., data format, structure), nor does it address important context like data sources (Yahoo Finance implied by parameter but not stated), limitations, or error cases. For a tool with 3 parameters and no structured output documentation, more completeness is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all three parameters ('symbol', 'interval', 'period') well-documented in the schema including defaults and valid values. The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline of 3 for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'historical stock prices for a given stock symbol', making the purpose unambiguous. However, it doesn't explicitly differentiate from siblings like 'get_stock_price_by_date' or 'get_stock_price_date_range', which likely offer similar functionality with different parameter approaches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools related to stock prices (e.g., 'get_current_stock_price', 'get_stock_price_by_date', 'get_stock_price_date_range'), there's no indication of which tool is appropriate for different scenarios like real-time vs. historical data or single-date vs. range queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_income_statementC

Get income statement for a given stock symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock symbol in Yahoo Finance format.
freqNoAt what frequency to get cashflow statements. Defaults to "yearly". Valid freqencies: "yearly", "quarterly", "trainling"

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves data ('Get'), implying a read-only operation, but doesn't specify whether it requires authentication, has rate limits, returns real-time or historical data, or handles errors. For a data-fetching tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose, making it easy to parse quickly. Every word earns its place, and there's no redundant or verbose language, achieving optimal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (financial data retrieval), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the income statement includes (e.g., revenue, expenses), the data format returned, or any limitations (e.g., symbol availability, time ranges). For a tool with no structured output information, this leaves significant gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter semantics beyond what the input schema provides. The schema has 100% description coverage, clearly documenting both parameters (symbol and freq) with details like valid frequencies and defaults. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't compensate or add extra meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Get income statement for a given stock symbol,' which includes a specific verb ('Get') and resource ('income statement'). It distinguishes from siblings like get_cashflow and get_historical_stock_prices by specifying the financial statement type. However, it doesn't explicitly contrast with all siblings (e.g., get_earning_dates), keeping it from a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer get_income_statement over other financial data tools like get_cashflow or get_historical_stock_prices, nor does it specify any prerequisites or exclusions. This lack of contextual direction limits its utility for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_newsC

Get news for a given stock symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock symbol in Yahoo Finance format.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Get news') but doesn't describe behavioral traits such as data sources, rate limits, authentication needs, or what 'news' entails (e.g., recent articles, headlines). This leaves significant gaps in understanding how the tool behaves beyond its basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded, consisting of a single sentence that directly states the tool's purpose. There is no wasted language or unnecessary elaboration, making it efficient and easy to parse for an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of fetching news data, the lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'news' includes (e.g., format, recency, sources) or behavioral aspects like error handling. For a tool with no structured support, this description leaves too many unanswered questions for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds minimal meaning beyond the input schema, which has 100% coverage and clearly documents the 'symbol' parameter. The description implies the parameter is used to fetch news but doesn't provide additional context like format examples or constraints. Since the schema does the heavy lifting, a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('news for a given stock symbol'), making it immediately understandable. However, it doesn't explicitly differentiate from siblings like 'get_recommendations' or 'get_earning_dates', which might also provide news-related information, so it falls short of a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for use, or compare it to sibling tools like 'get_recommendations' or 'get_earning_dates', which could overlap in functionality. This lack of usage context leaves the agent without clear direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recommendationsC

Get analyst recommendations for a given symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock symbol in Yahoo Finance format.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Get') but doesn't describe any traits like whether it's a read-only operation, potential rate limits, data freshness, or what the output format looks like (e.g., list of recommendations, summary). This is a significant gap for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It is appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of financial data tools, no annotations, and no output schema, the description is incomplete. It doesn't explain what 'analyst recommendations' entail (e.g., buy/sell ratings, target prices), how results are returned, or any behavioral aspects, leaving the agent with insufficient context for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the single parameter 'symbol' fully documented in the schema as 'Stock symbol in Yahoo Finance format.' The description adds no additional meaning beyond this, so it meets the baseline for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('analyst recommendations'), specifying it's for a given symbol. However, it doesn't differentiate from sibling tools like get_news or get_current_stock_price, which might also provide related financial data, so it doesn't reach the highest clarity level.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any context, prerequisites, or exclusions, leaving the agent to infer usage from the tool name alone among many financial data siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_price_by_dateB

Get the stock price for a given stock symbol on a specific date.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock symbol in Yahoo Finance format.
dateYesThe date in YYYY-MM-DD format.

TDQS

B3.1/5.0
Behavior2/5

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. It states the tool's function but lacks details on error handling, data sources (e.g., Yahoo Finance implied by schema but not confirmed), rate limits, or authentication needs. For a read operation with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary details. It uses minimal words to convey the essential action and inputs, making it easy for an agent to parse quickly. Every word earns its place, with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (2 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks behavioral context and usage guidelines. Without annotations or output schema, the description should ideally add more about return values or error cases, but it's sufficient for a simple lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with clear descriptions for both parameters ('date' and 'symbol'). The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints. Given the high schema coverage, a baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get the stock price for a given stock symbol on a specific date.' It specifies the verb ('Get'), resource ('stock price'), and key constraints ('on a specific date'). However, it doesn't explicitly differentiate from siblings like 'get_current_stock_price' or 'get_historical_stock_prices', which would require a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like 'get_current_stock_price' (for current prices) or 'get_historical_stock_prices' (for multiple dates), leaving the agent to infer usage from context alone. This lack of explicit comparison or exclusion criteria limits its utility.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_price_date_rangeC

Get the stock prices for a given date range for a given stock symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock symbol in Yahoo Finance format.
start_dateYesThe start date in YYYY-MM-DD format.
end_dateYesThe end date in YYYY-MM-DD format.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the action 'Get' but does not specify whether this is a read-only operation, if it requires authentication, rate limits, error handling, or the format of returned data. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It is appropriately sized for the tool's complexity, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It does not explain what data is returned (e.g., price types, structure), potential errors, or behavioral traits like rate limits. For a tool with no structured support, more contextual detail is needed to adequately inform an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, clearly documenting all three parameters with details like format (YYYY-MM-DD) and source (Yahoo Finance). The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'stock prices' with scope 'for a given date range for a given stock symbol', making the purpose specific and understandable. However, it does not explicitly differentiate from sibling tools like 'get_historical_stock_prices' or 'get_stock_price_by_date', which likely serve similar purposes, preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as 'get_historical_stock_prices' or 'get_stock_price_by_date', nor does it mention any prerequisites or exclusions. It only states what the tool does, leaving usage context implied at best.

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.

  1. 10 tool updates
    • First observedget_cashflow
    • First observedget_current_stock_price
    • First observedget_dividends
    • First observedget_earning_dates
    • First observedget_historical_stock_prices
    • First observedget_income_statement
    • First observedget_news
    • First observedget_recommendations
    • First observedget_stock_price_by_date
    • First observedget_stock_price_date_range

TDQS

B3.1/5.0

Scored across 10 tools

Disambiguation4/5

Most tools are clearly distinct, focusing on specific financial data types like cashflow, dividends, or news. However, there is some overlap between get_current_stock_price, get_stock_price_by_date, and get_stock_price_date_range, which could cause confusion about which to use for price queries, though their descriptions help clarify the differences.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with 'get_' prefix and snake_case, such as get_cashflow and get_historical_stock_prices. This predictability makes it easy for agents to understand and navigate the tool set without naming conflicts or inconsistencies.

Tool Count5/5

With 10 tools, the server is well-scoped for financial data retrieval, covering key aspects like prices, financial statements, news, and recommendations. Each tool serves a distinct purpose without being overly broad or sparse, fitting typical needs in this domain.

Completeness4/5

The tool set provides comprehensive coverage for retrieving financial data, including core elements like prices, statements, and news. A minor gap is the lack of tools for updating or managing data (e.g., no create or delete operations), but this is reasonable for a read-only finance server focused on data access.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Deterministic profitability and market-value analysis tools for AI agents — margins, ROA, ROE, ROCE, ROIC, EPS, P/E, P/B, dividend yield and payout ratio via Model Context Protocol. Useful for corporate finance, equity analysis, financial analysis, quantitative analysis, financial formulas and financial modeling.

  • Deterministic company valuation and corporate finance tools for AI agents — IRR, NPV, MOIC, DCF, WACC, enterprise value, EV multiples, CAPM, beta and sensitivity analysis via Model Context Protocol. Useful for financial analysis, equity analysis, quantitative analysis, financial projections, financial formulas and financial modeling.

  • Deterministic liquidity and leverage ratio tools for AI agents — current, quick and cash ratios, defensive interval, debt-to-equity, debt-to-assets, equity multiplier and interest coverage via Model Context Protocol. Useful for corporate finance, credit analysis, financial analysis, financial formulas and financial modeling.

  • Market data, financial statements, valuation, research, and news for investment workflows.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time financial data from Yahoo Finance to Large Language Models through the Model Context Protocol, enabling AI models to access stock prices, historical data, and company information.
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides access to real-time stock prices, financial statements, news, and options data via the Model Context Protocol. It enables AI assistants to retrieve comprehensive market data, including historical prices and analyst recommendations, through a standardized interface.
    6
    9
    1
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Provides financial data tools including stock prices, news, forex, fundamentals, and corporate actions via the Tiingo API through the Model Context Protocol.
    11
    5
    -