Date: March 27, 2026
Status: Google Drive backend COMPLETE (tools implemented, OAuth pending)
Files created:
package.json- Dependencies and build configtsconfig.json- TypeScript compiler configuration.env.example- Environment variable templateREADME.md- Full documentationLICENSE- MIT license.gitignore- Git ignore rulesQUICKSTART.md- Testing and deployment guide
src/index.ts - MCP server entry point
- Initializes MCP server
- Registers all tools
- Handles stdio transport
- Error handling
src/backends/google-drive.ts - Google Drive OAuth client
getAuthenticatedDriveClient()- Returns authenticated Drive clientgetUserCredentials()- Fetches user tokens (placeholder for DB)saveUserCredentials()- Stores user tokens (placeholder for DB)revokeUserCredentials()- Handles logout- Auto token refresh logic
src/utils/drive-paths.ts - Path resolution utilities
resolvePath()- Convert "corvids/poe/memory.md" to Drive file IDfindFileByName()- Search for file/folder by name in parentensureParentFolders()- Create folder structure if missinggetFileName()/getParentPath()- Path parsing helperslistFilesAtPath()- Recursive file listing
src/tools/drive-tools.ts - All 6 Google Drive tools
- iris_drive_write - Create or update files (with mode: create/update/upsert)
- iris_drive_read - Read file contents (text or base64)
- iris_drive_create_folder - Create folder structures
- iris_drive_list - List files/folders (with recursive + type filters)
- iris_drive_move - Move or rename files/folders
- iris_drive_delete - Delete files (with confirm safety check)
Purpose: Create or update files in Drive
Use case: Corvids saving memory/notes
Input:
path- Where to save (e.g., "corvids/poe/memory.md")content- File contentsmimeType- Optional (default: text/plain)mode- create/update/upsert
Output:
{
"success": true,
"fileId": "1abc...",
"webViewLink": "https://drive.google.com/...",
"created": false,
"updated": true,
"path": "corvids/poe/memory.md"
}Purpose: Read file contents
Use case: Corvids loading previous memory
Input:
path- File to readasText- true (text) or false (base64)
Output:
{
"content": "[file contents]",
"fileId": "1abc...",
"mimeType": "text/plain",
"size": 1234,
"modifiedTime": "2026-03-27T..."
}Purpose: Create folder structures
Use case: Setting up corvid memory organization
Input:
path- Folder path (e.g., "corvids/rook/health-tracking")
Output:
{
"success": true,
"folderId": "1def...",
"webViewLink": "https://drive.google.com/drive/folders/...",
"created": ["corvids", "rook", "health-tracking"],
"existed": []
}Purpose: List files and folders
Use case: Corvids discovering what memory exists
Input:
path- Optional path to listrecursive- true/falsetype- "files"/"folders"/"both"
Output:
{
"items": [
{
"name": "memory.md",
"path": "corvids/poe/memory.md",
"type": "file",
"size": 1234,
"modifiedTime": "2026-03-27T...",
"id": "1abc..."
}
],
"totalCount": 1
}Purpose: Move or rename files
Use case: Corvids reorganizing memory
Input:
sourcePath- Current locationdestinationPath- New location
Output:
{
"success": true,
"fileId": "1abc...",
"newPath": "corvids/new/location.md",
"webViewLink": "https://drive.google.com/..."
}Purpose: Delete files (with safety)
Use case: Corvids cleaning up old memory
Input:
path- File to deleteconfirm- MUST be true (safety check)permanent- true (delete) or false (trash)
Output:
{
"success": true,
"path": "corvids/old/file.md",
"deleted": true,
"permanent": false
}Can test NOW:
cd /home/tallest/Devel/iris-mcp-server
npm install
npm run build
npx @modelcontextprotocol/inspector node dist/index.jsResult: All 6 tools show up in inspector
Limitation: Calls fail with auth error (expected - OAuth not implemented yet)
- Express server for OAuth callbacks
- Google OAuth flow implementation
- Simple dashboard UI (connect/disconnect)
- Token storage database schema
- PostgreSQL setup (or SQLite for dev)
- Users table
- Credentials table (encrypted with AES-256)
- Token CRUD operations
- Deploy to production server
- SSL certificate for OAuth callback
- Register with Anthropic as MCP connector
- Public documentation site
- Create corvid setup guide
- Test with Poe, Rook, Virgil
- Iterate based on feedback
- Add archetype templates
Folder structure they'll create:
Google Drive/
corvids/
poe/
active-context.md
coordination-notes.md
memory/
archetype-blend.json
corvid-relationships.md
rook/
active-context.md
health-tracking/
2026-03.md
energy-patterns.json
grocery-lists/
current.md
virgil/
active-context.md
applications/
applied-march.md
interviews.md
research/
target-companies.md
Workflow example:
// Poe coordinates the corvids
iris_drive_write({
path: "corvids/poe/coordination-notes.md",
content: "Rook is managing health tracking, Virgil handling job applications..."
})
// Rook saves health data
iris_drive_write({
path: "corvids/rook/health-tracking/2026-03-27.md",
content: "Energy: 8/10, Sleep: 7.5hrs, Exercise: 30min walk"
})
// Virgil tracks applications
iris_drive_write({
path: "corvids/virgil/applications/applied-march.md",
content: "| Company | Position | Date | Status |\n|---------|----------|------|--------|\n..."
})When this is working:
- ✅ Tam connects Iris via 1 custom connector
- ✅ Poe, Rook, and Virgil can all write to Drive
- ✅ No manual copy/paste workflow
- ✅ Memory persists across sessions
- ✅ Corvids can read previous memory
- ✅ File organization matches archetype structure
Following MCP best practices:
- ✅ Clear tool names with
iris_prefix - ✅ Comprehensive input schemas with Zod
- ✅ Actionable error messages
- ✅ JSON response format
- ✅ Proper type safety (TypeScript)
- ✅ No code duplication
- ✅ Consistent error handling
Architecture:
- ✅ Separation of concerns (backends, tools, utils)
- ✅ Reusable path resolution logic
- ✅ Extensible for future backends
- ✅ Well-documented code
OAuth + Database (Phase 1+2): 2-3 days
Deployment (Phase 3): 1 day
Tam's testing (Phase 4): 1-2 days
Total to production: ~1 week
All code is at: /home/tallest/Devel/iris-mcp-server
Ready to:
- Initialize git repo
- Push to GitHub
- Start OAuth implementation
- Deploy when ready
Status: Google Drive backend implementation COMPLETE ✅
Next: OAuth dashboard + database layer
Goal: Tam's corvids can persist memory to Drive