A-Share MCP

Fornece dados do mercado de ações A, incluindo informações básicas, K-lines históricos, indicadores financeiros e dados macroeconômicos usando Baostock.

Documentação

📊 a-share-mcp 📈

License Python Package Manager MCP

MCP de ações A.

Este projeto é um servidor MCP focado no mercado de ações A, que oferece diversas funções de consulta, como informações básicas de ações, dados históricos de candles K, indicadores financeiros, dados macroeconômicos e muito mais. Em teoria, pode responder a qualquer pergunta sobre o mercado de ações A, seja sobre o mercado como um todo ou sobre ações específicas.

Estrutura do Projeto

a_share_mcp/
│
├── mcp_server.py           # 主服务器入口文件
├── pyproject.toml          # 项目依赖配置
├── README.md               # 项目说明文档
│
├── src/                    # 源代码目录
│   ├── __init__.py
│   ├── baostock_data_source.py   # Baostock数据源实现
│   ├── data_source_interface.py  # 数据源接口定义
│   ├── utils.py                  # 通用工具函数
│   │
│   ├── formatting/         # 数据格式化模块
│   │   ├── __init__.py
│   │   └── markdown_formatter.py  # Markdown格式化工具
│   │
│   └── tools/              # MCP工具模块
│       ├── __init__.py
│       ├── base.py                # 基础工具函数
│       ├── stock_market.py        # 股票市场数据工具
│       ├── financial_reports.py   # 财务报表工具
│       ├── indices.py             # 指数相关工具
│       ├── market_overview.py     # 市场概览工具
│       ├── macroeconomic.py       # 宏观经济数据工具
│       ├── date_utils.py          # 日期工具
│       └── analysis.py            # 分析工具
│
└── resource/               # 资源文件
    └── img/                # 图片资源
        ├── img_1.png       # CherryStudio配置示例
        └── img_2.png       # CherryStudio配置示例

Recursos


Dados básicos de ações

Dados históricos de mercado

Dados de demonstrações financeiras

Dados macroeconômicos

Ações componentes de índices

Relatórios de análise de dados

Pré-requisitos

  1. Ambiente Python: Python 3.10+
  2. Gerenciamento de dependências: use o gerenciador de pacotes uv para instalar as dependências
  3. Fonte de dados: baseado na fonte de dados Baostock, sem necessidade de conta paga. Agradecemos à Baostock.
  4. Observação: este projeto foi desenvolvido em ambiente Windows.

Horários de atualização dos dados

A seguir estão os horários oficiais de atualização de dados da Baostock. Preste atenção ao horário ao consultar os dados mais recentes Site oficial da Baostock

Horários de atualização diária dos dados:

  • Dia de negociação atual às 17:30, conclusão da inserção dos dados de candles K diários
  • Dia de negociação atual às 18:00, conclusão da inserção dos dados de fatores de ajuste
  • Segundo dia natural às 11:00, conclusão da inserção dos dados de candles K por minuto
  • Segundo dia natural às 1:30, conclusão da inserção dos "outros dados de relatórios financeiros" do dia de negociação anterior
  • Sábado às 17:30, conclusão da inserção dos dados de candles semanais

Horários de atualização semanal dos dados:

  • Toda segunda-feira à tarde, conclusão da inserção dos dados das ações componentes do SSE 50, CSI 300 e CSI 500

Portanto, no próprio dia de negociação, se você consultar os dados do dia antes das 17:30, não será possível obtê-los.

Instalação do ambiente

Execute na raiz do projeto:

Para iniciar o servidor MCP de ações A, siga os passos abaixo:

# 1. 创建虚拟环境(仅创建,不会安装任何包)
uv venv

# 2. 激活虚拟环境
# Windows
.venv\Scripts\activate
# macOS/Linux
# source .venv/bin/activate

# 3. 安装所有依赖(必须在激活的虚拟环境中执行)
uv sync

Uso: configurando o servidor em um cliente MCP

Em clientes que suportam MCP (como plugins do VS Code, CherryStudio, etc.), você precisa configurar como iniciar este servidor. Recomenda-se usar uv.

Método 1: IDE com configuração JSON (por exemplo, Cursor, VSCode, Trae, etc.)

Para clientes que exigem edição de arquivos JSON para configurar o servidor MCP, você precisa encontrar o local correspondente para configurar o MCP (pode variar entre IDEs e clientes MCP de desktop) e adicionar uma nova entrada no objeto mcpServers.

Exemplo de configuração JSON (substitua o caminho pelo seu caminho absoluto real):

{
  "mcpServers": {
    "a-share-mcp": {
      "command": "uv", // 或者 uv.exe 的绝对路径, 例如: "C:\\path\\to\\uv.exe"
      "args": [
        "--directory",
        "C:\\Users\\YourName\\Projects\\a_share_mcp", // 替换为你的项目根目录绝对路径,不一定是C盘,按实际的填写
        "run",
        "python",
        "mcp_server.py"
      ],
      "transport": "stdio"
      // "workingDirectory": "C:\\Users\\YourName\\Projects\\a_share_mcp", // 使用 uv --directory 后,此项可能不再必需,但建议保留作为备用
    }
    // ... other servers ...
  }
}

Observações importantes:

  • command: certifique-se de que o comando uv ou o caminho absoluto de uv.exe seja acessível e executável pelo cliente.
  • args: certifique-se de que a lista de argumentos esteja completa e na ordem correta.
  • Escape de caminho: o caminho deve ser escrito com barras invertidas duplas \\.

    Esta é uma particularidade do sistema Windows. Em sistemas macOS ou Linux, o caminho usa barra normal / como separador de diretórios, não sendo necessário esse escape.

  • workingDirectory: embora uv --directory deva resolver o problema do diretório de trabalho, se o cliente ainda reportar o erro ModuleNotFoundError, tente definir explicitamente este campo como o caminho absoluto da raiz do projeto na configuração do cliente.

Método 2: usando CherryStudio

Na interface de configuração do servidor MCP do CherryStudio, preencha da seguinte forma:

  • Nome: a-share-mcp (ou personalizado)

  • Descrição: 本地 A 股 MCP 服务器 (ou personalizada)

  • Tipo: selecione Entrada/Saída padrão (stdio)

  • Comando: uv (ou preencha com o caminho absoluto do uv.exe no sistema)

  • Fonte do gerenciador de pacotes: padrão

  • Argumentos:

    1. Primeiro argumento: --directory
    2. Segundo argumento: C:\\Users\\YourName\\Projects\\a_share_mcp
    3. Terceiro argumento: run
    4. Quarto argumento: python
    5. Quinto argumento: mcp_server.py
    • Certifique-se de que todos os argumentos estejam separados por quebras de linha (pressione Enter), caso contrário ocorrerá erro (está bem explicadinho, não está?)
  • Variáveis de ambiente: (geralmente deixe em branco)

Dicas (obrigatório ler): Às vezes, após preencher os argumentos no CherryStudio e clicar no botão de alternância no canto superior direito, nada acontece. Nesse caso, basta clicar em qualquer botão do menu à esquerda para sair da tela de configuração do MCP e depois voltar à tela de configuração do MCP — você verá que o MCP já está configurado com a luz verde acesa.

Exemplo de uso no CherryStudio: Em teoria, você pode fazer qualquer pergunta sobre ações A :)

CherryStudio配置示例1

CherryStudio配置示例2

Aviso importante:

  • Certifique-se de que uv no campo comando, ou seu caminho absoluto, seja válido e executável.
  • Certifique-se de que os cinco argumentos no campo argumentos estejam preenchidos corretamente na ordem.

Lista de ferramentas

Este servidor MCP atualmente oferece 41 ferramentas, cobrindo dados abrangentes de ações, relatórios financeiros, macroeconomia, análise de datas e muito mais. A seguir está a lista completa:

🔍 Expandir para ver todas as ferramentas
🏛️ Dados do mercado de ações (Stock)📊 Dados de demonstrações financeiras (Finance)
  • get_historical_k_data (candles K históricos)
  • get_stock_basic_info (informações básicas)
  • get_dividend_data (dividendos e distribuições)
  • get_adjust_factor_data (fator de ajuste)
  • get_profit_data (lucratividade)
  • get_operation_data (capacidade operacional)
  • get_growth_data (capacidade de crescimento)
  • get_balance_data (ativos e passivos)
  • get_cash_flow_data (fluxo de caixa)
  • get_dupont_data (análise DuPont)
  • get_performance_express_report (relatório rápido de desempenho)
  • get_forecast_report (previsão de desempenho)
  • get_fina_indicator (resumo de indicadores financeiros)
🔎 Mercado e índices (Market & Index)🌐 Macro e outros (Macro & Utils)
  • get_trade_dates (calendário de negociação)
  • get_all_stock (todos os títulos do mercado)
  • search_stocks (busca de ações)
  • get_suspensions (informações de suspensão)
  • get_stock_industry (classificação por setor)
  • get_index_constituents (componentes de índice)
  • get_sz50_stocks (SSE 50)
  • get_hs300_stocks (CSI 300)
  • get_zz500_stocks (CSI 500)
  • list_industries (lista de setores)
  • get_industry_members (ações por setor)
  • get_deposit_rate_data (taxa de depósito)
  • get_loan_rate_data (taxa de empréstimo)
  • get_required_reserve_ratio_data (reserva compulsória)
  • get_money_supply_data_month (oferta monetária mensal)
  • get_money_supply_data_year (oferta monetária anual)
  • get_latest_trading_date (último dia de negociação)
  • get_market_analysis_timeframe (período de análise inteligente)
  • is_trading_day (verificar dia de negociação)
  • previous_trading_day (dia de negociação anterior)
  • next_trading_day (próximo dia de negociação)
  • get_last_n_trading_days (últimos N dias)
  • get_recent_trading_range (intervalo recente)
  • get_month_end_trading_dates (dias de negociação de fim de mês)
  • get_stock_analysis (gerar relatório de análise)
  • normalize_stock_code (padronização de código)
  • normalize_index_code (padronização de código de índice)
  • list_tool_constants (consulta de constantes)

Guia de contribuição

Sinta-se à vontade para enviar Issues ou Pull Requests para ajudar a melhorar o projeto. Antes de contribuir, consulte as Issues e a documentação existentes.

☕️ Pague um café para o autor

Se este projeto foi útil para você, sinta-se à vontade para me pagar um café ❤️

支付宝收款码

Licença

Este projeto é licenciado sob a licença MIT — consulte o arquivo LICENSE para mais detalhes

Visão geral desta atualização (2025-12-25)

Esta atualização adiciona a ferramenta de resumo de indicadores financeiros, que agrega 6 categorias de dados financeiros em uma interface de consulta conveniente.

🆕 Novas ferramentas

  • Resumo de indicadores financeiros: get_fina_indicator obtém com um clique os 6 tipos de indicadores financeiros (lucratividade, capacidade operacional, capacidade de crescimento, capacidade de solvência, fluxo de caixa, análise DuPont), retornando dados consolidados por trimestre.