Skip to main content

MCP server for semantic search over meeting transcripts (multilingual: EN/UK/RU)

Project description

Transcript Search MCP Server

Semantic search over meeting transcripts using Qdrant + multilingual embeddings, exposed as a Claude Code MCP server.

Setup

# Start Qdrant
docker compose up -d

# Create Python environment
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

# Index all transcripts (~2-5 min first run, downloads model)
TRANSCRIPTS_DIR=/path/to/your/transcripts python index.py

# Verify: Qdrant dashboard at http://localhost:6333/dashboard

Configuration

Set TRANSCRIPTS_DIR to the folder containing your .md transcript files. Defaults to ./transcripts in the current working directory.

Usage

CLI

# Basic search
TRANSCRIPTS_DIR=/path/to/transcripts python search_cli.py "what did Dima say about department metrics"

# Filter by speaker
python search_cli.py "project updates" --speaker "Dima Batt" --top-k 3

# Filter by meeting type
python search_cli.py "purpose discussion" --type 1on1

# Multilingual query
python search_cli.py "культура як диференціатор"

MCP Server (Claude Code integration)

Add to your project's .mcp.json:

{
  "mcpServers": {
    "transcript-search": {
      "command": "uv",
      "args": [
        "run",
        "--directory", "/path/to/transcript-search",
        "--python", "/path/to/transcript-search/.venv/bin/python",
        "mcp_server.py"
      ],
      "env": {
        "TRANSCRIPTS_DIR": "/path/to/your/transcripts"
      }
    }
  }
}

Architecture

Transcripts (*.md) → parse_transcripts.py → chunk.py → index.py → Qdrant
                                                                      ↑
                                            search_cli.py / mcp_server.py
  • Model: intfloat/multilingual-e5-large (1024-dim, supports UK/RU/EN)
  • Chunking: Speaker-turn-aware, ~1500 tokens per chunk, 3-turn overlap
  • Storage: Qdrant (Docker) with cosine similarity

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

transcript_search-0.1.0.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

transcript_search-0.1.0-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file transcript_search-0.1.0.tar.gz.

File metadata

  • Download URL: transcript_search-0.1.0.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for transcript_search-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7fc74ac3fa9372f507b06f2a0357177152fa57efc7754c91cbb377aed10a883b
MD5 7572f904d6dcb9e0660abdf809dae9da
BLAKE2b-256 6a39a1499cdb0e55cc9c8def94a112c4bb6f5be35530960948a60da612c970d5

See more details on using hashes here.

File details

Details for the file transcript_search-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: transcript_search-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for transcript_search-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d34f4683fa4dd082e6db0b515a6e982a72869a938a58ef684bb6d0716e877bd8
MD5 bf043d677ef4a3ddbf62408013674b17
BLAKE2b-256 9e336f205dbd1c25e19d1522e0f48a506f66f125c09f796fa6f64b3327685441

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page