danfeder/gdrive-sparc-mcp
If you are the rightful owner of gdrive-sparc-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
AI-powered Google Drive integration through Model Context Protocol (MCP) providing intelligent file management, content analysis, and organization insights.
Google Drive MCP Server
AI-powered Google Drive integration through Model Context Protocol (MCP) providing intelligent file management, content analysis, and organization insights.
๐ Features
Core MCP Tools
list_files
- List files and folders with advanced filtering and paginationget_file_content
- Extract and retrieve file content with metadatasearch_files
- Full-text search with relevance scoring and filteringanalyze_content
- AI-powered content analysis with summarization and categorizationget_organization_insights
- Drive organization analysis with actionable recommendations
Key Capabilities
- ๐ Secure OAuth2 Authentication with Google Drive API
- ๐ Content Analysis - AI-powered summarization, categorization, and keyword extraction
- ๐ Advanced Search - Full-text search with relevance scoring and filtering
- ๐ Organization Insights - Duplicate detection and structure optimization
- โก Performance Optimized - Intelligent caching and rate limiting
- ๐ก๏ธ Production Ready - Comprehensive error handling and logging
๐ Prerequisites
- Node.js 18.0.0 or higher
- Google Cloud Project with Drive API enabled
- OAuth2 Credentials from Google Cloud Console
๐ ๏ธ Installation
1. Clone and Install Dependencies
git clone <repository-url>
cd gdrive-sparc-mcp
npm install
2. Google Cloud Setup
-
Create Google Cloud Project
- Go to Google Cloud Console
- Create a new project or select existing one
-
Enable Google Drive API
# Using gcloud CLI gcloud services enable drive.googleapis.com
-
Create OAuth2 Credentials
- Navigate to APIs & Services > Credentials
- Click "Create Credentials" > "OAuth 2.0 Client IDs"
- Application type: "Web application"
- Add authorized redirect URI:
http://localhost:3000/auth/callback
- Download credentials JSON
3. Environment Configuration
Create .env
file from template:
cp .env.example .env
Configure required environment variables:
# Google OAuth Configuration (Required)
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
GOOGLE_REDIRECT_URI=http://localhost:3000/auth/callback
# Session Configuration (Required)
SESSION_SECRET=your-secure-session-secret-at-least-32-characters
# Optional Configuration
NODE_ENV=production
LOG_LEVEL=info
CACHE_TTL=300
CACHE_MAX_SIZE=1000
RATE_LIMIT_WINDOW=60000
RATE_LIMIT_MAX_REQUESTS=100
4. Build and Start
# Build TypeScript
npm run build
# Start server
npm start
# Or for development
npm run dev
๐ง Configuration
Environment Variables
Variable | Required | Default | Description |
---|---|---|---|
GOOGLE_CLIENT_ID | โ | - | Google OAuth2 Client ID |
GOOGLE_CLIENT_SECRET | โ | - | Google OAuth2 Client Secret |
GOOGLE_REDIRECT_URI | โ | - | OAuth2 Redirect URI |
SESSION_SECRET | โ | - | Session encryption secret (32+ chars) |
NODE_ENV | โ | development | Environment mode |
LOG_LEVEL | โ | info | Logging level (error, warn, info, debug) |
CACHE_TTL | โ | 300 | Cache TTL in seconds |
CACHE_MAX_SIZE | โ | 1000 | Maximum cache entries |
RATE_LIMIT_WINDOW | โ | 60000 | Rate limit window (ms) |
RATE_LIMIT_MAX_REQUESTS | โ | 100 | Max requests per window |
Google Drive API Scopes
The server requests the following OAuth2 scopes:
https://www.googleapis.com/auth/drive.readonly
- Read access to Google Drive fileshttps://www.googleapis.com/auth/userinfo.profile
- Basic profile information
๐ Usage
MCP Client Integration
Add to your MCP client configuration:
{
"mcpServers": {
"gdrive-sparc-mcp": {
"command": "node",
"args": ["path/to/gdrive-sparc-mcp/dist/server.js"]
}
}
}
Tool Examples
List Files
{
"name": "list_files",
"arguments": {
"folderId": "optional-folder-id",
"recursive": true,
"maxResults": 50,
"orderBy": "modifiedTime"
}
}
Search Files
{
"name": "search_files",
"arguments": {
"query": "project proposal",
"filters": {
"mimeTypes": ["application/pdf", "application/vnd.google-apps.document"]
},
"options": {
"maxResults": 20,
"includeSnippets": true
}
}
}
Analyze Content
{
"name": "analyze_content",
"arguments": {
"fileIds": ["file-id-1", "file-id-2"],
"analysisOptions": {
"enableSummarization": true,
"enableCategorization": true,
"enableKeywordExtraction": true
}
}
}
Get Organization Insights
{
"name": "get_organization_insights",
"arguments": {
"scope": {
"folderId": "optional-folder-id",
"includeSubfolders": true,
"fileLimit": 1000
},
"analysisOptions": {
"enableDuplicateDetection": true,
"enableStructureAnalysis": true
}
}
}
๐งช Testing
Run Tests
# Run all tests
npm test
# Run with coverage
npm run test:coverage
# Run specific test suite
npm test -- tests/auth/auth-service.test.ts
# Run integration tests
npm test -- tests/integration/
Test Server
Test the MCP server functionality:
# Test server startup and tool listing
node test-server.js
๐ Deployment
Docker Deployment
-
Build Docker Image
docker build -t gdrive-sparc-mcp .
-
Run Container
docker run -d \ --name gdrive-mcp \ -p 3000:3000 \ --env-file .env \ gdrive-sparc-mcp
Production Deployment
-
Environment Setup
# Set production environment export NODE_ENV=production export LOG_LEVEL=warn # Configure production secrets export SESSION_SECRET="your-production-session-secret" export GOOGLE_CLIENT_ID="your-production-client-id" export GOOGLE_CLIENT_SECRET="your-production-client-secret"
-
Process Management
# Using PM2 npm install -g pm2 pm2 start dist/server.js --name gdrive-mcp pm2 save pm2 startup
-
Health Monitoring
# Check server health curl -X POST http://localhost:3000 \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
๐ Monitoring and Logging
Log Levels
- error - Error conditions only
- warn - Warning and error conditions
- info - Informational, warning, and error messages (default)
- debug - All messages including debug information
Performance Metrics
- Request/response times
- Cache hit/miss ratios
- Rate limiting statistics
- Authentication success/failure rates
Health Checks
- Configuration validation
- Google API connectivity
- Cache system status
- Memory and performance metrics
๐ก๏ธ Security
Authentication
- Secure OAuth2 flow with Google
- Session-based authentication
- Automatic token refresh
- Secure credential storage
Data Protection
- No persistent storage of user data
- Encrypted session management
- Rate limiting and abuse prevention
- Input validation and sanitization
Best Practices
- Regular security updates
- Environment variable protection
- Secure communication (HTTPS in production)
- Audit logging for security events
๐ Troubleshooting
Common Issues
Configuration Errors
# Check configuration validation
npm run build && node dist/server.js
Authentication Issues
- Verify Google Cloud credentials
- Check OAuth2 redirect URI configuration
- Ensure Drive API is enabled
Performance Issues
- Monitor cache hit rates
- Check rate limiting settings
- Review log levels and output
Connection Issues
- Verify network connectivity
- Check firewall settings
- Validate environment variables
Debug Mode
# Enable debug logging
export LOG_LEVEL=debug
npm start
Support
- Check
- Review
- Submit issues on GitHub
๐ Documentation
๐ค Contributing
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature
) - Commit changes (
git commit -m 'Add amazing feature'
) - Push to branch (
git push origin feature/amazing-feature
) - Open Pull Request
๐ License
This project is licensed under the MIT License - see the file for details.
๐ Acknowledgments
- Model Context Protocol for the MCP specification
- Google Drive API for file access capabilities
- SPARC Development Team for the development methodology
Version: 1.0.0
Last Updated: 2025-01-30
Maintainer: SPARC Development Team