Keenable SELECT: 웹 검색 결과에 SQL 쿼리 실행

✍️ OpenClawRadar📅 게시일: September 2, 2026🔗 Source
Ad

Keenable SELECT는 라이브 웹 데이터에 대해 읽기 전용 DuckDB SELECT 쿼리를 실행하는 MCP 서버입니다. 전통적인 에이전트 흐름—검색, 각 결과 가져오기, 페이지 읽기, 종합하기—대신, SELECT는 작업을 SQL로 이동시킵니다. 한 번의 호출로 1,000개 이상의 페이지를 검색하고, LLM 비용 없이 정확한 WHERE 절로 필터링하며, 각 행에 대해 작은 LLM 호출로 구조화된 필드를 추출할 수 있습니다.

작동 방식

다음과 같은 질문을 한다고 가정해 봅시다: "2025년 이후 프론티어 연구소 사이를 옮긴 AI 연구자들은 누구인가? 각 이동에 대해 연구자, 떠난 연구소, 이동한 곳, 그리고 월을 나열하세요." Keenable SELECT는 이를 SQL로 변환합니다:

SELECT SEM_EXTRACT(content, 'researcher'),       SEM_EXTRACT(content, 'left lab'),       SEM_EXTRACT(content, 'joined lab'),       SEM_EXTRACT(content, 'move month')FROM WEB_SEARCH(8 diverse queries)WHERE SEM_MATCH(content, 'named researcher moving between frontier labs, 2025+')

서버는 검색을 실행하고, 의미 연산자를 실행하며, 보고서를 반환합니다. 각 결과에는 전체 궤적이 포함됩니다: 모든 쿼리, 도구 결과, 최종 출력 뒤의 결과 집합이 포함됩니다.

MCP 도구

  • select — DuckDB SELECT를 실행하고 행을 반환합니다. 결과 집합은 ID로 저장되어 이후 쿼리에서 재사용할 수 있습니다.
  • generate_html_report — 브리프와 결과 집합 ID를 받아 공유 가능한 HTML 보고서를 렌더링합니다.
Ad

의미 연산자

연산자는 SQL 내부에 있습니다. 서버는 파싱된 문장에서 이를 찾아 실행하고, 일반 열로 대체합니다. 정확한 SQL 필터가 먼저 실행되므로, 살아남은 행만 LLM 연산자로 전달되어 토큰을 절약합니다.

  • WEB_SEARCH('q1', 'q2', ...) — 모든 쿼리를 동시에 검색하고, 순위 결과를 병합하며, URL 중복을 제거합니다.
  • WEB_FETCH('https://a.com', ...) — 페이지를 Markdown으로 가져오며, 페이지당 하나의 행을 반환합니다.
  • SEM_EXTRACT(column, 'field description') — 행당 하나의 LLM 호출; 필드 또는 null을 반환합니다.
  • SEM_EXTRACT_ALL(column, 'what one value is') — 모든 일치 값을 리스트로 반환합니다.
  • SEM_MATCH(column, 'predicate') — 행당 LLM 테스트 (예: 필터링).

중요한 이유

전통적인 웹 검색은 에이전트에게 10개의 링크를 제공합니다. 에이전트는 각 페이지를 읽고 답을 구성하는 데 비싼 토큰을 소비해야 합니다. SELECT는 그 작업을 쿼리 레이어로 이동시킵니다—수천 페이지를 검색하고, 정확히 필터링하며, 최소한의 LLM 호출로 필드를 추출합니다. 갤러리는 "YC 스타트업 이름 형태론의 20년"(36개 메시지, 18개 쿼리) 및 "궤도 발사 아틀라스, 1957–2026"(16개 메시지, 9개 쿼리)과 같은 보고서를 보여주며, 각각 전체 궤적이 있습니다.

에이전트 검색이나 데이터 중심 연구 도구를 구축 중이라면, 이는 연구할 가치가 있는 다른 패턴입니다: SQL을 제어 평면으로, LLM은 의미 추출 및 매칭에만 사용합니다.

📖 전체 소스 읽기: HN AI Agents

Ad

👀 See Also