UNPKG

twse-mcp

Version:

MCP server for Taiwan Stock Exchange (TWSE) market data API

221 lines 7.01 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TWSEClient = void 0; const axios_1 = __importDefault(require("axios")); class TWSEClient { client; baseURL = 'https://openapi.twse.com.tw/v1'; constructor() { this.client = axios_1.default.create({ baseURL: this.baseURL, timeout: 30000, headers: { 'Accept': 'application/json', 'User-Agent': 'TWSE-MCP-Server/1.0' } }); } async getStockDayAll() { try { const response = await this.client.get('/exchangeReport/STOCK_DAY_ALL'); return response.data; } catch (error) { throw new Error(`Failed to fetch daily stock data: ${error}`); } } async getStockPERatios() { try { const response = await this.client.get('/exchangeReport/BWIBBU_ALL'); return response.data; } catch (error) { throw new Error(`Failed to fetch P/E ratios: ${error}`); } } async getMarketIndex() { try { const response = await this.client.get('/exchangeReport/MI_INDEX'); return response.data; } catch (error) { throw new Error(`Failed to fetch market index: ${error}`); } } async getTopForeignHoldings() { try { const response = await this.client.get('/fund/MI_QFIIS_sort_20'); return response.data; } catch (error) { throw new Error(`Failed to fetch foreign holdings: ${error}`); } } async getMonthlyStats() { try { const response = await this.client.get('/exchangeReport/FMSRFK_ALL'); return response.data; } catch (error) { throw new Error(`Failed to fetch monthly stats: ${error}`); } } async getStockDayAvg() { try { const response = await this.client.get('/exchangeReport/STOCK_DAY_AVG_ALL'); return response.data; } catch (error) { throw new Error(`Failed to fetch stock day average: ${error}`); } } async getMarginTrading() { try { const response = await this.client.get('/exchangeReport/MI_MARGN'); return response.data; } catch (error) { throw new Error(`Failed to fetch margin trading data: ${error}`); } } async getTop20Volume() { try { const response = await this.client.get('/exchangeReport/MI_INDEX20'); return response.data; } catch (error) { throw new Error(`Failed to fetch top 20 volume: ${error}`); } } async getFiveSecondStats() { try { const response = await this.client.get('/exchangeReport/MI_5MINS'); return response.data; } catch (error) { throw new Error(`Failed to fetch 5-second stats: ${error}`); } } async getHolidaySchedule() { try { const response = await this.client.get('/holidaySchedule/holidaySchedule'); return response.data; } catch (error) { throw new Error(`Failed to fetch holiday schedule: ${error}`); } } async getNewListings() { try { const response = await this.client.get('/company/newlisting'); return response.data; } catch (error) { throw new Error(`Failed to fetch new listings: ${error}`); } } async getSuspendedListings() { try { const response = await this.client.get('/company/suspendListingCsvAndHtml'); return response.data; } catch (error) { throw new Error(`Failed to fetch suspended listings: ${error}`); } } async getETFRanking() { try { const response = await this.client.get('/ETFReport/ETFRank'); return response.data; } catch (error) { throw new Error(`Failed to fetch ETF ranking: ${error}`); } } async getForeignCategoryHoldings() { try { const response = await this.client.get('/fund/MI_QFIIS_cat'); return response.data; } catch (error) { throw new Error(`Failed to fetch foreign category holdings: ${error}`); } } async getIndexHistory() { try { const response = await this.client.get('/indicesReport/MI_5MINS_HIST'); return response.data; } catch (error) { throw new Error(`Failed to fetch index history: ${error}`); } } async getMonthlyRevenue() { try { const response = await this.client.get('/opendata/t187ap05_L'); return response.data; } catch (error) { throw new Error(`Failed to fetch monthly revenue: ${error}`); } } async getIncomeStatement() { try { const response = await this.client.get('/opendata/t187ap06_L_ci'); return response.data; } catch (error) { throw new Error(`Failed to fetch income statements: ${error}`); } } async getBalanceSheet() { try { const response = await this.client.get('/opendata/t187ap07_L_ci'); return response.data; } catch (error) { throw new Error(`Failed to fetch balance sheets: ${error}`); } } async getIndustryEPS() { try { const response = await this.client.get('/opendata/t187ap14_L'); return response.data; } catch (error) { throw new Error(`Failed to fetch industry EPS: ${error}`); } } async getProfitAnalysis() { try { const response = await this.client.get('/opendata/t187ap17_L'); return response.data; } catch (error) { throw new Error(`Failed to fetch profit analysis: ${error}`); } } async getFinancialIncomeStatement() { try { const response = await this.client.get('/opendata/t187ap06_L_basi'); return response.data; } catch (error) { throw new Error(`Failed to fetch financial income statements: ${error}`); } } async getFinancialBalanceSheet() { try { const response = await this.client.get('/opendata/t187ap07_L_basi'); return response.data; } catch (error) { throw new Error(`Failed to fetch financial balance sheets: ${error}`); } } } exports.TWSEClient = TWSEClient; //# sourceMappingURL=twse-client.js.map