MCP Chat Analysis Server

  • docs
# Architecture Documentation ## System Overview ```mermaid graph TB Client[Client Application] -->|MCP Protocol| Server[Chat Analysis Server] Server -->|Vector Operations| Qdrant[Qdrant Vector DB] Server -->|Graph Operations| Neo4j[Neo4j Graph DB] Server -->|Embeddings| Model[Sentence Transformer] subgraph "Chat Analysis Server" Tools[MCP Tools] --> Processor[Conversation Processor] Processor --> Embeddings[Embedding Generator] Processor --> GraphOps[Graph Operations] Processor --> Analytics[Analytics Engine] end ``` ## Component Architecture ```mermaid classDiagram class ChatAnalysisServer { +QdrantClient qdrant +Neo4jDriver neo4j +EmbeddingGenerator embedding_generator +handle_list_tools() +handle_call_tool() } class ConversationProcessor { +process_conversations() +search() +analyze_metrics() +extract_concepts() } class EmbeddingGenerator { +generate() +generate_single() +compute_similarity() +find_similar_chunks() } class Message { +str id +str content +str role +datetime timestamp +Dict metadata } class ConversationThread { +str id +str title +Dict messages +str root_id +from_export_mapping() +traverse_messages() } ChatAnalysisServer --> ConversationProcessor ChatAnalysisServer --> EmbeddingGenerator ConversationProcessor --> EmbeddingGenerator ConversationProcessor ..> Message ConversationProcessor ..> ConversationThread ``` ## Data Flow ```mermaid sequenceDiagram participant Client participant Server as Chat Analysis Server participant Embeddings as Embedding Generator participant Qdrant participant Neo4j Client->>Server: Import Conversations Server->>Embeddings: Generate Embeddings Embeddings-->>Server: Return Vectors Server->>Qdrant: Store Vectors Server->>Neo4j: Create Graph Structure Server-->>Client: Import Complete Client->>Server: Semantic Search Server->>Embeddings: Generate Query Vector Server->>Qdrant: Search Similar Vectors Server->>Neo4j: Get Context Server-->>Client: Search Results Client->>Server: Extract Concepts Server->>Neo4j: Query Graph Patterns Server->>Qdrant: Get Related Vectors Server-->>Client: Concept Analysis ``` ## Storage Schema ### Vector Storage (Qdrant) ```mermaid erDiagram VECTOR { string id vector embedding string message_id string conversation_id string role timestamp created_at } PAYLOAD { string message_id string content string role json metadata } ``` ### Graph Storage (Neo4j) ```mermaid erDiagram CONVERSATION ||--o{ MESSAGE : contains MESSAGE ||--o{ CONCEPT : mentions CONCEPT ||--o{ CONCEPT : related_to CONVERSATION { string id string title timestamp create_time timestamp update_time } MESSAGE { string id string content string role string vector_id timestamp timestamp } CONCEPT { string id string name float relevance int frequency } ``` ## Processing Pipeline ```mermaid graph LR Input[Chat Export] --> Parser[Format Parser] Parser --> Processor[Conversation Processor] subgraph "Processing Pipeline" Processor --> Embeddings[Generate Embeddings] Processor --> Graph[Create Graph Structure] Processor --> Concepts[Extract Concepts] Embeddings --> VectorStore[Store in Qdrant] Graph --> GraphStore[Store in Neo4j] Concepts --> Analysis[Analyze Relationships] end VectorStore --> Search[Semantic Search] GraphStore --> Navigation[Graph Navigation] Analysis --> Metrics[Generate Metrics] ``` ## Tool Integration ```mermaid graph TB MCP[MCP Protocol] --> Tools[Tool Registry] subgraph "Available Tools" Import[import_conversations] Search[semantic_search] Metrics[analyze_metrics] Concepts[extract_concepts] end Tools --> Import Tools --> Search Tools --> Metrics Tools --> Concepts Import --> Processor[Conversation Processor] Search --> Processor Metrics --> Processor Concepts --> Processor