시작하기무료로 시작하기

매개변수화된 데이터베이스 조회 도구

온디맨드 조회 도구를 사용하면 LLM이 전체 목록을 불러오지 않고도 이름이나 코드로 통화를 검색할 수 있습니다. 프롬프트 인젝션을 방지하기 위해 매개변수화 쿼리(플레이스홀더 ?)를 사용하고, 응답 범위를 제한하기 위해 행 수 제한을 적용하세요.

이 연습은 강의의 일부입니다

Model Context Protocol (MCP) 입문

강의 보기

연습 안내

  • currencies 테이블에서 name 또는 codeprefix가 포함된 행을 찾는 lookup_currencies() 도구를 정의하세요(대소문자 구분 없음).
  • 매개변수화 SQL 쿼리를 사용하여 ? 플레이스홀더에 prefix를 삽입하고, 반환되는 행 수를 제한하기 위해 LIMIT 50을 사용하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Add lookup_currencies(prefix): find rows where name or code contains prefix
@mcp.____()
def ____(____: str) -> str:
    """Find currencies whose code or name contains the given prefix."""
    try:
        # Use parameterized query and LIMIT 50
        cursor = conn.execute(
            "SELECT code, name FROM currencies WHERE name LIKE ? OR code LIKE ? LIMIT ____",
            (f"%{____}%", f"%{____}%")
        )
        rows = cursor.fetchall()
        return "\n".join(f"{row['code']} - {row['name']}" for row in rows)
    except sqlite3.Error as e:
        return f"Database error: {e}"

print(lookup_currencies("Euro"))
코드 편집 및 실행