twse-mcp
Version:
MCP server for Taiwan Stock Exchange (TWSE) market data API
221 lines • 7.01 kB
JavaScript
;
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