CasualMarket

sacahan/CasualMarket

3.3

If you are the rightful owner of CasualMarket and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

CasualMarket is a comprehensive Model Context Protocol (MCP) server for Taiwan stock trading, offering a wide range of tools for real-time stock price queries, financial analysis, market information, and more.

Tools
5
Resources
0
Prompts
0

CasualMarket - 台灣股票交易 MCP Server

Python 3.12+ FastMCP License: MIT Tests

一個功能完整的台灣股票交易 MCP Server,提供超過 23 個專業工具,涵蓋即時股價查詢、財務分析、市場資訊、模擬交易等多種功能。基於 FastMCP 2.7.0+ 框架開發,具備智慧快取和頻率限制機制。

部署模式

stdio 模式: 本地開發與 Claude Desktop 整合
Docker + SSE 模式: 容器化部署,HTTP 介面訪問

目錄

快速開始

CasualMarket MCP Server 已發佈在 PyPI,您可以直接透過 uvx 安裝並在支援 MCP 的工具中使用,無需本地配置。

系統需求:

最簡單的方式是根據您使用的工具,按照下方「MCP 安裝與配置」部分進行配置即可。

MCP 安裝與配置

Claude Desktop 配置

編輯 Claude Desktop 配置檔:

配置檔位置:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

配置內容(推薦方式 - 使用 GitHub Repo):

{
  "mcpServers": {
    "casual-market": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/sacahan/CasualMarket", "casual-market-mcp"],
      "env": {
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

配置內容(本地開發方式):

{
  "mcpServers": {
    "casual-market": {
      "command": "uvx",
      "args": ["--from", "/path/to/CasualMarket", "casual-market-mcp"],
      "env": {
        "LOG_LEVEL": "INFO"
      }
    }
  }
}
Cursor 配置

編輯 Cursor 配置檔:

配置檔位置:

  • macOS: ~/Library/Application Support/Cursor/User/settings.json
  • Windows: %APPDATA%\Cursor\User\settings.json
  • Linux: ~/.config/Cursor/User/settings.json

配置內容:

settings.json 中加入以下配置:

{
  "mcpServerSettings": {
    "casual-market": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/sacahan/CasualMarket", "casual-market-mcp"],
      "env": {
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

或者直接編輯 .cursor/mcp.json

{
  "mcpServers": {
    "casual-market": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/sacahan/CasualMarket", "casual-market-mcp"],
      "env": {
        "LOG_LEVEL": "INFO"
      }
    }
  }
}
VS Code 配置(通過 Claude 擴展)

如果使用 VS Code 中的 Claude 擴展,配置方法類似:

配置檔位置:

  • macOS: ~/Library/Application Support/Code/User/settings.json
  • Windows: %APPDATA%\Code\User\settings.json
  • Linux: ~/.config/Code/User/settings.json

配置內容:

{
  "claude.mcpServers": {
    "casual-market": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/sacahan/CasualMarket", "casual-market-mcp"],
      "env": {
        "LOG_LEVEL": "INFO"
      }
    }
  }
}
CodePilot / 其他 MCP 客戶端

對於支援 MCP 協定的其他工具,通用配置範本:

{
  "mcpServers": {
    "casual-market": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/sacahan/CasualMarket", "casual-market-mcp"],
      "env": {
        "LOG_LEVEL": "INFO"
      }
    }
  }
}
配置參數說明

MCP Server 支援以下環境變數:

API 和快取相關:

參數說明預設值
LOG_LEVEL日誌級別INFO
MARKET_MCP_API_TIMEOUTAPI 請求超時時間(秒)10
MARKET_MCP_API_RETRIESAPI 請求重試次數5
MARKET_MCP_CACHE_TTL快取存活時間(秒)1800
MARKET_MCP_CACHE_MAX_SIZE快取最大條目數1000
MARKET_MCP_CACHE_MAX_MEMORY_MB快取最大記憶體使用(MB)200.0
MARKET_MCP_CACHING_ENABLED是否啟用快取true

限速相關:

參數說明預設值
MARKET_MCP_RATE_LIMIT_INTERVAL每個股票的請求間隔(秒)1.0
MARKET_MCP_RATE_LIMIT_GLOBAL_PER_MINUTE全域每分鐘請求限制200
MARKET_MCP_RATE_LIMIT_PER_SECOND每秒請求限制50
MARKET_MCP_RATE_LIMITING_ENABLED是否啟用限速功能false

監控相關:

參數說明預設值
MARKET_MCP_MONITORING_STATS_RETENTION_HOURS統計資料保留時間(小時)24
MARKET_MCP_MONITORING_CACHE_HIT_RATE_TARGET快取命中率目標(百分比)80.0

推薦配置範例(快速開始):

{
  "mcpServers": {
    "casual-market": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/sacahan/CasualMarket", "casual-market-mcp"],
      "env": {
        "LOG_LEVEL": "INFO",
        "MARKET_MCP_API_TIMEOUT": "10",
        "MARKET_MCP_CACHE_TTL": "1800",
        "MARKET_MCP_CACHE_MAX_SIZE": "1000"
      }
    }
  }
}

高效能配置範例(啟用限速和監控):

{
  "mcpServers": {
    "casual-market": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/sacahan/CasualMarket", "casual-market-mcp"],
      "env": {
        "LOG_LEVEL": "INFO",
        "MARKET_MCP_API_TIMEOUT": "15",
        "MARKET_MCP_CACHE_TTL": "3600",
        "MARKET_MCP_CACHE_MAX_SIZE": "2000",
        "MARKET_MCP_CACHE_MAX_MEMORY_MB": "500",
        "MARKET_MCP_RATE_LIMITING_ENABLED": "true",
        "MARKET_MCP_RATE_LIMIT_INTERVAL": "2.0",
        "MARKET_MCP_RATE_LIMIT_GLOBAL_PER_MINUTE": "100"
      }
    }
  }
}

調試配置範例(詳細日誌):

{
  "mcpServers": {
    "casual-market": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/sacahan/CasualMarket", "casual-market-mcp"],
      "env": {
        "LOG_LEVEL": "DEBUG",
        "MARKET_MCP_API_TIMEOUT": "20",
        "MARKET_MCP_CACHE_TTL": "600",
        "MARKET_MCP_CACHING_ENABLED": "true"
      }
    }
  }
}

Docker 部署

除了 stdio 模式外,CasualMarket 也支援透過 Docker 容器化部署,並提供 SSE (Server-Sent Events) HTTP 介面。

快速啟動

方式 1: 使用預構建鏡像(推薦)

# 克隆專案
git clone https://github.com/sacahan/CasualMarket.git
cd CasualMarket

# 拉取並啟動
./scripts/docker-run.sh pull
./scripts/docker-run.sh up

# 查看日誌
./scripts/docker-run.sh logs

# 測試服務
./scripts/docker-run.sh test

方式 2: 本地構建

# 構建鏡像
./scripts/docker-run.sh build

# 啟動服務
DOCKER_IMAGE_NAME=casualmarket-mcp:latest ./scripts/docker-run.sh up

方式 3: Docker Compose

# 啟動服務
docker-compose up -d

# 停止服務
docker-compose down

服務端點

容器啟動後,可透過以下端點訪問:

  • 根端點: http://localhost:8000/ - 服務資訊
  • 健康檢查: http://localhost:8000/health - 服務狀態
  • SSE 端點: http://localhost:8000/sse - MCP 協議通訊(POST)
  • API 文檔: http://localhost:8000/docs - FastAPI 自動生成文檔

SSE 客戶端範例

import requests
import json

# 列出可用工具
response = requests.post(
    "http://localhost:8000/sse",
    json={
        "jsonrpc": "2.0",
        "id": 1,
        "method": "tools/list",
        "params": {}
    }
)

# 呼叫工具 - 查詢台積電股價
response = requests.post(
    "http://localhost:8000/sse",
    json={
        "jsonrpc": "2.0",
        "id": 2,
        "method": "tools/call",
        "params": {
            "name": "get_taiwan_stock_price",
            "arguments": {"symbol": "2330"}
        }
    }
)

完整的客戶端範例請參考 examples/sse_client_example.py

Docker 優勢

  • 依賴預先安裝: 所有套件在建構時下載完成,執行時無需等待
  • 多階段建構: 最小化映像檔大小
  • 健康檢查: 自動監控服務狀態
  • 持久化支援: 日誌和資料庫可掛載到 host 機器
  • 環境隔離: 與其他服務完全隔離

詳細的 Docker 部署說明請參閱

核心功能

交易工具 (4個)

  • 即時股價查詢 - 股票代碼或公司名稱查詢
  • 模擬買入/賣出 - 完整的交易模擬,包含手續費和交易稅
  • 日交易統計 - 每日成交量、成交值、平均價格

財務分析工具 (6個)

  • 損益表/資產負債表 - 自動行業別偵測
  • 公司基本資料 - 董事長、資本額、員工數等
  • 股利分配歷史 - 殖利率、現金股利、股票股利
  • 月營收追蹤 - 營收數據與成長率
  • 估值比率 - PE、PB、ROE、殖利率等關鍵指標
  • 除權息行事曆 - 重要除權息日期提醒

交易統計工具 (3個)

  • 月交易統計 - 月度成交量、成交值、平均價格
  • 年交易統計 - 年度數據與年度漲跌幅
  • 月平均價格 - 包含加權平均、中位數等多維度分析

市場資訊工具 (5個)

  • 融資融券 - 市場籌碼面分析
  • 即時交易統計 - 5分鐘更新的市場數據
  • ETF排名 - 定期定額投資排名
  • 市場指數 - 發行量加權、未含金融等多種指數
  • 歷史指數 - 精選10個重要市場指標

節假日工具 (2個)

  • 國定假日查詢 - 台灣節假日詳細資訊
  • 交易日判斷 - 智慧判斷股市開盤狀態

外資分析工具 (3個)

  • 外資持股(按產業別) - 外資持股分布統計
  • 外資持股排名 - 外資持股前20名個股
  • 資金流向分析 - 外資買賣超數據

工具列表

工具名稱描述分類
get_taiwan_stock_price即時股價查詢交易
buy_taiwan_stock模擬買入股票交易
sell_taiwan_stock模擬賣出股票交易
get_stock_daily_trading日交易統計交易
get_company_income_statement綜合損益表財務
get_company_balance_sheet資產負債表財務
get_company_profile公司基本資料財務
get_company_dividend股利分配資訊財務
get_company_monthly_revenue月營收資訊財務
get_stock_valuation_ratios估值比率財務
get_dividend_rights_schedule除權息行事曆財務
get_stock_monthly_trading月交易統計統計
get_stock_yearly_trading年交易統計統計
get_stock_monthly_average月平均價格統計
get_margin_trading_info融資融券資訊市場
get_real_time_trading_stats即時交易統計市場
get_etf_regular_investment_rankingETF定期定額排名市場
get_market_index_info台灣加權指數市場
get_market_historical_index市場重要指數市場
get_taiwan_holiday_info節假日查詢節假日
check_taiwan_trading_day交易日判斷節假日
get_foreign_investment_by_industry外資持股(按產業別)外資
get_top_foreign_holdings外資持股前20名外資

使用範例

以下是透過 Claude Desktop 或其他 MCP 客戶端使用這些工具的範例。

股票價格查詢

使用者提問:

"請查詢台積電目前的股價"

AI 回應: AI 會自動調用 get_taiwan_stock_price 工具,參數為 "台積電""2330",然後返回即時股價、漲跌幅、成交量等資訊。

工具調用:

{
  "tool": "get_taiwan_stock_price",
  "arguments": {
    "symbol": "2330"
  }
}

模擬交易

使用者提問:

"幫我模擬買入 1000 股台積電"

AI 回應: AI 會調用 buy_taiwan_stock 工具,計算手續費和總成本,並返回完整的交易結果。

工具調用:

{
  "tool": "buy_taiwan_stock",
  "arguments": {
    "symbol": "2330",
    "quantity": 1000
  }
}

限價交易範例:

"以每股 510 元的價格買入 2000 股台積電"

{
  "tool": "buy_taiwan_stock",
  "arguments": {
    "symbol": "2330",
    "quantity": 2000,
    "price": 510.0
  }
}

財務資訊查詢

使用者提問:

"請分析台積電的財務狀況,包括損益表和公司基本資料"

AI 回應: AI 會依序調用多個工具來獲取完整資訊:

  1. 公司基本資料
{
  "tool": "get_company_profile",
  "arguments": {
    "symbol": "2330"
  }
}
  1. 損益表
{
  "tool": "get_company_income_statement",
  "arguments": {
    "symbol": "2330"
  }
}
  1. 估值比率
{
  "tool": "get_stock_valuation_ratios",
  "arguments": {
    "symbol": "2330"
  }
}

綜合分析範例

使用者提問:

"我想了解台積電是否適合投資,請幫我分析股價、財務狀況、股利配息和外資持股情況"

AI 工作流程:

AI 會智慧地調用多個工具來完成綜合分析:

  1. 查詢即時股價 (get_taiwan_stock_price)
  2. 獲取公司基本資料 (get_company_profile)
  3. 查看估值比率 (get_stock_valuation_ratios)
  4. 檢查股利配息記錄 (get_company_dividend)
  5. 查詢外資持股前 20 名 (get_top_foreign_holdings)
  6. 分析月營收趨勢 (get_company_monthly_revenue)

然後將所有資訊整合,提供完整的投資建議。

市場統計

使用者提問:

"現在台股大盤的情況如何?"

AI 回應:

{
  "tool": "get_real_time_trading_stats",
  "arguments": {}
}

AI 會返回當前市場的即時統計,包括成交量、漲跌家數、漲停跌停股票等。

節假日與交易日判斷

使用者提問:

"2025年10月10日是交易日嗎?"

AI 回應:

{
  "tool": "check_taiwan_trading_day",
  "arguments": {
    "date": "2025-10-10"
  }
}

AI 會告訴你該日期是否為交易日,並說明原因(是否為週末或國定假日)。

對話式交互範例

完整對話流程:

使用者: "請幫我查詢鴻海的股價,如果股價低於 100 元,就模擬買入 2000 股"

AI 執行:

  1. 先調用 get_taiwan_stock_price("鴻海") 查詢股價
  2. 根據返回結果判斷價格
  3. 如果符合條件,調用 buy_taiwan_stock("2317", 2000)
  4. 整合結果並回覆使用者

使用者: "今天外資買超最多的是哪些股票?"

AI 執行:

  1. 調用 get_top_foreign_holdings() 獲取外資持股資訊
  2. 分析買賣超數據
  3. 整理並回覆前幾名的股票及買超金額

支援

許可證

MIT License - 詳見 檔案

重要提示

  • 本工具僅供學習和研究用途
  • 股票資料可能有延遲,請勿用於實際交易決策
  • 模擬交易功能不涉及真實資金
  • 使用本工具產生的結果需自行承擔風險

鳴謝


更新時間: 2025年10月22日
版本: 0.1.0