Claude - 나의 주식 포트폴리오 관리하기 (250805)

WonTerry·2025년 8월 5일

MCP

목록 보기
10/24

현재 Claude를 활용해 주식 종목의 실시간 가격을 정확히 조회하는 데 어려움이 있다. 이는 네이버, 구글 등 주요 검색 포털에서 해당 정보에 대한 접근을 차단하고 있기 때문으로 보이며, 실제 조회 결과도 "삼성전자 현재가: 69,900원"과 같은 정확한 숫자 값을 반환하지 않는다. 반복 테스트 결과, Claude는 실시간 데이터를 기반으로 한 결과가 아니라, 종목이 언급된 뉴스 기사나 문서 내용을 참조해 가격 정보를 유추하는 것으로 판단된다. 이러한 한계를 극복하기 위해서는 별도의 금융 데이터 API를 연동하거나, 실시간 시세 조회가 가능한 맞춤형 MCP 서버를 구축하는 방안을 고려해야 한다.

Prompt (Chroma)

A cheerful and bright illustration of an MCP server system at work. At the center, depict a friendly-looking server character labeled "MCP" with glowing circuits, actively retrieving real-time stock data from the Korean KOSPI and KOSDAQ markets. The MCP server is shown receiving a stock symbol request and instantly displaying the live stock price on a floating digital panel. Visualize data lines flowing smoothly from stock market icons (like a KOSPI tower and KOSDAQ screen) to the MCP server, symbolizing live data fetching. Around the server, include a character representing a quant expert — wearing glasses, holding a tablet or laptop, analyzing charts with a confident smile. Use bright colors, clean tech-themed design elements, and a joyful, optimistic atmosphere to emphasize technological innovation and financial insight.

Prompt 1.

해당 폴더에 있는 CSV 파일에는 내가 현재 보유 중인 주식 종목들의 정보가 담겨 있다. 이 파일의 내용을 읽어 화면에 출력해 달라.

폴더에 저장된 CSV 파일을 확인해보겠습니다. 먼저 사용 가능한 디렉토리를 확인하고 CSV 파일을 찾아보겠습니다.주식 종목 정보가 담긴 CSV 파일을 찾았습니다. /Users/username/Downloads/claude_filesystem_MCP/docs/Stock.csv 파일을 읽어보겠습니다.CSV 파일의 내용을 표시하겠습니다:

보유 주식 종목 정보

주식 종목 이름종목 코드매입 가격매입 수량
삼성전자00593011,000원100주

현재 보유하신 주식은 삼성전자(005930) 1종목으로, 주당 11,000원에 100주를 매입하셨네요. 총 매입금액은 1,100,000원입니다.

추가로 분석이나 다른 정보가 필요하시면 말씀해 주세요.

Prompt 2.

총 매입 가격을 계산해주세요.

총 매입 가격 계산

삼성전자 (005930)

  • 매입 가격: 11,000원/주
  • 매입 수량: 100주
  • 총 매입 가격: 1,100,000원

따라서 현재 보유하신 주식의 총 매입 가격은 1,100,000원 (110만원)입니다.

삼성전자의 현재 가격을 인터넷에서 조회해주세요. 그리고 현재 수익과 수익률을 계산해주세요.

삼성전자의 현재 주가를 인터넷에서 조회해보겠습니다.첫 번째 검색에서 삼성전자가 69,700원으로 거래를 마감했다는 정보를 찾았습니다. 더 정확한 최신 정보를 확인해보겠습니다.네이버 증권에서 더 구체적인 정보를 찾았습니다. 삼성전자의 현재 주가가 69,900원이고, 전일대비 1,000원 상승(+1.45%)한 것으로 보입니다. 이제 수익과 수익률을 계산해보겠습니다.## 삼성전자 주식 투자 현황 분석

📈 현재 주가 정보

  • 삼성전자 현재가: 69,900원 (전일대비 +1,000원, +1.45% 상승)

💰 투자 손익 계산

보유 현황:

  • 매입 가격: 11,000원/주
  • 보유 수량: 100주
  • 총 매입 금액: 1,100,000원

현재 평가:

  • 현재 총 평가금액: 69,900원 × 100주 = 6,990,000원

📊 수익 분석

  • 평가 수익금: 6,990,000원 - 1,100,000원 = +5,890,000원
  • 수익률: +535.45%

축하합니다! 삼성전자 투자에서 매우 우수한 성과를 거두셨네요. 매입 당시 11,000원에서 현재 69,900원으로 약 6.35배 상승하여 535% 이상의 수익률을 기록하고 있습니다.

Prompt 3.

CSV 파일을 수정해주세요. 기존에 입력된 내용은 매입 가격으로 기록하고, 행을 추가하여 현재 가격을 기록해주세요. 컬럼 또는 행을 추가하여 현재 수익과 수익률을 계산하여 표시해주세요.

CSV 파일을 수정하여 현재 가격과 수익 정보를 추가해보겠습니다.CSV 파일을 성공적으로 수정했습니다! 업데이트된 내용을 확인해보겠습니다.## 📊 업데이트된 주식 포트폴리오 CSV 파일

CSV 파일이 다음과 같이 개선되었습니다:

주식 종목 이름종목 코드매입 가격현재 가격매입 수량총 매입금액현재 평가금액수익금수익률(%)
삼성전자00593011,00069,9001001,100,0006,990,0005,890,000535.45

🔄 수정 사항

  1. 헤더 추가: 각 컬럼의 의미를 명확히 표시
  2. 현재 가격 컬럼 추가: 69,900원 (2025년 8월 5일 기준)
  3. 계산 컬럼 추가:
    • 총 매입금액: 1,100,000원
    • 현재 평가금액: 6,990,000원
    • 수익금: 5,890,000원
    • 수익률: 535.45%

이제 CSV 파일에서 한눈에 투자 성과를 파악할 수 있습니다!

Custom MCP : stock_mcp.py (수정 250806 ver.)

특정 주식 종목의 실시간 가격을 조회하기 위한 Custom MCP를 아래와 같이 작성하고 Claude에 연결하여 실행한다.

from mcp.server.fastmcp import FastMCP
from pydantic import BaseModel
import yfinance as yf

class StockRequest(BaseModel):
    symbol: str  # 종목 코드

mcp = FastMCP("stock_mcp")

@mcp.tool()
def get_korean_stock_price(input: StockRequest) -> str:
    """
    yfinance를 사용하여 한국 주식의 가격을 조회합니다.
    최대한 안정적이고 빠른 방법을 사용합니다.
    """
    code = input.symbol.strip()

    # 접미사 자동 판별
    if code.endswith(".KQ") or code.endswith(".KS"):
        ticker = code
    else:
        if code.startswith(("0", "1", "2")):
            ticker = code + ".KQ"
        else:
            ticker = code + ".KS"

    try:
        stock = yf.Ticker(ticker)

        # 우선 fast_info를 먼저 사용
        price = stock.fast_info.get("last_price") or stock.fast_info.get("regular_market_price")
        name = stock.fast_info.get("shortName") or ticker

        # fast_info 실패 시 history 사용 (최근 1분봉 데이터)
        if price is None:
            df = stock.history(period="1d", interval="1m")
            if not df.empty:
                price = df["Close"].iloc[-1]
            else:
                raise ValueError("가격 정보를 가져올 수 없습니다.")

        return f"{name}({ticker})의 현재 가격은 {price:.2f}원입니다."

    except Exception as e:
        return f"오류: {e}"

if __name__ == "__main__":
    mcp.run()

claude_desktop_config.json 설정 추가

   "stock_mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/wontaelee/Downloads/My_MCP_Server/stock_mcp",
        "run",
        "stock_mcp.py"
      ] 
    }
profile
Hello, I'm Terry! 👋 Enjoy every moment of your life! 🌱 My current interests are Signal processing, Machine learning, Python, Database, LLM & RAG, MCP & ADK, Multi-Agents, Physical AI, ROS2...

0개의 댓글