Skip to main content
Glama
phuihock

TA-Lib MCP Server

by phuihock

calculate_kama

Compute the Kaufman Adaptive Moving Average (KAMA) to adapt to market volatility and reduce noise in financial price data for technical analysis.

Instructions

Calculate Kaufman Adaptive Moving Average (KAMA).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Implementation Reference

  • MCP tool handler for calculate_kama, decorated with @mcp.tool() for registration and execution logic delegating to KAMA indicator.
    @mcp.tool() async def calculate_kama(close: List[float], timeperiod: int = 10) -> Dict[str, Any]: try: indicator = registry.get_indicator("kama") if not indicator: raise ValueError("KAMA 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)}
  • Input schema defining parameters for KAMA indicator: close_prices (array) and timeperiod (int, default 10).
    @property def input_schema(self) -> Dict[str, Any]: return {"type": "object", "properties": {"close_prices": {"type": "array", "items": {"type": "number"}}, "timeperiod": {"type": "integer", "default": 10}}, "required": ["close_prices"]}
  • Core implementation of KAMA calculation using TA-Lib's ta.KAMA function.
    async def calculate(self, market_data: MarketData, options: Dict[str, Any] = None) -> IndicatorResult: if options is None: options = {} timeperiod = options.get("timeperiod", 10) close = np.asarray(market_data.close, dtype=float) try: out = ta.KAMA(close, timeperiod=timeperiod) return IndicatorResult(indicator_name=self.name, success=True, values={"kama": 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))
  • Registration of KAMAIndicator class in the central indicator registry.
    registry.register("kama", KAMAIndicator)
  • Tool specification schema in dynamic MCP server, defining params and defaults for calculate_kama.
    "kama": { "description": "Kaufman Adaptive Moving Average (KAMA)", "params": {"close": List[float], "timeperiod": int}, "defaults": {"timeperiod": 10}, "market_data_args": {"close": "close"}, },

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