get-news
Retrieve financial news data by specifying date range and stock symbols using the Alpaca MCP Server tool for market analysis and insights.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes | ||
| symbols | Yes |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"end": {
"type": "string"
},
"start": {
"type": "string"
},
"symbols": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"start",
"end",
"symbols"
],
"type": "object"
}
Implementation Reference
- index.ts:103-124 (handler)The handler function for the 'get-news' tool. It fetches news from the Alpaca API for specified symbols within a date range, handling pagination and returning JSON-formatted news articles or an error message.export async function getNews({ start, end, symbols }: { start: string; end: string; symbols: string[] }) { try { const all: any[] = []; let pageToken: string | undefined; do { const params: Record<string, unknown> = pageToken ? { page_token: pageToken } : { sort: "desc", start, end, symbols: symbols.join(","), include_content: true }; const resp = await request<{ news: any[]; next_page_token?: string }>({ base: process.env.ALPACA_ENDPOINT!, path: "/v1beta1/news", params, }); all.push(...resp.news); pageToken = resp.next_page_token; } while (pageToken); return { content: [{ type: "text", text: JSON.stringify(all) }] as any }; } catch (err: any) { debug("get-news error", err); return { content: [{ type: "text", text: `Error fetching news: ${err.message}` }] as any, isError: true }; } }
- index.ts:155-159 (registration)Registration of the 'get-news' tool using McpServer.tool, specifying the name, input schema with Zod validation, and referencing the getNews handler function.server.tool( "get-news", { start: z.string(), end: z.string(), symbols: z.array(z.string()) }, getNews );
- index.ts:157-157 (schema)Zod schema defining the input parameters for the 'get-news' tool: start and end dates as strings, and an array of symbol strings.{ start: z.string(), end: z.string(), symbols: z.array(z.string()) },
- index.ts:20-40 (helper)Helper function 'request' used by getNews to make authenticated API calls to Alpaca endpoints.async function request<T>({ base = process.env.ALPACA_ENDPOINT!, path, method = "GET", params = {} }: RequestOptions): Promise<T> { if (!process.env.ALPACA_API_KEY || !process.env.ALPACA_SECRET_KEY) { throw new Error("Alpaca credentials not configured. Set ALPACA_API_KEY and ALPACA_SECRET_KEY."); } const qs = new URLSearchParams(params as Record<string, string>).toString(); const url = `${base}${path}${qs ? `?${qs}` : ""}`; const res = await fetch(url, { method, headers: { "APCA-API-KEY-ID": process.env.ALPACA_API_KEY!, "APCA-API-SECRET-KEY": process.env.ALPACA_SECRET_KEY!, }, }); if (!res.ok) { const err = await res.json(); throw new Error(`${res.status} ${res.statusText} - ${JSON.stringify(err)}`); } return (await res.json()) as T; }