Skip to main content
Glama
yalcin

ta-lib-mcp

by yalcin

ta-lib-mcp

Read-only Python MCP server for TA-Lib indicator discovery and computation.

What It Exposes

  • talib_list_indicators: list available indicators with group, category, and search filters.

  • talib_get_indicator_info: inspect one indicator's inputs, outputs, parameters, and category.

  • talib_compute_indicator: compute an indicator from numeric OHLCV-like arrays.

  • talib_list_categories: list indicator categories (Trend, Momentum, Volume, etc.) with descriptions.

  • talib_get_version_info: report MCP, Python, and TA-Lib versions.

Related MCP server: ibkr-mcp

Requirements

  • Python 3.13+

  • mcp[cli]

  • Optional: TA-Lib (pip install "ta-lib-mcp-server[talib]")

If TA-Lib is missing, the server still starts and returns actionable errors for TA-Lib tools.

Install

pip install -e ".[dev,talib]"

Run

ta-lib-mcp

MCP Client Configuration

Claude Desktop

{
  "mcpServers": {
    "ta-lib": {
      "command": "ta-lib-mcp",
      "env": {
        "TALIB_MCP_LOG_LEVEL": "INFO"
      }
    }
  }
}

Codex

[mcp_servers.talib]
command = "ta-lib-mcp"
args = []

[mcp_servers.talib.env]
TALIB_MCP_LOG_LEVEL = "INFO"

Gemini CLI

{
  "mcpServers": {
    "ta-lib": {
      "command": "ta-lib-mcp",
      "env": {
        "TALIB_MCP_LOG_LEVEL": "INFO"
      }
    }
  }
}

Development

pip install -e ".[dev,talib]"
pytest
ruff check src tests
ruff format src tests
mypy src

Engineering Rules

  • Read-only server behavior only; no stateful or exchange-connected operations.

  • External MCP tool inputs are validated in src/ta_lib_mcp/validators.py.

  • Do not use eval or exec.

Available Tools

5 tools
talib_compute_indicatorA
Read-onlyIdempotent

Compute a TA-Lib indicator from aligned numeric inputs.

Computes the requested indicator over the provided numeric arrays and returns the result. All input arrays must have the same length.

Args: indicator: TA-Lib indicator name (e.g., "SMA", "RSI", "MACD"). inputs: Aligned numeric input arrays (e.g., {"close": [1.0, 2.0, 3.0]}). parameters: Optional indicator parameters (e.g., {"timeperiod": 14}).

Returns: Computation result with indicator name, length, parameters, and output values.

ParametersJSON Schema
NameRequiredDescriptionDefault
indicatorYes
inputsYes
parametersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already indicate readOnly, non-destructive, idempotent. The description adds critical behavioral details: inputs must be aligned and same length, and returns structured result. No contradictions.

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 well-structured with clear sections for args and returns, and is not overly verbose. Slightly more text than necessary, but still effective.

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?

Despite no output schema shown, the description explains return format. Given the complexity (3 params, nested objects), and absence of schema coverage, the description is complete enough for correct invocation.

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 coverage is 0%, but the description fully compensates by describing each parameter with types and examples: indicator as string with examples, inputs as object of number arrays with example, parameters as optional object with example. This exceeds requirements.

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 starts with 'Compute a TA-Lib indicator from aligned numeric inputs', which clearly states the verb (compute) and resource (TA-Lib indicator). It further distinguishes from siblings like 'talib_list_indicators' by focusing on computation.

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 indicator computation, but does not explicitly state when not to use it or mention alternatives. However, the context of sibling tools makes the use case clear.

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

talib_get_indicator_infoA
Read-onlyIdempotent

Get metadata for a specific TA-Lib indicator.

Returns the indicator's group, category, display name, required inputs, outputs, default parameters, and lookback period.

Args: indicator: TA-Lib indicator name (e.g., "SMA", "RSI", "MACD").

Returns: Indicator metadata with inputs, outputs, parameters, and lookback.

ParametersJSON Schema
NameRequiredDescriptionDefault
indicatorYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already indicate read-only and idempotent behavior; the description adds context by detailing return fields and example usage, without contradicting annotations.

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 paragraphs with Args/Returns sections, every sentence adds value, no redundancy.

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?

Given the tool's simplicity and presence of an output schema, the description covers purpose, parameter, and return content completely without gaps.

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?

With 0% schema description coverage, the description fully compensates by explaining the 'indicator' parameter as a TA-Lib indicator name with concrete examples (SMA, RSI, MACD).

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 'Get metadata for a specific TA-Lib indicator' and lists specific details returned (group, category, etc.), distinguishing it from siblings like talib_compute_indicator which computes values.

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 by specifying the indicator argument with examples, but does not explicitly state when to avoid or mention alternative tools.

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

talib_get_version_infoA
Read-onlyIdempotent

Return server, Python, and TA-Lib version information.

Returns version information including the ta-lib-mcp server version, TA-Lib availability, and Python version.

Returns: Version information dictionary.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds specific details about returned fields (server version, TA-Lib availability, Python version), enhancing transparency beyond annotations.

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 and to the point, with one minor repetition of 'Returns version information'. It efficiently communicates the tool's output without extraneous content.

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?

Given the tool's simplicity (no parameters, straightforward purpose), the description is complete. It specifies the output as a dictionary with version components, which is sufficient for an agent to use 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?

No parameters exist, so the schema already fully covers semantics. The description adds no parameter details, but that is acceptable as there is no ambiguity.

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 returns server, Python, and TA-Lib version information. This purpose is unique among sibling tools which focus on indicators and categories.

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?

While not explicitly stating when to use or alternatives, the purpose is self-evident and distinct from siblings. A minor improvement would be to explicitly recommend using it for version checking.

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

talib_list_categoriesA
Read-onlyIdempotent

List available indicator categories with descriptions.

Returns all indicator categories (Trend, Momentum, Volume, etc.) with descriptions and example indicators for each category.

Returns: List of category summaries with name, description, and examples.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds that it returns summaries with name, description, and examples, providing behavioral context beyond annotations.

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 three sentences with no extraneous words, front-loaded with the purpose, and efficiently structured.

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 zero-parameter, simple list tool with an existing output schema, the description fully covers the return format and is contextually complete.

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?

No parameters exist, and schema coverage is 100%. Description adds no parameter info, which is appropriate; a baseline of 4 applies.

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 lists available indicator categories with descriptions. It distinguishes from siblings like talib_list_indicators by focusing on categories.

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 obtaining category information but does not explicitly exclude alternatives. However, due to the tool's simplicity and zero parameters, the context is clear enough.

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

talib_list_indicatorsA
Read-onlyIdempotent

List TA-Lib indicators with optional group, category, and search filters.

Returns indicator names with group and category metadata. Use the optional filters to narrow results by TA-Lib group, category, or keyword search.

Args: group: Optional TA-Lib group filter (e.g., "Overlap Studies"). category: Optional category filter (e.g., "Trend", "Momentum"). search: Optional keyword search for indicator names. limit: Maximum number of indicators to return (1-1000).

Returns: List of indicator summaries with name, group, and category.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNo
categoryNo
searchNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already indicate the tool is read-only, non-destructive, and idempotent. The description adds valuable contextual details, such as the return format (list with name, group, category), the optional filters, and the limit range. No contradictions with annotations.

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 well-structured, starting with a one-line summary followed by a detailed Args/Returns block. It is efficient, though the Args section adds moderate length. Overall, it is front-loaded and clear.

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 tool's low complexity, the existence of an output schema, and the annotations covering safety, the description is complete. It covers the purpose, parameters, and return structure. Minor missing aspects like sort order or edge cases are not critical for this simple list tool.

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?

With 0% schema coverage, the description fully explains all four parameters: group, category, search (with examples), and limit (with range). This compensates for the missing schema descriptions and provides clear semantics.

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 lists TA-Lib indicators with optional filters, specifying the verb 'list' and the resource 'indicators'. However, it does not explicitly differentiate from sibling tools like 'talib_list_categories' or 'talib_get_indicator_info', which could cause ambiguity in selection.

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 basic usage instructions ('Use the optional filters...') but lacks explicit guidance on when to use this tool versus alternatives. For instance, it does not mention that for a specific indicator's details one should use 'talib_get_indicator_info', or that for categories alone 'talib_list_categories' is more appropriate.

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. Dates show when Glama detected each change.

  1. 5 tool updatesv0.1.0
    • First observedtalib_compute_indicator
    • First observedtalib_get_indicator_info
    • First observedtalib_get_version_info
    • First observedtalib_list_categories
    • First observedtalib_list_indicators

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: computing an indicator, getting metadata, listing categories, listing indicators, and version info. There is no overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent 'talib_verb_noun' pattern in snake_case, making them predictable and easy to understand.

Tool Count5/5

With 5 tools covering discovery, metadata, computation, and version info, the set is well-scoped and efficiently supports the TA-Lib domain.

Completeness5/5

The set provides complete coverage: you can discover indicators, get detailed info, and compute them. No obvious gaps for typical usage.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Read-only MCP server for Interactive Brokers that exposes market data, positions, and account info as MCP tools.
    8
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A read-only-by-default MCP server for Interactive Brokers that exposes account, positions, PnL, market data, and trade history from a local TWS/IB Gateway session, with optional trading capabilities.
    15
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that calculates technical analysis indicators for stock tickers using yfinance and pandas-ta, providing real-time financial data and quantitative analysis tools for LLMs.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yalcin/ta-lib-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server