Trading MCP Server
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., "@Trading MCP Serverwhat's the current price of Tesla stock?"
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.
Trading-MCP-Server
An intelligent trading assistant that integrates with the Claude AI MCP (Model Context Protocol) platform. This tool fetches live stock prices using Yahoo Finance and enables seamless command-based interaction with the market via Claude's agent interface.
π Features
π Fetches real-time (or near real-time) stock prices using Yahoo Finance
π€ Connects to Claude MCP as a server with custom trading commands
π Built using Python with support for virtual environments and
uvfor dependency managementβοΈ Supports modular expansion to include trading signals, historical analysis, and more
Related MCP server: Yahoo Finance MCP Server
π§ Architecture
Claude AI MCP Integration: Uses
mcp[cli]to expose a server interface to Claude.Yahoo Finance API: For retrieving stock data (via
yfinance).Virtual Environment: Managed using
uvfor fast and deterministic builds.
π¦ Setup
# Install uv if not already installed
brew install uv
# Navigate to the project directory
cd MCPtrading
# Install dependencies
uv pip install -r requirements.txt
# (Optional) Add packages
uv add yfinanceπββοΈ Running the Server
Make sure to use the correct Python environment:
uv run --python .venv/bin/python --with "mcp[cli]" mcp run trader_tools.pyOr update your Claude config:
{
"mcpServers": {
"Trading": {
"command": "/Users/yourname/.local/bin/uv",
"args": [
"run",
"--python",
"/full/path/to/.venv/bin/python",
"--with",
"mcp[cli]",
"mcp",
"run",
"trader_tools.py"
]
}
}
}π§ͺ Example Usage
Ask Claude:
"What's the latest price of AAPL?"
Claude will call the MCP server and respond with the current stock price.
Available Tools
8 toolscurrent_priceA
Fetch the live price of a stock symbol.
Args: symbol: Stock ticker symbol (e.g. AAPL, TSLA) - This should be a valid symbol supported by Yahoo Finance.
Returns: The current market price as a float, or -1.0 if the price could not be fetched.
Example: get_live_price("AAPL") -> 193.45
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 of behavioral disclosure. It successfully documents the error handling behavior (returns -1.0 on failure) and identifies the data source (Yahoo Finance). However, it omits rate limits, caching behavior, or whether the data is real-time versus delayed.
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 structured format (Args/Returns/Example) is efficient and front-loaded. Information density is high with minimal waste. Minor deduction for the example referencing 'get_live_price()' rather than the actual tool name 'current_price', which could cause momentary confusion.
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 single-parameter read operation with an output schema present, the description is appropriately complete. It clarifies the error return value (-1.0) which is valuable context not necessarily visible in the output schema alone. Missing only operational details like rate limiting.
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?
Given 0% schema description coverage, the description effectively compensates by providing the parameter semantics inline: 'Stock ticker symbol (e.g. AAPL, TSLA)' with validation guidance ('valid symbol supported by Yahoo Finance'). The examples and constraints add meaningful context beyond the bare schema.
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 opens with a specific verb ('Fetch') and clear resource ('live price of a stock symbol'), precisely defining the tool's scope. It effectively distinguishes from siblings like 'portfolio' or 'trade_history' by focusing on real-time market data lookup rather than historical analysis or trading operations.
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?
While the implied usage is clear (use when needing current market prices), there is no explicit guidance on when to use this versus alternatives like 'portfolio' which might also contain price data, or when to prefer 'simulate_sell' for price checks. No prerequisites or rate limit warnings are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pnlA
Generate a Profit & Loss (P&L) summary.
Combines realized and unrealized gains into a single financial overview.
Returns: A dictionary with keys 'realized' and 'unrealized' representing the total gains.
Example: pnl() -> {"realized": 320.75, "unrealized": 145.60}
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It explains the aggregation behavior ('Combines') and documents the return structure with an example. However, it lacks disclosure of other behavioral traits like data freshness, calculation methodology (e.g., all-time vs period-specific), rate limits, or side effects.
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 efficiently structured with a clear purpose statement, behavioral clarification, and a documented return value with an example. Every sentence earns its place; there is no redundant or tautological language.
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 simplicity (zero parameters, single aggregation operation) and the presence of an output schema (per context signals), the description is complete. It adds value by explaining the aggregation logic and providing a concrete example, which complements the structured schema without being redundant.
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 input schema contains zero parameters. According to the baseline rules, zero parameters warrants a baseline score of 4. The description correctly does not invent parameter documentation where none exist.
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 states the specific action 'Generate' and resource 'Profit & Loss (P&L) summary'. It clearly distinguishes itself from siblings 'realized_gains' and 'unrealized_gains' by specifying it 'Combines realized and unrealized gains into a single financial overview', positioning it as the aggregate view.
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 provides clear context that this tool aggregates both types of gains, implicitly signaling to use it when a combined overview is needed versus the individual sibling tools. However, it does not explicitly name the alternatives or state when NOT to use it (e.g., 'use realized_gains instead for tax reporting').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
portfolioA
Show current portfolio holdings.
This tool calculates the net number of shares held for each stock symbol by summing all buy and sell trades in the trade history CSV.
Returns: A dictionary mapping stock symbols to their current number of held shares. Only symbols with a positive balance are included.
Example: portfolio() -> {"AAPL": 120, "GOOG": 60}
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and effectively discloses key behaviors: it reads from a CSV trade history, performs net calculation logic, and filters out zero/negative balances ('Only symbols with a positive balance are included'). Missing minor details like error handling or caching behavior.
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?
Excellent structure with clear visual hierarchy: one-line summary, calculation explanation, return value specification, and concrete example. Every sentence provides unique value with no repetition of schema or annotation data.
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 state-retrieval tool with no parameters and an output schema present, the description is complete. It compensates for the unseen output schema by documenting the return format (dictionary mapping) and filtering behavior (positive balances only).
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 and the schema confirms this with 100% coverage. Per guidelines, zero-parameter tools receive a baseline of 4. The description reinforces this via the example call syntax 'portfolio()'.
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 opens with a clear verb-resource pair ('Show current portfolio holdings') and immediately distinguishes from sibling tools by explaining it calculates net positions from trade history data, contrasting with trade_history (raw transactions) and financial calculation tools like pnl.
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 explains the calculation methodology (summing buy/sell trades from CSV), which implicitly signals when to use this versus viewing raw trade history. However, it lacks explicit 'when not to use' guidance or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realized_gainsA
Calculate total realized gains using FIFO method.
This tool goes through the trade history and tracks all buy transactions in a FIFO queue. For each sell, it matches shares with the earliest buys and calculates the realized profit or loss accordingly.
Returns: A float representing the total realized gain or loss (in dollars), rounded to two decimal places.
Example: realized_gains() -> 352.75
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Successfully discloses internal algorithm (FIFO queue processing, matching sells with earliest buys) and return format (float in dollars, rounded to two decimals). Missing safety/destructive traits and error conditions, but algorithmic transparency is high.
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?
Well-structured with front-loaded purpose statement ('Calculate total realized gains using FIFO method'), followed by implementation details, return specification, and example. No extraneous content; every sentence earns its place.
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 parameterless calculation tool, description adequately covers the complex FIFO methodology, data source (trade history), and return value semantics. Output schema exists in context, but description appropriately supplements it with units and precision details.
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?
Zero parameters present with 100% schema coverage. Per rubric, 0 params establishes baseline of 4. Description appropriately focuses on behavioral explanation rather than parameter documentation.
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?
Specific verb ('Calculate'), resource ('realized gains'), and methodology ('FIFO method') clearly stated. Explicitly distinguishes from sibling 'unrealized_gains' by specifying 'realized' and detailing the FIFO matching algorithm against trade history.
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?
Provides implied usage context through the FIFO methodology explanation, but lacks explicit when-to-use guidance or comparison with alternatives (e.g., when to choose this over 'pnl' or 'unrealized_gains'). No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_sellA
Simulate selling a number of shares of a stock and estimate the profit or loss.
Args: symbol: The stock ticker symbol to simulate the sale for (e.g., TSLA) shares: The number of shares to simulate selling.
Returns: The estimated profit/loss from the simulated sale using FIFO matching, in dollars.
Example: simulate_sell("AAPL", 50) -> 123.45
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | ||
| shares | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It successfully discloses the use of 'FIFO matching' for cost basis calculation and clarifies the return format (dollars). However, it omits operational details like data source (current market price vs. historical), error conditions (insufficient shares), or explicit confirmation that no portfolio modification occurs.
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?
Uses a clean docstring format (Args/Returns/Example) with zero wasted words. The example invocation is concrete and illustrative. Information is front-loaded with the core purpose in the first sentence.
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 2-parameter tool with simple types and no nested objects, the description is nearly complete. It covers methodology (FIFO), parameters, return values, and provides an example. Minor gap: does not clarify whether the simulation uses real-time market prices or specify handling of fractional shares.
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?
Despite 0% schema description coverage, the description fully compensates via the Args section. It provides clear semantics for both 'symbol' (with TSLA example) and 'shares', including data types and purpose. This is exemplary compensation for a bare schema.
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?
Description clearly states the specific action ('simulate selling'), resource ('shares of a stock'), and outcome ('estimate the profit or loss'). The term 'simulate' effectively distinguishes this from sibling tools like 'realized_gains' (actual historical data) and 'validate_trades' (trade validation).
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?
While the term 'simulate' implies hypothetical usage, the description lacks explicit guidance on when to use this versus alternatives like 'validate_trades' or 'current_price'. It does not state prerequisites (e.g., needing existing positions) or suggest this is for pre-trade financial impact assessment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trade_historyA
Return the trade history for a specific stock symbol.
Args: symbol: The stock ticker symbol (e.g., AMZN, MSFT)
Returns: A list of dictionaries containing all trade records for that symbol.
Example: trade_history("GOOG") -> [{"date": "2024-01-01", "type": "Buy", ...}, ...]
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It adequately discloses the return format (list of dicts with example fields like 'date' and 'type'), but fails to mention safety characteristics (read-only status), authentication requirements, time range limitations, or pagination behavior for large histories.
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 docstring-style structure (Args/Returns/Example) is logically organized and front-loaded with the core purpose. The content is efficient with no redundant sentences, though the explicit 'Args:' and 'Returns:' headers add slight verbosity that could be condensed in an MCP-specific format.
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 single simple parameter and existence of an output schema, the description provides appropriate additional context. It compensates for the schema's lack of parameter descriptions and supplements the output schema with a concrete example showing data structure (e.g., 'type': 'Buy'), leaving minimal gaps for a read-only data retrieval tool.
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 input schema has 0% description coverage (only 'title': 'Symbol'), so the description fully compensates by explaining that the parameter is a 'stock ticker symbol' and provides concrete examples (AMZN, MSFT). It could be improved by noting format constraints (e.g., uppercase), but the examples provide sufficient semantic context.
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 specific action ('Return') and resource ('trade history') with scope ('for a specific stock symbol'). It effectively distinguishes from siblings like current_price (current market data) versus historical records, and portfolio (current holdings) versus transaction history.
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 provides implied usage through the return value specification ('list of dictionaries containing all trade records'), suggesting it should be used when historical transaction data is needed. However, it lacks explicit guidance on when to prefer this over simulate_sell, validate_trades, or portfolio, and does not mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unrealized_gainsA
Calculate unrealized gains for current holdings.
This tool calculates unrealized profit or loss by comparing the average buy price for currently held shares against the current market price fetched live using yfinance.
Returns: A dictionary mapping each stock symbol to its unrealized gain or loss in dollars.
Example: unrealized_gains() -> {"AAPL": 125.50, "GOOG": -22.15}
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It successfully discloses key behavioral traits: the calculation methodology (average buy price vs. market price), the live data source (yfinance), and the return format (dictionary mapping symbols to dollar values). It lacks only operational details like error handling or rate limits.
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 excellently structured with a clear one-sentence summary followed by detailed calculation logic, a 'Returns:' section, and an example. Every sentence earns its place; no redundancy or fluff is present.
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 simplicity (zero parameters, single operation) and the presence of an output explanation (including example), the description is complete. It adequately covers what the tool does, how it calculates results, and what it returns without needing additional operational 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 input schema contains zero parameters. According to calibration rules, zero-parameter tools receive a baseline score of 4. The description correctly provides no parameter-related text since none exist.
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 'Calculate[s] unrealized gains for current holdings' and specifies the methodology (comparing average buy price against current market price). The phrase 'currently held shares' effectively distinguishes it from the sibling 'realized_gains' tool.
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?
While the description implies usage by specifying 'currently held shares' (distinguishing from realized gains), it lacks explicit guidance on when to select this over siblings like 'pnl' or 'portfolio'. No 'when-not-to-use' or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_tradesA
Validate that no trades sell more shares than have been bought.
Parses the trade history sequentially to ensure all sell transactions occur only after a corresponding quantity of shares has been bought.
Returns: A list of error messages for invalid trades, if any.
Example: validate_trades() -> ["Invalid sell on 2024-02-10: 20 shares of AAPL (owned: 10)"]
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It successfully discloses the sequential parsing behavior, the specific validation rule (sells only after corresponding buys), and the return format via both 'Returns:' section and concrete example. Could improve by stating it's read-only/safe.
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?
Excellent structure with front-loaded purpose statement followed by implementation details, explicit Returns section, and concrete example. No redundancy; every sentence adds value despite the multi-line format.
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 parameter-less validation tool, description is comprehensive. It explains the validation logic, output format (list of error messages), and provides an example return value, fully preparing the agent to interpret results despite the existence of an output schema.
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?
Zero parameters per schema (empty properties object). Per rubric, zero-parameter tools baseline at 4. Description correctly requires no parameter clarification.
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?
Description opens with specific verb ('Validate') and clear scope (preventing overselling). Explicitly distinguishes from sibling 'trade_history' by emphasizing it 'parses the trade history sequentially' to perform validation logic rather than just retrieving data.
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?
Provides implied usage through explanation of the validation logic (checking sell-before-buy violations), but lacks explicit guidance on when to invoke versus alternatives like 'portfolio' or 'trade_history'. No 'when-not' or prerequisites mentioned.
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.
8 tool updates
v0.1.0- First observed
current_price - First observed
pnl - First observed
portfolio - First observed
realized_gains - First observed
simulate_sell - First observed
trade_history - First observed
unrealized_gains - First observed
validate_trades
TDQS
Scored across 8 tools
Most tools have distinct purposes, but there is some overlap between 'pnl', 'realized_gains', and 'unrealized_gains' that could cause confusion. 'pnl' combines both realized and unrealized gains, while the other two provide separate calculations, which might lead an agent to misselect when seeking specific details.
The naming is mixed with snake_case used throughout, but the verb patterns vary: some are nouns (e.g., 'portfolio', 'pnl'), some are verbs (e.g., 'simulate_sell', 'validate_trades'), and some are descriptive phrases (e.g., 'trade_history', 'unrealized_gains'). This inconsistency reduces predictability, though it remains readable.
With 8 tools, the count is well-scoped for a trading server, covering key operations like price fetching, portfolio management, gain calculations, and trade validation. Each tool serves a clear purpose without being overwhelming or insufficient for the domain.
The tool set covers core trading functions such as price lookup, portfolio tracking, and gain analysis, but lacks tools for executing trades or managing orders, which are typical in trading systems. This minor gap might require agents to work around, but the existing tools support essential workflows.
Related MCP Connectors
Global stock research, ML forecasts, valuation signals, screeners & portfolio tracking in Claude
Trade Robinhood through natural language in Claude Code.
Look up the latest stock prices by ticker symbol across global markets. Get current price and esseβ¦
Fetch current stock prices and key data for symbols across global markets. Look up companies likeβ¦
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to retrieve stock market data and financial information from Yahoo Finance using the yfinance Python library. Supports querying stock prices, historical data, and other financial metrics through natural language.MIT
- AlicenseNot gradedqualityNot gradedmaintenanceIntegrates Yahoo Finance data with Claude to provide real-time and historical financial information, including stock prices, financial statements, and options data. It enables comprehensive market research and investment analysis through natural language interactions.MIT
- AlicenseAqualityDmaintenanceProvides real-time stock quotes, market indices, historical data, and financial visualizations from Yahoo Finance without API keys, enabling users to analyze and visualize market data through Claude.39 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access real-time stock, crypto, and market index data from Yahoo Finance, supporting queries for prices, history, company info, and comparisons.MIT