Skip to main content
Glama
zwldarren

akshare-one-mcp

AKShare One MCP Server

PyPI version PyPI downloads Python versions License: MIT

Overview

An MCP server based on akshare-one, providing comprehensive interfaces for China stock market data. It offers a set of powerful tools for retrieving financial information including historical stock data, real-time data, news data, and financial statements.

Related MCP server: A股实时行情MCP服务器

Available Tools

Automatic source fallback

Except for get_news_data and get_inner_trade_data, whose upstream exposes a single source, every tool takes a source parameter for the preferred data source and a fallback parameter (on by default) that decides whether the other sources of the same domain are tried when that source raises or returns an empty frame:

Domain

Order tried

Historical

eastmoneyeastmoney_directsina

Real-time

eastmoney_directeastmoneyxueqiu (skipped when no symbol is given)

Financial statements

sinaeastmoney_direct

The requested source is always tried first; the order only governs the fallback. Because akshare-one projects every source onto its domain's declared columns, falling back cannot change the field names or their order. When every source fails, the error lists each one and why it failed; when every source succeeds but has no data, an empty result is returned. Set fallback to false to pin a single source — a failure then surfaces directly, which is useful when you need to know exactly where the numbers came from.

The source that actually served a call is logged under the akshare_one_mcp.providers logger.

Market Data Tools

get_hist_data

Get historical stock market data with support for multiple time periods and adjustment methods.

  • symbol (string, required): Stock code (e.g. '000001')

  • interval (string, optional): Time interval ('minute','hour','day','week','month','year') (default: 'day')

  • interval_multiplier (number, optional): Interval multiplier (default: 1)

  • start_date (string, optional): Start date in YYYY-MM-DD format (default: '1970-01-01')

  • end_date (string, optional): End date in YYYY-MM-DD format (default: '2030-12-31')

  • adjust (string, optional): Adjustment type ('none', 'qfq', 'hfq') (default: 'none')

  • source (string, optional): Data source ('eastmoney', 'eastmoney_direct', 'sina') (default: 'eastmoney')

  • fallback (boolean, optional): Try 'eastmoney', 'eastmoney_direct' and 'sina' in order when the chosen source fails or has no data (default: true)

  • indicators_list (list, optional): Technical indicators to add

  • recent_n (number, optional): Number of most recent records to return (default: 100)

get_realtime_data

Get real-time stock market data.

  • symbol (string, optional): Stock code

  • source (string, optional): Data source ('eastmoney_direct', 'eastmoney', 'xueqiu') (default: 'eastmoney_direct')

  • fallback (boolean, optional): Try 'eastmoney_direct', 'eastmoney' and 'xueqiu' in order when the chosen source fails or has no data (default: true; 'xueqiu' is skipped when no symbol is given, as it quotes one symbol at a time)

News & Information Tools

get_news_data

Get stock-related news data.

  • symbol (string, required): Stock code

  • recent_n (number, optional): Number of most recent records to return (default: 10)

Financial Statement Tools

get_balance_sheet

Get company balance sheet data.

  • symbol (string, required): Stock code

  • source (string, optional): Data source ('sina', 'eastmoney_direct') (default: 'sina')

  • fallback (boolean, optional): Try the other source when the chosen one fails or has no data (default: true)

  • recent_n (number, optional): Number of most recent records to return (default: 10)

get_income_statement

Get company income statement data.

  • symbol (string, required): Stock code

  • source (string, optional): Data source ('sina', 'eastmoney_direct') (default: 'sina')

  • fallback (boolean, optional): Try the other source when the chosen one fails or has no data (default: true)

  • recent_n (number, optional): Number of most recent records to return (default: 10)

get_cash_flow

Get company cash flow statement data.

  • symbol (string, required): Stock code

  • source (string, optional): Data source ('sina', 'eastmoney_direct') (default: 'sina')

  • fallback (boolean, optional): Try the other source when the chosen one fails or has no data (default: true)

  • recent_n (number, optional): Number of most recent records to return (default: 10)

Analysis & Metrics Tools

get_inner_trade_data

Get company insider trading data.

  • symbol (string, required): Stock code

get_financial_metrics

Get key financial metrics from the three major financial statements.

  • symbol (string, required): Stock code

  • source (string, optional): Data source ('sina', 'eastmoney_direct') (default: 'eastmoney_direct')

  • fallback (boolean, optional): Try the other source when the chosen one fails or has no data (default: true)

  • recent_n (number, optional): Number of most recent records to return (default: 10)

get_time_info

Get current time with ISO format, timestamp, and the last trading day.

Installation & Setup

Running Modes

The server supports two modes: stdio and streamable-http

Command Line Arguments:

  • --streamable-http: Enable HTTP mode (default: stdio mode)

  • --host: Host to bind to in HTTP mode (default: 0.0.0.0)

  • --port: Port to listen on in HTTP mode (default: 8081)

Note: When using streamable-http mode, the MCP server will be available at http://{host}:{port}/mcp. For the default configuration, this would be http://0.0.0.0:8081/mcp.

Installation Options

Option 1: Via Smithery

To install akshare-one-mcp for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @zwldarren/akshare-one-mcp --client claude

Option 2: Via uv

Install uv if you haven't already.

uvx installs the package from PyPI and runs it on Python 3.12 or newer.

Add the following configuration to your MCP Client settings:

{
  "mcpServers": {
    "akshare-one-mcp": {
      "command": "uvx",
      "args": ["akshare-one-mcp"]
    }
  }
}

Option 3: Local Development Setup

  1. Clone this repository:

    git clone https://github.com/zwldarren/akshare-one-mcp.git
    cd akshare-one-mcp
  2. Install dependencies:

    uv sync
  3. Add the following configuration to your MCP Client settings:

    {
      "mcpServers": {
        "akshare-one-mcp": {
          "command": "uv",
          "args": [
            "--directory",
            "/path/to/akshare-one-mcp",
            "run",
            "akshare-one-mcp"
          ]
        }
      }
    }

Technical Indicators Reference

The get_hist_data tool supports the following technical indicators:

Trend Indicators

  • Moving Averages: SMA (Simple Moving Average), EMA (Exponential Moving Average)

  • Trend Tracking: MACD (Moving Average Convergence Divergence), APO (Absolute Price Oscillator), PPO (Percentage Price Oscillator)

  • Rate of Change: ROC (Rate of Change), ROCP (Rate of Change Percentage), ROCR (Rate of Change Ratio), ROCR100

  • Other: TRIX (Triple Exponential Moving Average), ULTOSC (Ultimate Oscillator)

Momentum Indicators

  • Relative Strength: RSI (Relative Strength Index), CCI (Commodity Channel Index)

  • Trend Strength: ADX (Average Directional Index), DX (Directional Index)

  • Money Flow: MFI (Money Flow Index), MOM (Momentum), CMO (Chande Momentum Oscillator), WILLR (Williams %R)

Volatility Indicators

  • Bollinger Bands: BOLL (Bollinger Bands)

  • Average True Range: ATR (Average True Range)

  • Parabolic SAR: SAR (Parabolic Stop and Reverse)

Volume Indicators

  • Volume: OBV (On-Balance Volume), AD (Accumulation/Distribution Line), ADOSC (Accumulation/Distribution Oscillator)

Other Indicators

  • Stochastic: STOCH (Stochastic Oscillator)

  • Aroon: AROON (Aroon Indicator), AROONOSC (Aroon Oscillator)

  • Balance of Power: BOP (Balance of Power)

  • Directional Indicators: MINUS_DI, MINUS_DM, PLUS_DI, PLUS_DM

  • Time Series Forecast: TSF (Time Series Forecast)

Available Tools

9 tools
get_balance_sheetGet Balance SheetAInspect

Get company balance sheet data.

With fallback on, the sources are tried as 'sina' and 'eastmoney_direct', starting with the requested one.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoData sourcesina
symbolYesStock symbol/ticker (e.g. '000001')
fallbackNoTry the domain's other data sources when this one fails or has no data
recent_nNoNumber of most recent records to return

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

There are no annotations, so the description carries the behavioral disclosure burden. It does add a meaningful non-obvious behavior: when fallback is enabled, sources are tried as 'sina' and 'eastmoney_direct', starting with the requested one. However, it does not describe failure behavior when fallback is disabled, potential output variations between sources, or explicit read-only/safety characteristics beyond the word 'Get'.

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 two concise sentences with no filler or repetition. The core purpose is front-loaded in the first sentence, and the fallback behavior is efficiently explained in the second. Every sentence earns its place.

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

Completeness4/5

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

Given the presence of an output schema and fully described parameters, the description is mostly sufficient for an agent to call the tool correctly. It covers the main non-obvious behavior (fallback ordering), though it could add explicit sibling-selection guidance and failure behavior. These gaps are minor given the schema richness.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying the interaction between `source` and `fallback`: it specifies the exact fallback order and that the requested source is tried first. This goes slightly beyond the schema's generic 'try the domain's other data sources' wording.

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

Purpose5/5

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

The description states a clear verb and resource: 'Get company balance sheet data.' This distinguishes it from sibling tools like get_income_statement and get_cash_flow, which target different financial statements. The purpose is immediately recognizable and unambiguous.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives such as get_income_statement or get_cash_flow. The intended usage is implied by the phrase 'balance sheet data,' but no direct when-to-use or when-not-to-use guidance is provided. The fallback sentence explains source selection behavior, not usage context.

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

get_cash_flowGet Cash FlowAInspect

Get company cash flow statement data.

With fallback on, the sources are tried as 'sina' and 'eastmoney_direct', starting with the requested one.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoData sourcesina
symbolYesStock symbol/ticker (e.g. '000001')
fallbackNoTry the domain's other data sources when this one fails or has no data
recent_nNoNumber of most recent records to return

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry behavioral disclosure. It does add useful fallback ordering behavior ('sina' then 'eastmoney_direct'), but it omits other behavioral details such as error handling, data availability, or whether returned data is normalized. The read-only nature is implicit from 'get' rather than explicit.

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 concise: one purpose sentence and one behavioral sentence. It front-loads the main purpose and devotes a short paragraph to the fallback behavior. Every sentence earns its place without padding.

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

Completeness4/5

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

Given the simple read-only nature, full schema documentation, and presence of an output schema, the description is largely sufficient. It explains the most non-obvious behavior (fallback ordering) but lacks any hint about when to prefer this tool over its financial-statement siblings.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful detail beyond the schema by explicitly naming the fallback source order and clarifying that the requested source is tried first. This helps agents understand how the 'source' and 'fallback' parameters interact.

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

Purpose5/5

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

States a specific verb and resource: 'Get company cash flow statement data'. This clearly distinguishes it from sibling tools like get_balance_sheet and get_income_statement, making its purpose immediately recognizable.

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 sibling financial statement tools. It only explains fallback behavior, not selection criteria or exclusions. An agent must infer that cash flow data is requested when cash flow statements are needed.

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

get_financial_metricsGet Financial MetricsAInspect

Get key financial metrics from the three major financial statements.

With fallback on, the sources are tried as 'sina' and 'eastmoney_direct', starting with the requested one.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoData sourceeastmoney_direct
symbolYesStock symbol/ticker (e.g. '000001')
fallbackNoTry the domain's other data sources when this one fails or has no data
recent_nNoNumber of most recent records to return

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must carry the full burden of behavioral disclosure. It adds value by explaining the fallback logic: when fallback is on, sources are tried in a specific order ('sina' then 'eastmoney_direct'), which is not stated in the schema. However, it does not disclose error handling, return format expectations, or whether the operation is read-only, though a 'get' implies safety. The fallback detail is useful but limited.

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 two sentences with no filler. The first sentence states the core purpose, and the second provides a key behavioral detail. It is front-loaded with the primary function and avoids redundancy with the schema. Every word earns its place.

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

Completeness4/5

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

Given that an output schema exists, the description does not need to explain return values. It covers the tool's purpose, the consolidation of three statements, and the critical fallback behavior. It could mention what specific metrics are included, but that is likely covered by the output schema. Overall, it provides sufficient context for an agent to call the tool correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so parameters are already documented. The description adds meaning to the interaction between 'source' and 'fallback' by clarifying the ordering of source attempts, which is not evident from the schema alone. This deepens the understanding of behavior, exceeding the baseline of 3 for full schema coverage.

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

Purpose5/5

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

The description clearly states the tool retrieves 'key financial metrics from the three major financial statements,' a specific verb and resource. It distinguishes itself from siblings like get_balance_sheet, get_income_statement, and get_cash_flow by explicitly referencing all three statements at once. There is no ambiguity or tautology.

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

Usage Guidelines3/5

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

The description implies this tool is for consolidated financial metrics across statements, which differentiates it from the individual statement tools, but it does not explicitly state when to choose this over siblings. There is no mention of alternatives or conditions for use, leaving the selection to inference. The fallback explanation provides some context for sourcing but not for tool choice.

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

get_hist_dataGet Hist DataAInspect

Get historical stock market data. 'eastmoney_direct' support all A,B,H shares

With fallback on, the sources are tried as 'eastmoney', 'eastmoney_direct' and 'sina', starting with the requested one.

ParametersJSON Schema
NameRequiredDescriptionDefault
adjustNoAdjustment typenone
sourceNoData sourceeastmoney
symbolYesStock symbol/ticker (e.g. '000001')
end_dateNoEnd date in YYYY-MM-DD format2030-12-31
fallbackNoTry the domain's other data sources when this one fails or has no data
intervalNoTime intervalday
recent_nNoNumber of most recent records to return
start_dateNoStart date in YYYY-MM-DD format1970-01-01
indicators_listNoTechnical indicators to add
interval_multiplierNoInterval multiplier

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does disclose a key non-obvious behavior: fallback order is 'eastmoney', 'eastmoney_direct', then 'sina', starting with the requested source. It also notes the coverage difference for A/B/H shares. It does not discuss errors or rate limits, but the output schema covers return expectations.

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

Conciseness4/5

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

The description is short, front-loaded with purpose, and every sentence conveys useful information about fallback and source coverage. A minor grammar issue ('support' instead of 'supports') and the slightly fragmented second sentence prevent a perfect score.

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

Completeness4/5

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

For a 10-parameter tool with a fully described input schema and an output schema, the description covers the non-obvious parts: fallback ordering and share-class source coverage. It does not explicitly explain interactions like recent_n versus date ranges, but those are left to the parameter descriptions and do not need restating here.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description adds real value by explaining the source hierarchy and that 'eastmoney_direct' has broader share-class coverage. This helps the agent choose the `source` parameter and understand `fallback` behavior without repeating the schema's own field descriptions.

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

Purpose5/5

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

Opens with a specific verb and object — 'Get historical stock market data' — which clearly distinguishes it from get_realtime_data, news, and financial-statement siblings. The additional note about 'eastmoney_direct' supporting A/B/H shares further clarifies the data scope.

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

Usage Guidelines4/5

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

The word 'historical' gives clear context for when this tool applies, and the fallback sentence explains how source selection works in practice. It does not explicitly name alternatives like get_realtime_data or state when not to use this tool, so it stops short of full routing guidance.

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

get_income_statementGet Income StatementAInspect

Get company income statement data.

With fallback on, the sources are tried as 'sina' and 'eastmoney_direct', starting with the requested one.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoData sourcesina
symbolYesStock symbol/ticker (e.g. '000001')
fallbackNoTry the domain's other data sources when this one fails or has no data
recent_nNoNumber of most recent records to return

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It clearly explains the non-obvious fallback behavior: with fallback on, sources are tried as 'sina' and 'eastmoney_direct', starting with the requested one. This adds meaningful insight beyond the schema and helps the agent anticipate multi-source selection 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 compact and front-loaded with the core purpose in the first sentence. The second sentence adds genuinely useful behavioral detail without redundancy or fluff. Every word earns its place.

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

Completeness4/5

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

Given the output schema exists, return-value documentation is unnecessary. The description covers the main behavioral nuance (fallback source ordering) and the schema covers parameter semantics. Minor gaps remain around when to prefer each source and what happens when both sources fail, but these are not blocking for correct invocation.

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 schema already documents all four parameters. The description adds some value by clarifying how the fallback parameter interacts with source ordering, but it does not elaborate on symbol or recent_n semantics beyond what the schema already provides.

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

Purpose5/5

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

The description uses a specific verb ('Get') and a specific resource ('company income statement data'), making the tool's purpose immediately clear. It also distinguishes itself naturally from sibling tools like get_balance_sheet and get_cash_flow, which target different financial statements.

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

Usage Guidelines3/5

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

The description implies usage: use this when you need income statement data. However, it does not explicitly explain when to choose this over the sibling financial tools, nor does it provide exclusions or alternative recommendations. The fallback explanation is about behavior, not usage context.

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

get_inner_trade_dataGet Inner Trade DataBInspect

Get company insider trading data.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock symbol/ticker (e.g. '000001')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 implies a read operation through 'Get' but does not mention authentication needs, rate limits, data coverage, or any caveats about insider trading data.

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 concise sentence with no filler, front-loading the action and resource. For a one-parameter tool, this is appropriately sized.

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?

For a simple one-parameter getter with an output schema, the description is mostly sufficient for basic invocation, but it lacks usage guidance and behavioral context because no annotations exist. The output schema covers return values, so this is not a complete failure.

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 already documents the symbol parameter with an example, so coverage is 100%. The description adds the context that the data is company-level insider trading but does not provide any additional parameter semantics beyond what the schema already states.

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 uses a specific verb and resource: 'Get company insider trading data.' It clearly states what the tool does and the domain is distinct from sibling tools like get_news_data or get_balance_sheet, though it does not explicitly differentiate itself.

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 the available sibling tools. There are no prerequisites, no exclusion cases, and no mention of alternatives, leaving the agent to infer usage solely from the tool name and description.

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

get_news_dataGet News DataCInspect

Get stock-related news data.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock symbol/ticker (e.g. '000001')
recent_nNoNumber of most recent records to return

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description is the sole source of behavioral context. It only says 'get', implying a read-only operation, but provides no details on ordering, date filtering, pagination, or data freshness. It also doesn't warn about any rate limits or access requirements.

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

Conciseness4/5

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

The definition is a single short sentence with no filler, which is efficient for such a simple tool. It is appropriately concise, though the available brevity could have been used to add a bit more usage context.

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?

The presence of an output schema and fully documented parameters covers the mechanics of calling the tool. The description is thin on when to use it and what 'news-related' means in practice, but for a simple parameterized GET, it is minimally adequate.

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 fully documents both parameters—'symbol' with an example and 'recent_n' with a default and explanation—so the description adds no additional parameter meaning. Baseline 3 applies because schema coverage is 100%.

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 states a specific verb ('Get') and resource ('stock-related news data'), and this clearly differentiates it from sibling tools like 'get_hist_data' or 'get_realtime_data'. It is not maximally specific about what kind of news data is returned, but it is enough to distinguish the tool's function.

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 about when to prefer this tool over the nine siblings, nor any exclusions or alternative conditions. An agent must infer that it is for news-related queries, but the description never explicitly states this context.

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

get_realtime_dataGet Realtime DataAInspect

Get real-time stock market data. 'eastmoney_direct' support all A,B,H shares

With fallback on, the sources are tried as 'eastmoney_direct', 'eastmoney' and 'xueqiu', starting with the requested one.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoData sourceeastmoney_direct
symbolNoStock symbol/ticker (e.g. '000001')
fallbackNoTry the domain's other data sources when this one fails or has no data

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/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 does add useful behavior: the fallback source chain and that 'eastmoney_direct' supports A/B/H shares. However, it does not describe data freshness, error behavior, or what happens when fallback is disabled.

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

Conciseness4/5

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

The description is compact and front-loaded with the core purpose. The second sentence efficiently explains the fallback mechanism. Minor grammar issues ('support all A,B,H shares') detract slightly, but no wasted words are present.

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

Completeness4/5

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

For a 3-parameter read-oriented tool with full schema coverage and an output schema, the description is largely sufficient. It covers the main behavioral nuance (fallback order) and source scope. Missing only explicit 'when to use' guidance and source-specific limitations.

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 schema already documents all three parameters. The description adds a bit of context about source fallback and share-class support, but it does not materially expand on parameter semantics beyond what the schema provides.

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 real-time stock market data.' It identifies the resource (stock market data) and the timing (realtime), which distinguishes it from sibling tools like get_hist_data or get_news_data, though it does not explicitly name those alternatives.

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

Usage Guidelines3/5

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

The description implies the tool is for real-time stock data and explains the fallback source order, which gives some usage context. However, it does not explicitly state when to use this tool over the siblings, nor does it provide exclusions or guidance on choosing between the three sources.

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

get_time_infoGet Time InfoBInspect

Get current time with ISO format, timestamp, and the last trading day.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 must carry the burden of behavioral transparency. It mentions what it returns (ISO format, timestamp, last trading day) but provides no detail on what the ISO format means, how 'last trading day' is calculated, whether it's market-specific, or any timezone assumptions. The agent lacks critical context about the behavior of this tool.

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

Conciseness4/5

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

The description is concise, a single sentence that lists the key outputs. It is efficient and front-loaded with the purpose. Could be considered slightly terse, but for a no-parameter tool, it is appropriate. No fluff or redundancy.

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?

The tool has no parameters and an output schema exists (per context signals), so the description does not need to detail return values in depth. However, since there are no annotations, the description could add more context about timezone handling, the definition of 'last trading day', and whether it reflects market-specific calendar. The description is minimally complete but leaves some behavioral gaps.

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

Parameters4/5

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

The tool has zero parameters, so there are no parameters to document. The description explains the return values (ISO time, timestamp, last trading day), which adds meaning about what the tool provides. Since there are no parameters, the baseline of 4 is appropriate because the description effectively explains what the tool gives.

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

Purpose3/5

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

Description states a clear purpose: get current time with ISO format, timestamp, and last trading day. The verb 'get' and resource 'time info' are specific. It distinguishes from siblings because no other sibling tool deals with time/calendar info, though it doesn't explicitly mention that it's the only one providing time information. Overall, it's clear enough.

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

Usage Guidelines3/5

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

The description implies when to use it: when you need current time in ISO format, timestamp, or last trading day. It doesn't explicitly state when not to use it or mention alternatives. Given that siblings are all market data tools, a simple need for time info would route here. No explicit exclusions, but not fully explicit about when not to use.

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. 6 tool updatesv0.4.0
    • Changedget_balance_sheet2 fields changed
      • addedInput schema / properties / fallback
        Added value: +{
        +  "default": true,
        +  "description": "Try the domain's other data sources when this one fails or has no data",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / source
        Added value: +{
        +  "default": "sina",
        +  "description": "Data source",
        +  "enum": [
        +    "sina",
        +    "eastmoney_direct"
        +  ],
        +  "type": "string"
        +}
    • Changedget_cash_flow3 fields changed
      • addedInput schema / properties / fallback
        Added value: +{
        +  "default": true,
        +  "description": "Try the domain's other data sources when this one fails or has no data",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / source / const
        Removed value: -"sina"
      • addedInput schema / properties / source / enum
        Added value: +[
        +  "sina",
        +  "eastmoney_direct"
        +]
    • Changedget_financial_metrics2 fields changed
      • addedInput schema / properties / fallback
        Added value: +{
        +  "default": true,
        +  "description": "Try the domain's other data sources when this one fails or has no data",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / source
        Added value: +{
        +  "default": "eastmoney_direct",
        +  "description": "Data source",
        +  "enum": [
        +    "sina",
        +    "eastmoney_direct"
        +  ],
        +  "type": "string"
        +}
    • Changedget_hist_data1 field changed
      • addedInput schema / properties / fallback
        Added value: +{
        +  "default": true,
        +  "description": "Try the domain's other data sources when this one fails or has no data",
        +  "type": "boolean"
        +}
    • Changedget_income_statement2 fields changed
      • addedInput schema / properties / fallback
        Added value: +{
        +  "default": true,
        +  "description": "Try the domain's other data sources when this one fails or has no data",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / source
        Added value: +{
        +  "default": "sina",
        +  "description": "Data source",
        +  "enum": [
        +    "sina",
        +    "eastmoney_direct"
        +  ],
        +  "type": "string"
        +}
    • Changedget_realtime_data2 fields changed
      • addedInput schema / properties / fallback
        Added value: +{
        +  "default": true,
        +  "description": "Try the domain's other data sources when this one fails or has no data",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / source / enum
        Previous value: -[
        -  "xueqiu",
        -  "eastmoney",
        -  "eastmoney_direct"
        -]New value: +[
        +  "eastmoney_direct",
        +  "eastmoney",
        +  "xueqiu"
        +]

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation4/5

Most tools map cleanly to distinct resources (time, news, historical prices, realtime prices, financial statements, insider trades). The only potential overlap is get_financial_metrics, which summarizes data from the three statements but is still distinguishable as a derived-metrics tool.

Naming Consistency5/5

All tools follow the same get_<data_type> snake_case convention, making the API surface predictable and easy to navigate. There are no mixed naming styles or vague verbs.

Tool Count5/5

With 9 tools, the server is well-scoped for a financial data retrieval MCP. Each tool covers a meaningful data category without unnecessary duplication.

Completeness4/5

The server covers the core stock data lifecycle: time context, news, historical and realtime prices, financial statements, insider trades, and derived metrics. Missing auxiliary data like company profiles or dividend info, but no critical dead ends for typical use.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server that wraps SFC financial data API into 32 tools for comprehensive A-share market data, including real-time quotes, rankings, limit-up statistics, news, themes, financials, charts, research reports, and watchlists.
    -
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that gives AI assistants direct, structured access to China A-share market data.
    3
    Apache 2.0