google-drive-rag-mcp
A local MCP server that enables LLMs to securely search and read files within designated Google Drive folders. Supports Google Docs, Google Sheets, PDFs, and plain text with strict folder-scoping via service account authentication.
README
google-drive-rag-mcp
A local MCP server that lets LLMs (Claude, etc.) securely search and read files within a single, designated Google Drive folder.
Overview
- Scoped to specified folders — never accesses files outside
TARGET_FOLDER_IDS - Authenticated via Google Service Account (no personal OAuth required)
- Read-only access (
drive.readonly,documents.readonly) - Built with FastMCP on Python 3.11+
Use Cases
- Research: Ask Claude to find and summarize documents stored in a shared Google Drive folder
- Team knowledge base: Search internal documents, reports, or meeting notes by keyword
- Study notes: Retrieve lecture notes or course materials from a Drive folder and ask questions about them
- Document Q&A: "What does the report from last month say about X?" — Claude reads and answers
MCP Tools
| Tool | Description |
|---|---|
list_files(query) |
List files in the target folder, optionally filtered by name |
read_document(file_id) |
Read text content of a supported file |
Supported File Formats
| Format | MIME Type | How it's read |
|---|---|---|
| Google Docs | application/vnd.google-apps.document |
Exported as plain text |
| Google Sheets | application/vnd.google-apps.spreadsheet |
Exported as CSV |
application/pdf |
Text extracted via PyMuPDF | |
| Plain text | text/* |
Read directly |
MCP Setup
Step 1 — Create a GCP Project and Enable APIs
- Open Google Cloud Console
- Create a new project (or select an existing one)
- Navigate to APIs & Services > Library
- Search for and enable the following APIs:
- Google Drive API
- Google Docs API
Step 2 — Create a Service Account and Download the JSON Key
- Navigate to APIs & Services > Credentials
- Click Create Credentials > Service Account
- Enter a name (e.g.,
drive-rag-reader) and click Done - Click the created service account, go to the Keys tab
- Click Add Key > Create new key, select JSON, and download the file
- Save the file to a secure location (e.g.,
~/.config/gcp/drive-rag-key.json)
Note: Never commit this file to Git. It is excluded by
.gitignore.
Step 3 — Share the Target Google Drive Folder
- Open Google Drive
- Right-click the target folder and select Share
- Enter the service account email address (e.g.,
drive-rag-reader@your-project.iam.gserviceaccount.com)- Found in GCP Console > IAM & Admin > Service Accounts
- Set the role to Viewer and click Send
The folder ID is the last part of the folder URL:
https://drive.google.com/drive/folders/THIS_IS_THE_FOLDER_ID
Tip — Multiple folders: You can share a parent folder with the service account and set individual subfolders in
TARGET_FOLDER_IDS. Access to subfolders is inherited from the parent.Parent Folder ← Share with the service account (Viewer) ├── Project A ← Add this folder ID to TARGET_FOLDER_IDS └── Project B ← Add this folder ID to TARGET_FOLDER_IDS
.envexample:TARGET_FOLDER_IDS=project_a_folder_id,project_b_folder_id
Step 4 — Local Setup and Launch
# 1. Clone the repository
git clone https://github.com/your-username/google-drive-rag-mcp.git
cd google-drive-rag-mcp
# 2. Install dependencies
uv sync
# 3. Configure environment variables
cp .env.example .env
Edit .env:
GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account-key.json
TARGET_FOLDER_IDS=folder_id_1,folder_id_2
Step 5 — Connect to Claude
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"google-drive-rag": {
"command": "uv",
"args": ["run", "python", "main.py"],
"cwd": "/path/to/google-drive-rag-mcp",
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/your/service-account-key.json",
"TARGET_FOLDER_IDS": "folder_id_1,folder_id_2"
}
}
}
}
Restart Claude Desktop to apply the changes.
Claude Code
claude mcp add google-drive-rag \
-e GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account-key.json \
-e TARGET_FOLDER_IDS=folder_id_1,folder_id_2 \
-- uv run python /path/to/google-drive-rag-mcp/main.py
To make it available across all projects, add --scope user:
claude mcp add --scope user google-drive-rag \
-e GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account-key.json \
-e TARGET_FOLDER_IDS=folder_id_1,folder_id_2 \
-- uv run python /path/to/google-drive-rag-mcp/main.py
Verify the registration:
claude mcp list
This command only needs to be run once. The configuration is saved and loaded automatically on every Claude Code startup.
Re-run it only if you:
- Change environment variables (folder IDs or credentials path)
- Move
main.pyto a different path - Need to reset the registration (
claude mcp remove google-drive-rag)
Development
- Run the server
uv run python main.py
- Start the MCP server
uv run python main.py
License
Support
If you find this helpful, consider supporting the work:
Author
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.