Skip to main content
Glama
phuihock

TA-Lib MCP Server

by phuihock

calculate_tema

Calculate Triple Exponential Moving Average (TEMA) for financial market analysis using technical indicators to identify trends and reduce lag in price data.

Instructions

Calculate Triple Exponential Moving Average (TEMA).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Implementation Reference

  • MCP tool handler and registration for 'calculate_tema'. Delegates computation to the 'tema' indicator from registry.
    @mcp.tool() async def calculate_tema(close: List[float], timeperiod: int = 30) -> Dict[str, Any]: try: indicator = registry.get_indicator("tema") if not indicator: raise ValueError("TEMA indicator not found") market_data = MarketData(close=close) result = await indicator.calculate(market_data, {"timeperiod": timeperiod}) if result.success: return {"success": True, "values": result.values, "metadata": result.metadata} return {"success": False, "error": result.error_message} except Exception as e: return {"success": False, "error": str(e)}
  • Specification for dynamic 'calculate_tema' tool including description and parameter mapping.
    "tema": { "description": "Triple Exponential Moving Average (TEMA)", "params": {"close": List[float], "timeperiod": int}, "defaults": {"timeperiod": 30}, "market_data_args": {"close": "close"}, },
  • Registers TEMAIndicator in the global indicator registry under 'tema'.
    registry.register("tema", TEMAIndicator)
  • Core TEMA indicator implementation using TA-Lib's TEMA function. Includes input schema referencing 'close_prices' and performs the triple EMA calculation.
    class TEMAIndicator(BaseIndicator): def __init__(self): super().__init__(name="tema", description="Triple Exponential Moving Average (TEMA)") @property def input_schema(self) -> Dict[str, Any]: return {"type": "object", "properties": {"close_prices": {"type": "array", "items": {"type": "number"}}, "timeperiod": {"type": "integer", "default": 30}}, "required": ["close_prices"]} async def calculate(self, market_data: MarketData, options: Dict[str, Any] = None) -> IndicatorResult: if options is None: options = {} timeperiod = options.get("timeperiod", 30) close = np.asarray(market_data.close, dtype=float) try: out = ta.TEMA(close, timeperiod=timeperiod) return IndicatorResult(indicator_name=self.name, success=True, values={"tema": out.tolist()}, metadata={"timeperiod": timeperiod, "input_points": len(close), "output_points": len(out)}) except Exception as e: return IndicatorResult(indicator_name=self.name, success=False, values={}, error_message=str(e))

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/phuihock/mcp-talib'

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