Skip to main content
Glama
feelgom

Ask-My-Data MCP

by feelgom

Ask-My-Data MCP

하나의 자연어 질문을 의미 검색(RAG)데이터 집계(Text2SQL) 경로로 자동 라우팅해 답하는 MCP 서버. LangGraph 기반 Multi-Agent 파이프라인을 완전 합성 검색 평가 데이터로 검증하는 포트폴리오 프로젝트입니다.

실행 증거

아래 이미지는 2026-07-15에 클린 가상환경에서 MCP stdio 연결 후 tools/listsearch_documents를 실제 호출한 결과입니다.

Ask-My-Data MCP smoke test

검증

결과

pip install -e ".[dev]"

통과 (Python 3.14.5)

python -m pytest -q

6 passed

MCP initialize · tools/list

통과 — 3 tools

search_documents 호출

통과 — API 키 없이 BM25 검색

askquery_stats는 라우팅·SQL 생성·답변 합성에 Claude를 사용하므로 ANTHROPIC_API_KEY가 필요합니다. 위 smoke test는 키나 외부 API 없이 검증 가능한 검색 경로입니다.

동일한 검증은 python scripts/smoke_test.py로 재현할 수 있습니다.

Related MCP server: Keystone MCP Server

무엇을 보여주나

  • MCP 서버 — 범용 LLM 클라이언트(Claude Desktop 등)에서 도구로 호출

  • Multi-Agent 라우팅 — 질문 유형(semantic/structured/both)을 판단해 경로 분기

  • RAG — BM25 키워드 + (옵션)다국어 임베딩 Hybrid Search

  • Text2SQL — 자연어 → 검증된 SELECT → 검색 실험 결과 집계

  • Synthesize — 문서 근거와 정형 결과를 결합한 답변 생성

아키텍처

          ┌──────────┐
질문 ────▶ │  Router  │  semantic / structured / both 분류
          └────┬─────┘
       ┌───────┼────────┐
       ▼                ▼
  ┌─────────┐     ┌───────────┐
  │  RAG    │     │ Text2SQL  │
  │ (문서)   │     │ (SQLite)  │
  └────┬────┘     └─────┬─────┘
       └────────┬───────┘         (both: RAG → Text2SQL 순으로 이어붙임)
                ▼
         ┌────────────┐
         │ Synthesize │  근거 종합 → 자연어 답변
         └────────────┘

검색 실험용 합성 데이터

data/는 특정 회사·고객·서비스와 무관하게 이 프로젝트를 위해 새로 만든 데이터입니다.

구성

내용

실험 질문 예시

문서 코퍼스

검색 지표·방법론 + 실시간 협업 편집 OT/CRDT 기술 문서

“MRR과 nDCG의 차이는?”, “OT와 CRDT는 언제 선택해?”

datasets

언어·질의 수·문서 수가 다른 가상 데이터셋 3개

“다국어 데이터셋은 무엇인가?”

experiments

BM25·Dense·Hybrid-RRF 가상 실험 9개

“MRR이 가장 높은 실험은?”

experiment_results

데이터셋과 실험을 결합한 조회용 View

“한국어 데이터셋의 품질·지연 시간 비교”

모든 이름, 설명, 지표와 지연 시간은 검색/RAG 실험을 위해 임의로 구성한 합성 값입니다. 실시간 협업 편집 문서는 사용자가 제공한 일반 기술 리서치 문서로, 합성 실험 수치와 분리되어 있습니다.

빠른 시작

# 1) 설치
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"          # 기본 + 테스트
pip install -e ".[embeddings]"   # 옵션: 다국어 임베딩 Hybrid Search

# 2) 환경변수
cp .env.example .env              # ANTHROPIC_API_KEY 채우기
export $(cat .env | xargs)        # 또는 direnv/python-dotenv

# 3) 합성 검색 실험 DB 생성
python data/build_sample_db.py

# 4) MCP 없이 바로 테스트 (CLI)
python -m src.cli "MRR이 뭐야?"
python -m src.cli "Mosaic 데이터셋에서 MRR이 가장 높은 실험은?"
python -m src.cli "nDCG@10이 가장 높은 실험은 무엇이고, nDCG는 어떻게 계산해?"

# 단위 테스트
python -m pytest -q

MCP 클라이언트에 연결 (Claude Desktop 예시)

claude_desktop_config.json:

{
  "mcpServers": {
    "ask-my-data": {
      "command": "python",
      "args": ["/absolute/path/to/ask-my-data-mcp/server.py"],
      "env": { "ANTHROPIC_API_KEY": "sk-ant-..." }
    }
  }
}

노출 도구: ask (자동 라우팅) · search_documents (RAG) · query_stats (Text2SQL)

예시 질문과 라우팅

질문

라우팅

경로

"MRR이 뭐야?"

semantic

RAG

"Mosaic 데이터셋에서 MRR이 가장 높은 실험은?"

structured

Text2SQL

"nDCG@10이 가장 높은 실험은 무엇이고, nDCG는 어떻게 계산해?"

both

RAG + Text2SQL

기술 스택

Python · MCP · LangGraph · Anthropic Claude · rank-bm25 · sentence-transformers(옵션) · SQLite

관련 글

라이선스

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    AI-powered MCP server that enables Claude and other LLMs to interact directly with construction documents, drawings, and specifications through advanced RAG and hybrid search capabilities.
    9
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Autodesk Construction Cloud projects through natural language, connecting APS APIs for querying project data and issues.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables natural language queries to be converted into policy-verified SQL, vector search, and knowledge graph plans, with evidence-backed answers and an audit log.
    1
    Apache 2.0