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: AXYS MCP Lite

무엇을 보여주나

  • 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

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/feelgom/ask-my-data-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server