Skip to main content
Glama
kinmeic

Stock MCP Server

by kinmeic

stock_get

Retrieve real-time stock price data for individual stocks across multiple markets including A-shares, Hong Kong, and US stocks using stock codes and market identifiers.

Instructions

获取单只股票实时行情数据

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
codeYes股票代码,如 000858
marketYes市场: sh=上海, sz=深圳, hk=港股, us=美股

Implementation Reference

  • The MCP tool handler for 'stock_get' that processes tool requests, validates input using GetStockSchema, calls fetchStock, and returns formatted JSON response
    if (name === 'stock_get') {
      const params = GetStockSchema.parse(args);
      const data = await fetchStock(params.code, params.market as Market);
      return {
        content: [
          {
            type: 'text',
            text: JSON.stringify(data, null, 2),
          },
        ],
      };
    }
  • src/index.ts:102-119 (registration)
    Tool registration in the ListToolsRequestSchema handler that defines the 'stock_get' tool metadata and input schema including code and market parameters
      name: 'stock_get',
      description: '获取单只股票实时行情数据',
      inputSchema: {
        type: 'object',
        properties: {
          code: {
            type: 'string',
            description: '股票代码,如 000858',
          },
          market: {
            type: 'string',
            enum: ['sh', 'sz', 'hk', 'us'],
            description: '市场: sh=上海, sz=深圳, hk=港股, us=美股',
          },
        },
        required: ['code', 'market'],
      },
    },
  • Zod validation schema for stock_get input parameters that validates code (string) and market (enum: 'sh'|'sz'|'hk'|'us')
    const GetStockSchema = z.object({
      code: z.string().describe('股票代码,如 000858'),
      market: z.enum(['sh', 'sz', 'hk', 'us']).describe('市场: sh=上海, sz=深圳, hk=港股, us=美股'),
    });
  • Core implementation of fetchStock that constructs API URL based on market prefix, fetches data from Tencent's stock API, and parses the response into structured StockData
    export async function fetchStock(code: string, market: Market): Promise<StockData> {
      const prefix = getPrefix(market);
      const url = `${BASE_URL}/?q=${prefix}${code}`;
    
      const response = await fetch(url);
      if (!response.ok) {
        throw new Error(`Failed to fetch stock data: ${response.statusText}`);
      }
    
      const text = await response.text();
      const rawData = parseRawResponse(text);
    
      if (!rawData) {
        throw new Error(`No data returned for ${prefix}${code}`);
      }
    
      return parseStockData(rawData, market);
    }
  • Type definitions for stock_get including Market type, StockData union type (AStockData, HKStockData, USStockData), and their respective interfaces defining the structure of returned stock data
    // 股票市场类型
    export type Market = 'sh' | 'sz' | 'hk' | 'us';
    
    // 股票代码前缀
    export type StockPrefix = 'sh' | 'sz' | 'r_hk' | 's_us';
    
    // A股解析后的数据
    export interface AStockData {
      market: 'sh' | 'sz';
      name: string;
      code: string;
      currentPrice: number;
      yesterdayClose: number;
      open: number;
      volume: number;
      outside: number;
      inside: number;
      datetime: string;
      change: number;
      changePercent: number;
      high: number;
      low: number;
      amount: number;
      turnoverRate: number;    // 38 换手率
      peTtm: number;           // 39 市盈率TTM
      amplitude: number;      // 43 振幅
      totalMarketCap: number; // 44 总市值(亿)
      floatMarketCap: number;  // 45 流通市值(亿)
      volumeRatio: number;     // 49 量比
      avgPrice: number;        // 51 均价
      peDynamic: number;       // 52 市盈率(动)
      peStatic: number;        // 53 市盈率(静)
      floatingShares: number;  // 72 流通股
      totalShares: number;     // 73 总股本
      currency: string;       // 82 货币
      bidAsk?: {
        asks: Array<{ price: number; volume: number }>;
        bids: Array<{ price: number; volume: number }>;
      };
    }
    
    // 港股解析后的数据
    export interface HKStockData {
      market: 'hk';
      name: string;
      code: string;
      currentPrice: number;
      yesterdayClose: number;
      open: number;
      volume: number;
      datetime: string;
      change: number;
      changePercent: number;
      high: number;
      low: number;
      amount: number;
      pe: number;
      floatingShares: number;
      totalShares: number;
      currency: string;
    }
    
    // 美股解析后的数据
    export interface USStockData {
      market: 'us';
      name: string;
      code: string;
      currentPrice: number;
      change: number;
      changePercent: number;
      volume: number;
      amount: number;
      marketCap?: number;
      currency: string;
    }
    
    // 统一返回类型
    export type StockData = AStockData | HKStockData | USStockData;

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/kinmeic/stock-mcp'

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