Skip to main content
Glama

ta_bollinger

Calculate Bollinger Bands for market analysis to identify volatility and potential price breakouts using moving averages and standard deviation.

Instructions

Compute Bollinger Bands (SMA + population stdev). Inputs: values:number[] (oldest→newest), period?:number(20), mult?:number(2).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
valuesYes
periodNo
multNo

Implementation Reference

  • The MCP tool handler for 'ta_bollinger'. Validates input parameters (values array, optional period and mult), calls the bollinger helper function, and formats the response.
    "ta_bollinger": async (args) => { const values = Array.isArray(args?.values) ? args.values : null; const period = Number.isFinite(Number(args?.period)) ? Number(args.period) : 20; const mult = Number.isFinite(Number(args?.mult)) ? Number(args.mult) : 2; if (!values || values.length === 0) { return { content: textContent({ error:true, message:"'values' must be a non-empty array of numbers (oldest → newest)" }), isError:true }; } const out = taBoll(values, period, mult); return { content: textContent({ ok:true, ...out, period, mult }) }; },
  • mcp-server.js:336-344 (registration)
    Tool registration entry in the tools list, including description, input schema, and annotations. Used by the MCP server's tools/list method.
    { name:"ta_bollinger", description:"Compute Bollinger Bands (SMA + population stdev). Inputs: values:number[] (oldest→newest), period?:number(20), mult?:number(2).", inputSchema:{ type:"object", properties:{ values:{ type:"array", items:{ type:"number" } }, period:{ type:"number" }, mult:{ type:"number" } }, required:["values"] }, annotations:{ title:"TA: Bollinger Bands", readOnlyHint:true, openWorldHint:false } },
  • Input schema definition for the ta_bollinger tool, specifying the expected arguments.
    inputSchema:{ type:"object", properties:{ values:{ type:"array", items:{ type:"number" } }, period:{ type:"number" }, mult:{ type:"number" } }, required:["values"] },
  • Core implementation of Bollinger Bands computation: calculates SMA mean, population stdev, upper/lower bands, and derived metrics (percentB, bandwidth) over the last 'period' values.
    export function bollinger(values, period = 20, mult = 2) { const arr = normalize(values); if (arr.length < period) return null; const slice = arr.slice(-period); const mean = avg(slice); if (!isFiniteNum(mean)) return null; const variance = avg(slice.map(v => (v - mean) * (v - mean))); const stdev = Math.sqrt(variance); if (!isFiniteNum(stdev)) return null; const upper = mean + mult * stdev; const lower = mean - mult * stdev; const last = arr[arr.length - 1]; // Avoid division by zero in derived metrics const denomBands = upper - lower; const denomMean = mean; const percentB = isFiniteNum(denomBands) && denomBands !== 0 ? (last - lower) / denomBands : null; const bandwidth = isFiniteNum(denomMean) && denomMean !== 0 ? (upper - lower) / denomMean : null; return { mean, upper, lower, last, percentB: isFiniteNum(percentB) ? percentB : null, bandwidth: isFiniteNum(bandwidth) ? bandwidth : null }; }

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/JCF0/cg-alpha-mcp'

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