graindrop
Watches a Dropbox folder for new audio files, transcribes them, and serves audio and transcript via MCP tools and resources.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@graindroplist new recordings"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
graindrop
Audio capture pipeline. Listens for audio files, transcribes via whisper.cpp, and serves audio + transcript through an MCP server.
Audio file → graindrop → whisper.cpp → manifest.json → MCP server (:8648)Any MCP-compatible agent (Hermes, Claude Code, Cursor, etc.) connects to the graindrop MCP and discovers new recordings as they land.
One-sentence pitch
A self-contained daemon that watches a directory, transcribes anything that lands in it, and presents the results to any AI agent through a standard protocol — no cloud, no subscriptions, no vendor lock-in.
Related MCP server: io.github.chicogong/ffvoice
How it works
Drop an audio file (
.m4a,.wav,.mp3) into the watched directorygraindrop copies it to
audio/, transcribes via whisper.cpp totranscripts/, archives the original to_archive/, and logs it inmanifest.jsonThe MCP server exposes the recording to any connected agent through tools and resources
The agent reads the transcript, fetches the audio, and does what it does
Quick start
# Install
pip install graindrop
# or from source:
git clone https://github.com/stuartmhannon/graindrop
cd graindrop
pip install -e .
# Start the MCP server
graindrop-mcp --port 8648
# The server watches ~/Dropbox/graindrop/ by default
# Drop an .m4a in there and the MCP server picks it upMCP Tools
Tool | Purpose |
| List all recordings, newest first |
| List only unacknowledged recordings |
| Full transcript text for a recording |
| Audio file path for a recording |
| Mark a recording as read |
| Summary counts |
MCP Resources
URI | Content |
| Plain text transcript |
| Binary audio (m4a/wav) |
Configuration
graindrop-mcp --port 8648 --dir ~/grain/reference/graindrop--port: HTTP SSE port (default: 8648)--dir: Data directory (default:~/grain/reference/graindrop)
The watched directory defaults to ~/Dropbox/graindrop/. Override by editing WATCH_DIR in graindrop_mcp.py.
Storage layout
~/grain/reference/graindrop/
├── audio/{slug}.{ext} ← canonical audio copy
├── transcripts/{slug}.txt ← whisper transcript
├── _archive/{original} ← source file backup
├── manifest.json ← searchable index
├── graindrop_mcp.py ← MCP server
├── graindrop_watcher.py ← processing scriptRequirements
Python 3.10+
whisper.cpp (for transcription)
ffmpeg (for audio conversion)
mcp[cli](installed automatically)
Agent integration
Hermes Agent
Add to ~/.hermes/config.yaml:
mcp_servers:
graindrop:
url: http://127.0.0.1:8648/sse
transport: sseAny MCP client
Connect to http://127.0.0.1:8648/sse using the MCP protocol's HTTP SSE transport. Call tools/list to discover available tools, then tools/call to invoke them.
License
MIT — do what you want, just don't blame us.
This server cannot be deployed
Maintenance
Related MCP Connectors
Transcribe audio & video to text for AI agents: 100+ languages, speaker labels, webhooks.
Transcribe audio & video: diarization, timed SRT/VTT, podcasts, paste-a-link, whole-feed batch.
Continuity protocol for autonomous AI agents. Agent messaging with SMTP bridge and LN payments.
AI transcription from URLs or files. 119 languages, diarization, SRT/VTT/text export.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to speak and listen in real-time with interruption handling, using local ML models and hot-swappable adapters.13MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for offline speech-to-text and speaker diarization, enabling AI agents to transcribe audio locally without cloud APIs.3MIT
- AlicenseNot gradedqualityDmaintenanceLocal-first speech-to-text and text-to-speech MCP server. Hot-swappable engines via config.yaml — no code changes, no API keys required.2MIT
- FlicenseNot gradedqualityBmaintenanceSelf-host a realtime voice-call companion for coding agents. Exposes an MCP endpoint that agents can poll as an alternate input stream.18-