Skip to main content
Glama

MCP TDCC

PyPI version Python License: MIT MCP GitHub stars GitHub issues GitHub last commit

MCP Server for TDCC (Taiwan Depository & Clearing Corporation) OpenData — 8 AI-callable tools for Taiwan securities custody data via Model Context Protocol.

繁體中文

Overview

Query Taiwan's central securities depository open data through AI. Access shareholding distribution, stock custody changes, offshore fund NAVs, e-voting information, and 100+ more datasets — all through natural language conversation.

No API key required — TDCC OpenData is a free public API.

Related MCP server: deepq-financial-toolkit

Features

  • 8 specialized tools — Stock info, shareholding tiers, monthly/weekly custody changes, director holdings, offshore fund NAVs, e-voting, plus a generic query for all 100+ endpoints

  • Client-side filtering — Search by stock code, name, market type

  • BOM handling — Automatically strips BOM characters from API responses

  • Retry with backoff — Automatic retry for transient errors

  • Zero configuration — No API keys, no credentials, just install and use

Installation

From PyPI

pip install mcp-tdcc

From source

git clone https://github.com/asgard-ai-platform/mcp-tdcc.git
cd mcp-tdcc
uv venv && source .venv/bin/activate
uv pip install -e .

Configuration

No environment variables required. TDCC OpenData is a public API.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "tdcc": {
      "command": "mcp-tdcc"
    }
  }
}

Claude Code

The .mcp.json file is auto-discovered when you open the project directory.

Or run directly:

claude mcp add tdcc -- python mcp_server.py

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "tdcc": {
      "command": "mcp-tdcc"
    }
  }
}

Usage Examples

"I want to know the recent status of 2330 (TSMC)"

You: 幫我查一下 2330 台積電最近的集保狀態

AI calls:

get_securities_info(stock_code="2330")
get_shareholding_distribution(stock_code="2330")
get_stock_monthly_changes(stock_code="2330")
get_stock_weekly_balance(stock_code="2330")

Result: Returns TSMC's basic info, 17-tier shareholding distribution (retail vs institutional), monthly custody change analysis, and weekly balance trends.

"Show me the shareholding distribution of 2330"

You: 台積電的股權分散表,散戶跟大戶各佔多少?

AI calls:

get_shareholding_distribution(stock_code="2330")

Result: SUCCESS — 17 tiers from 1-999 shares to 800,001+ shares, with shareholder count and share percentage at each level.

"Search for any ETF custody data"

You: 最近 ETF 保管狀況怎樣?0050 的集保戶數有多少?

AI calls:

get_tdcc_opendata(endpoint_id="2-41", filter_field="證券代號", filter_value="0050")

Result: SUCCESS — ETF monthly analysis showing month-end custody units, change from previous month, issued units, and shareholder count.

"What are current TAIBIR rates?"

You: 現在 TAIBIR 利率是多少?

AI calls:

get_tdcc_opendata(endpoint_id="2-19", limit=5)

Result: SUCCESS — Historical TAIBIR benchmark rates across 10-day to 365-day tenors.

"Check offshore fund NAVs"

You: 幫我查一下有沒有貝萊德的境外基金淨值

AI calls:

get_offshore_fund_nav(fund_name="貝萊德")

Result: SUCCESS — Latest NAV data for matching BlackRock offshore funds registered in Taiwan.

"When is TSMC's shareholder meeting?"

You: 台積電今年股東會什麼時候?有電子投票嗎?

AI calls:

get_evoting_info(stock_code="2330", meeting_type="annual")

Result: Returns e-voting period and shareholder meeting date for TSMC.

Tools Reference

Tool

Description

Key Parameters

get_securities_info

Securities basic data (證券基本資料)

stock_code, stock_name, market

get_shareholding_distribution

Shareholding distribution by tier (股權分散表)

stock_code

get_stock_monthly_changes

Monthly custody change analysis (月分析表)

stock_code, market

get_stock_weekly_balance

Weekly custody balance (週餘額表)

stock_code, market

get_director_shareholding

Director/supervisor custody (董監持股)

stock_code

get_offshore_fund_nav

Offshore fund NAV (境外基金淨值)

fund_code, fund_name

get_evoting_info

Shareholder e-voting (股東e票通)

stock_code, meeting_type

get_tdcc_opendata

Generic query for any endpoint

endpoint_id, filter_field, filter_value, limit

Data Source

All data comes from TDCC OpenData API:

  • 100+ endpoints covering securities, bonds, funds, structured products, futures, and e-voting

  • Updated daily by Taiwan Depository & Clearing Corporation

  • Free & public — no registration or API key needed

Architecture

stdio (JSON-RPC 2.0)
  → mcp_server.py (entry point)
    → app.py (FastMCP singleton)
      → tools/tdcc_tools.py (@mcp.tool() — 8 tools with client-side filtering)
        → connectors/rest_client.py (GET requests + BOM stripping + retry)
          → auth/none.py (no auth)
            → config/settings.py (100+ endpoint paths)

Testing

python scripts/auth/test_connection.py   # Validate API connectivity
python tests/test_all_tools.py           # Run all 12 E2E tests

Contributing

See CONTRIBUTING.md for details.

License

MIT License — see LICENSE for details.

Part of the Asgard Ecosystem

Built with the Asgard MCP Template. See the full Asgard AI Platform for 63+ MCP servers.

Available Tools

8 tools
get_director_shareholdingA

Query TDCC director and supervisor segregated custody data (發行人董監分戶保管).

Shows custody shares under director/supervisor segregated accounts, mandatory custody total shares, and issued shares for a given stock.

ParametersJSON Schema
NameRequiredDescriptionDefault
stock_codeYesSecurities code, e.g. '2330'.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided. Description indicates read-only behavior ('Shows') but lacks details on rate limits, authentication, error handling, or data freshness. Sufficient for a simple query tool but not fully transparent.

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?

Two sentences, no redundancy. First sentence states purpose, second lists output fields. Front-loaded and efficient.

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 no output schema, the description adequately summarizes return fields. Tool is simple with one parameter, and description covers the essential output. Could mention error cases or data range but not critically missing.

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 coverage is 100% with parameter 'stock_code' described as 'Securities code, e.g. 2330.' Description adds no further semantic detail beyond the schema. Baseline score of 3 is appropriate since schema already handles the parameter documentation.

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?

Description clearly states the tool queries TDCC director/supervisor custody data with specific verb 'Query' and resource. It lists exact data items (custody shares, mandatory custody total shares, issued shares). Sibling tools address different data domains (voting, fund NAV, securities info, etc.), so this tool is well-distinguished.

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?

Description implies usage for querying director/supervisor shareholding by stock code but does not provide explicit when-to-use or when-not-to-use guidance. No exclusions or alternatives mentioned.

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

get_evoting_infoA

Query TDCC shareholder e-voting information (股東e票通).

Shows upcoming shareholder meetings with e-voting, including meeting dates and voting periods. Use 'statistics' to get e-voting participation ratios.

ParametersJSON Schema
NameRequiredDescriptionDefault
stock_codeNoSecurities code, e.g. '2330'. Partial match supported.
meeting_typeNoMeeting type: 'annual' (常會, default), 'special' (臨時會), or 'statistics' (投票比率統計).

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist. The description discloses that it queries and shows information, but does not explicitly state it is read-only, or discuss authentication, rate limits, or other behavioral traits.

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?

Two concise sentences: first defines purpose, second gives a usage example. No redundant information.

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?

The description explains what the tool returns (meetings, dates, voting periods) and a special case (statistics). No output schema exists, so a bit more detail on output structure would improve completeness, but it's adequate for a simple query.

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 coverage is 100% with parameter descriptions. The tool description adds minimal extra meaning (e.g., 'statistics' for ratios), but mostly the schema already covers parameter semantics.

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 it queries TDCC shareholder e-voting information, including upcoming meetings, dates, and voting periods. It distinguishes well from siblings (e.g., director shareholding, fund NAV) by focusing on e-voting.

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 mentions using 'statistics' for participation ratios, giving some usage context. However, it does not explicitly state when to use this tool vs. alternatives or when not to use it.

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

get_offshore_fund_navA

Query TDCC offshore fund net asset values (境外基金淨值).

Returns latest NAV for offshore funds registered in Taiwan. Use fund_code or fund_name to filter; returns first 50 if no filter given.

ParametersJSON Schema
NameRequiredDescriptionDefault
fund_codeNoFund code to look up. Partial match supported.
fund_nameNoFund name keyword to search. Partial match supported.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so the description must carry the behavioral burden. It discloses that the tool returns the latest NAV, supports partial match filtering, and returns a limited result set (first 50). This is sufficient for a read-only query tool.

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?

Three concise sentences: purpose with context, return value description, and usage guidance. No filler or redundancy. Information is front-loaded and easy to scan.

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

Completeness5/5

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

For a simple query tool with two optional parameters and no output schema, the description covers everything needed: what it returns (latest NAV), how to filter, default behavior (first 50). No gaps identified.

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 coverage is 100% and both parameters (fund_code, fund_name) have descriptions noting partial match support. The description adds no new details beyond restating that these parameters are for filtering, so it meets the baseline without additional value.

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 'Query' and precisely identifies the resource 'TDCC offshore fund net asset values'. It clearly distinguishes from sibling tools like get_director_shareholding or get_securities_info, which cover entirely different data domains.

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 description states that fund_code or fund_name can be used for filtering and mentions a default limit of 50 results when no filter is given. While it lacks explicit 'when to use vs. alternatives' guidance, the tool's unique purpose among siblings makes this less critical.

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

get_securities_infoA

Query TDCC securities basic information (證券基本資料).

Returns securities code, name, market type, share transfer agent, status, and par value. Use stock_code or stock_name to filter; returns all if no filter given (limited to 50).

ParametersJSON Schema
NameRequiredDescriptionDefault
stock_codeNoSecurities code to look up, e.g. '2330'. Partial match supported.
stock_nameNoSecurities name keyword to search, e.g. '台積電'. Partial match supported.
marketNoMarket filter: '上市', '上櫃', or '興櫃'.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It correctly portrays a read-only query, specifies return fields, and mentions a 50-result limit. No contradictions, but lacks details on pagination, authorization, 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.

Conciseness5/5

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

Two short sentences that front-load the purpose and efficiently cover return data and filtering. No extraneous information.

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 only 3 optional parameters and no output schema, the description is largely complete. It lists return fields and limits. Could enhance by noting pagination behavior for result sets beyond 50, but adequate for typical use.

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

Parameters5/5

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

Schema covers 100% of parameters with descriptions, and the description adds value by noting partial match support for stock_code and stock_name and listing market filter values. Exceeds baseline expectations.

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?

Clearly states it queries TDCC securities basic information, lists returned fields (code, name, market type, etc.), and specifies filtering options. Distinguishes from siblings like get_director_shareholding or get_evoting_info which cover different data.

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?

Explicitly says to use stock_code or stock_name for filtering, and that no filter returns all results up to 50. Implies this is for basic securities info compared to sibling tools, but no explicit when-not-to-use or alternative tool mentions.

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

get_shareholding_distributionA

Query TDCC shareholding distribution by tier (集保戶股權分散表).

Shows the number of shareholders and shares held at each tier level for a given stock. Essential for analyzing retail vs institutional ownership structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
stock_codeYesSecurities code, e.g. '2330'.

TDQS

A3.8/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 fully convey behavioral traits. It describes the output (number of shareholders and shares at each tier) but does not disclose whether the operation is read-only, any required permissions, rate limits, or side effects. For a data retrieval tool, the read-only nature is implied but not stated.

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?

Three sentences with no waste: first states the core function, second describes output, third gives a use case. Information is front-loaded and 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?

For a simple single-parameter tool with no output schema, the description adequately covers purpose, output, and usage context. Missing details like data source or update frequency are minor but do not severely hinder usability.

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 parameter 'stock_code' is already documented with an example. The description adds the context 'for a given stock' and 'by tier' but does not provide additional semantic detail beyond what the schema offers. Baseline 3 is appropriate.

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 queries TDCC shareholding distribution by tier, showing number of shareholders and shares per tier for a given stock. The verb 'Query' and resource 'shareholding distribution' are specific. Sibling tools like get_director_shareholding and get_evoting_info handle different data, so this tool is well-distinguished.

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 description explicitly says it is 'Essential for analyzing retail vs institutional ownership structure,' providing a clear usage context. It does not list alternatives or when-not-to-use, but the context is sufficiently clear given the distinct sibling tools.

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

get_stock_monthly_changesA

Query TDCC monthly custody change analysis for a stock (個別股票異動月分析表).

Shows month-end custody shares, changes from previous month, percentage change, issued shares, and number of shareholders. Useful for tracking custody trends.

ParametersJSON Schema
NameRequiredDescriptionDefault
stock_codeYesStock code, e.g. '2330'.
marketNoMarket type: 'listed' (上市, default), 'otc' (上櫃), or 'emerging' (興櫃).

TDQS

A4/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 bear the burden. It lists the output fields (custody shares, changes, percentage, etc.) but does not disclose any behavioral traits such as data freshness, rate limits, or whether it is safe (read-only). The lack of annotations makes this a minimal disclosure.

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 with just three sentences, front-loading the key purpose and listing output fields in the second sentence. Every sentence adds value without redundancy.

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?

The description lists the major output fields (custody shares, changes, percentage, issued shares, number of shareholders), which compensates for the lack of an output schema. However, it does not mention date range, frequency (monthly is implied), or any limitations, which would enhance completeness.

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 coverage is 100%, and the description adds no additional meaning beyond the schema's type, example, and default. Baseline score of 3 is appropriate as the schema already provides adequate documentation for both parameters.

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 uses the verb 'Query' with the specific resource 'TDCC monthly custody change analysis for a stock', immediately identifying the tool's purpose. It also distinguishes this from siblings like 'get_stock_weekly_balance' by emphasizing the monthly frequency and the specific analysis table.

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 description states 'Useful for tracking custody trends', which implies when to use it. However, it does not explicitly contrast with siblings like 'get_shareholding_distribution', leaving room for ambiguity. The guidance is clear but lacks explicit exclusions or alternatives.

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

get_stock_weekly_balanceB

Query TDCC weekly custody balance for a stock (保管有價證券週餘額表).

Shows weekly balance, change from previous week, and issuance ratio. Useful for short-term custody movement tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
stock_codeYesStock code, e.g. '2330'.
marketNoMarket type: 'listed' (上市, default) or 'otc' (上櫃).

TDQS

B3.3/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. It mentions the output fields (balance, change, ratio) but does not disclose any behavioral traits like data freshness, rate limits, or authentication needs. For a read-only query tool, it is acceptable but minimal.

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 three sentences, front-loaded with the main purpose. It is concise and avoids redundancy. Nearly every sentence adds value, though the second sentence could be merged or omitted.

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?

Without an output schema or annotations, the description lacks completeness. It does not explain return format, date coverage, or any limitations. For a query tool, users need to know what dates are available or how the balance is calculated.

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 coverage is 100% with both parameters described in the schema. The description adds no extra meaning beyond the schema, e.g., it does not clarify the date range or provide examples. Baseline of 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.

Purpose5/5

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

The description clearly states it queries TDCC weekly custody balance for a stock, specifying the data shown (weekly balance, change, issuance ratio). It distinguishes from siblings like get_director_shareholding or get_securities_info by focusing on a specific custody metric.

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 mentions 'Useful for short-term custody movement tracking' which provides a use case but does not explicitly state when to use vs alternatives or when not to use. Sibling tools are listed but not compared.

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

get_tdcc_opendataA

Query any TDCC OpenData endpoint by ID (通用 TDCC 開放資料查詢).

Covers all 100+ TDCC endpoints. Use endpoint_id like '1-1' for securities info, '2-41' for ETF analysis, '3-2' for offshore fund data, '5-4' for futures fund NAV, etc.

Available endpoint categories:

  • 1-x: Share administration (證券基本資料, 股權分散表, 債券, 私募...)

  • 2-x: Statistics (月分析表, 週餘額表, TAIBIR利率, 票券統計...)

  • 3-x: Offshore funds (基金基本資料, 淨值, 配息, 市場統計...)

  • 4-x: Offshore structured products (商品總覽, 參考價格, 配息...)

  • 5-x: Futures trust funds (基金總覽, 淨值, 銷售統計...)

  • 6-x: Shareholder e-voting (電子投票資訊, 投票比率統計)

ParametersJSON Schema
NameRequiredDescriptionDefault
endpoint_idYesTDCC endpoint ID, e.g. '1-1', '2-22', '3-4', '5-4'. See TDCC API docs for full list.
filter_fieldNoField name to filter on (exact Chinese field name from the API response).
filter_valueNoValue to match in the filter field (partial match).
limitNoMaximum number of records to return. Default 100.

TDQS

A3.7/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 full burden. It does not disclose behavioral traits such as read-only nature, rate limits, pagination, or error handling. Only 'Query' suggests non-mutating, but more details are needed.

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 front-loaded with the core purpose, followed by examples and a structured category list. Some redundancy in examples, but overall efficient and well-organized.

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 output schema and no annotations, the description should cover return format, pagination, and authentication. It fails to do so, leaving the agent with insufficient context for a tool that queries 100+ endpoints.

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%, and the description adds value by mapping endpoint_id categories (e.g., 1-x: Share administration). This helps the agent understand endpoint patterns beyond the schema examples.

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 verb 'Query' and the resource 'any TDCC OpenData endpoint by ID'. It provides numerous examples and a category breakdown, distinguishing it from the sibling tools which are specific endpoints.

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 description implies usage for any TDCC endpoint not covered by specific sibling tools, but does not explicitly state when to use this over alternatives. The category listing aids in selecting appropriate endpoint IDs.

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. 8 tool updatesv0.1.0
    • First observedget_director_shareholding
    • First observedget_evoting_info
    • First observedget_offshore_fund_nav
    • First observedget_securities_info
    • First observedget_shareholding_distribution
    • First observedget_stock_monthly_changes
    • First observedget_stock_weekly_balance
    • First observedget_tdcc_opendata

TDQS

A3.9/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have clear distinct purposes (director holdings, e-voting, NAV, etc.), though get_stock_monthly_changes and get_stock_weekly_balance both track custody changes at different timeframes, creating slight overlap. The generic get_tdcc_opendata tool could also cause selection ambiguity but its description clarifies it as a fallback for any endpoint.

Naming Consistency5/5

All tool names consistently start with 'get_' followed by descriptive nouns with underscores (e.g., get_director_shareholding, get_securities_info). No mixing of conventions or vague verbs.

Tool Count5/5

8 specialized tools plus one generic endpoint cover the major TDCC data categories (securities, holdings, custody, offshore funds, e-voting) without being too few or too many. The scope is well-calibrated for a financial data server.

Completeness4/5

Core data like securities info, share distribution, custody changes, and e-voting are covered directly. Some areas (e.g., offshore fund basic info) are missing specialized tools, but the generic get_tdcc_opendata tool allows access to all 100+ endpoints, filling potential gaps.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Provides comprehensive Taiwan stock market data and analysis through MCP tools. Enables querying real-time stock prices, historical data, company information, technical analysis, and market overviews for TWSE and TPEx listed companies.
    8
    16
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    The MCP provides comprehensive financial data and analytical tool support for AI large language models, specifically including the following five core data capabilities: Stock Analysis/ETF Analysis/Public Funds/News & Information/General Tools More Info: https://github.com/shenqingtech/deepq-finan
    44
    10 npm
    7
    ISC
  • A
    license
    Not graded
    quality
    D
    maintenance
    An open-source MCP server that aggregates Taiwan public data sources (data.gov.tw, TWSE, MOEA, CWA, etc.) and exposes them through the Model Context Protocol, enabling AI agents to query Taiwan data with a single configuration line.
    1
    Apache 2.0