manus-mcp
MCP server on Fly.io that connects manus.im with Google Drive over Google Cloud.
- App URL: https://mcp-iwh3fa.fly.dev
- Repo: mitjaeichhorn/mcp
What it does
- OAuth: Users hit
/auth/google→ redirect to Google → callback at/auth/google/callback→ token stored on the server (in a Fly volume). - MCP tools: After one-time auth, Cursor/other MCP clients can call:
drive_list_files(folder_id, page_size)– list files in a Drive folderdrive_read_file(file_id)– download file content (text or base64)drive_upload_file(name, content, folder_id, mime_type)– upload a file
So manus.im (or any MCP client) can use this server as a bridge to Google Drive.
1. Google Cloud setup
- Go to Google Cloud Console and create or select a project.
- Enable the Drive API: APIs & Services → Library → search “Google Drive API” → Enable.
- OAuth consent screen: APIs & Services → OAuth consent screen → External (or Internal) → fill app name (e.g. “manus-mcp”), save.
- Credentials: APIs & Services → Credentials → Create credentials → OAuth client ID.
- Application type: Web application
- Name: e.g.
manus-mcp-fly - Authorized redirect URIs: add exactly:
https://mcp-iwh3fa.fly.dev/auth/google/callback
- Create → copy Client ID and Client secret.
2. Fly.io setup
-
Secrets (replace with your values):
fly secrets set GOOGLE_CLIENT_ID="your-client-id.apps.googleusercontent.com" fly secrets set GOOGLE_CLIENT_SECRET="your-client-secret"Optional (only if you use another URL):
fly secrets set BASE_URL="https://mcp-iwh3fa.fly.dev" -
Volume for token persistence (one-time, same region as app):
fly volumes create manus_mcp_data --region iad --size 1 -
Deploy:
fly deploy
3. First-time Google Drive connection
- Open: https://mcp-iwh3fa.fly.dev/auth/google
- Sign in with the Google account whose Drive you want to use.
- Approve the requested Drive access.
- You’ll be redirected back with “Connected. You can close this tab…”
- The server stores the refresh token in
/data(Fly volume). MCP tools can now call the Drive API.
4. Connecting manus.im (or any MCP client)
Point your MCP client at this server’s HTTP transport.
- URL:
https://mcp-iwh3fa.fly.dev - Transport: HTTP (FastMCP). If your client expects an MCP endpoint path, check its docs (e.g.
/mcpor root).
Example for a Cursor/IDE MCP config (format depends on your client):
{
"mcpServers": {
"manus-drive": {
"url": "https://mcp-iwh3fa.fly.dev"
}
}
}
After that, tools drive_list_files, drive_read_file, and drive_upload_file are available to the client (e.g. manus.im or Cursor).
Endpoints
| Path | Method | Description |
|---|---|---|
/ | GET | 200 OK (for Fly checks) |
/health | GET | JSON {"status":"healthy"} |
/auth/google | GET | Redirect to Google OAuth |
/auth/google/callback | GET | OAuth callback; saves token |
Local development
cd mcp
pip install -r requirements.txt
# No volume; token is stored in ./google_drive_token.json
export GOOGLE_CLIENT_ID="..."
export GOOGLE_CLIENT_SECRET="..."
export BASE_URL="http://localhost:8000" # or use ngrok and set BASE_URL to ngrok URL for callback
python server.py
Then open http://localhost:8000/auth/google (or your ngrok URL) to complete OAuth. Call the MCP tools via your client pointing at http://localhost:8000.
Summary
- manus.im ↔ Fly.io (mcp-iwh3fa.fly.dev) ↔ Google Drive via Google Cloud (OAuth + Drive API).
- One-time auth in the browser; tokens stored on Fly in a volume.
- MCP tools: list, read, upload files on the authenticated Drive.