# Architecture

> The service components and their responsibilities.

Canonical: https://keta1930.github.io/icml2026-mcp/en/docs/concepts/architecture



<Mermaid
  chart="flowchart LR
    A[MCP client] --> B[FastMCP service]
    B --> C[Search service]
    C --> D[DashScope embedding]
    C --> E[Milvus dense + BM25]
    C --> F[SQLite sessions and limits]"
/>

Milvus stores the 6,341 paper records, dense vectors, analyzed text, and metadata filters. It performs both retrieval paths and RRF ranking. SQLite is limited to runtime state: sessions, request counters, provider-minute usage, and the embedding cache.

The Python package separates transport, search, storage, indexing, embeddings, runtime state, domain models, and corpus loading. This keeps new data sources and retrieval changes isolated from MCP transport code.
