Skip to main content
Glama

drivelift

ローカルのファイルを Google Drive へ持ち上げ、Google スプレッドシート/ドキュメント/スライドとして置く MCP サーバー兼 CLI。LLM エージェント(Claude Code、Cursor、Codex など)が作った xlsx や md を、書式を保ったまま Drive の URL にする。

English

何を解くか

エージェントが手元に書いた成果物を Drive に載せたい場面で、既存の Drive コネクタはローカルファイルを受け取れない。中身を base64 にして会話に通すと、数十 KB のバイナリでも壊れる。

drivelift は利用者のマシンで動き、ツールにファイルパスを渡すだけで済む。バイト列は会話を通らず、Drive API へ直接流れる。xlsx から Google スプレッドシートへの変換は Drive 自身のインポート機能で行うので、列幅・塗り・タブ・埋め込み画像のような書式はその機能が保つ範囲でそのまま残る(rclone の --drive-import-formats と同じ経路)。

Related MCP server: google-drive-mcp-server

設計上の約束

  • 共有の OAuth クライアントを持たない。 利用者が自分の Google Cloud プロジェクトでクライアントを作る(5 分程度)。未設定のときはツールが Console の URL を順に返して誘導する

  • スコープは drive.file だけ。 drivelift が作ったファイル以外は見えない。既存の共有資料を壊す経路がない

  • secret を会話に通さない。 クライアント JSON の取り込みはファイルパス指定のみ

  • ホスティング不要。 ループバック(127.0.0.1)でログインし、トークンは手元に置く

  • 依存は MCP SDK と zod の 2 つ。Drive API は標準の fetch で叩く

導入

Claude Code の場合、プロジェクトの .mcp.json に追加する。

{
  "mcpServers": {
    "drivelift": {
      "command": "npx",
      "args": ["-y", "drivelift@0"]
    }
  }
}

または claude mcp add drivelift -- npx -y drivelift@0。CLI として使うなら npx drivelift doctor。

Node.js 22.13 以降が必要。

初回セットアップ

エージェントに「drivelift の status を見て」と言えば、以下を返してくる。手順を自分で踏む場合は同じ内容。

  1. Google Cloud プロジェクトを作る(既存でも可): https://console.cloud.google.com/projectcreate 。gcloud が入っていれば gcloud_setup ツール(CLI: drivelift setup-gcloud --yes)が手順 1・2 を代理実行する。実行前に打つコマンドを見せて承認を求める。手順 3・4 に gcloud の代替はない

  2. Google Drive API を有効化: https://console.cloud.google.com/apis/library/drive.googleapis.com

  3. OAuth 同意画面を設定: https://console.cloud.google.com/auth/overview

    • Google Workspace のアカウントなら 内部(審査不要、トークン失効なし)

    • 個人 Gmail なら 外部 にして 本番に公開する。テスト状態のままだとリフレッシュトークンが 7 日で失効する

  4. OAuth クライアントを デスクトップ アプリ 種別で作り、JSON をダウンロード: https://console.cloud.google.com/auth/clients/create

  5. JSON を所定の場所に置く。status が ~/Downloads の候補を見つけると mv … && chmod 600 … のコマンドをそのまま返すので、それを実行すればよい。import_client_secret ツール(CLI: drivelift import-secret <path>)でも同じことができる。パスを省くと候補を列挙するだけで、コピーはしない

  6. auth_start ツール(CLI: drivelift login)でブラウザが開くのでログインする。ツールは同意が終わるまで待つので、終わったことを伝え直す必要はない

以後は upload を呼ぶだけ。設定が欠けた状態で upload を呼んでも、同じ手順が next_steps として返る。

ツール

ツール

役割

status

導入状態(no_client / no_token / token_invalid / api_disabled / ready)と次の一手、Console の URL

auth_start

ログイン開始。ブラウザを開き、同意が終わるまで最大 wait_seconds(既定 90 秒)待って completed を返す。間に合わなければ pending

auth_status

ログインの進捗(idle / pending / completed / failed)。wait_seconds で決着まで待てる

import_client_secret

ダウンロード済みのクライアント JSON を設定ディレクトリへ取り込む

gcloud_setup

gcloud が入っていれば手順 1・2(プロジェクト用意と Drive API 有効化)を代理実行。confirm なしは打つコマンドを返すだけで、confirm: true で実行。gcloud 未ログインなら gcloud auth login も代行(ブラウザが開く)

upload

ファイルを Drive へ置き、URL を返す

upload の引数:

引数

内容

path

ローカルのファイルパス

name

Drive 上の名前。省略時はファイル名(変換するときは拡張子を落とす)

folder_id

置き先フォルダの ID(フォルダ URL の /folders/ 以降)。省略時はマイドライブ直下。下記「制約」を参照

convert

auto(既定)/ none / spreadsheet / document / presentation

auto の変換先: xlsx・xls・csv・tsv・ods → スプレッドシート、docx・doc・odt・rtf・txt・md・html → ドキュメント、pptx・ppt・odp → スライド。それ以外はそのまま置く。

CLI

drivelift                       MCP stdio サーバーとして起動
drivelift doctor                導入状態と次の一手
drivelift login                 ブラウザでログイン(完了まで待つ)
drivelift import-secret [path]  クライアント JSON の取り込み
drivelift setup-gcloud [--project ID] [--yes]  gcloud で手順 1・2 を実行(--yes なしは計画表示)
drivelift upload <file> [--folder ID] [--name N] [--convert MODE] [--json]

upload は既定で URL だけを標準出力に出すので、スクリプトから拾いやすい。

設定

場所

内容

~/.config/drivelift/client_secret.json

Console からダウンロードした JSON(import-secret 経由なら 0600。手で置いた場合は自分で権限を絞る)

~/.config/drivelift/token.json

リフレッシュトークンと access_token のキャッシュ(0600、平文)

環境変数 DRIVELIFT_CONFIG_DIR

設定ディレクトリの変更

環境変数 DRIVELIFT_CLIENT_ID / DRIVELIFT_CLIENT_SECRET

ファイルの代わりにクライアントを渡す(.mcp.json の env 向け)

制約と注意

  • drive.file スコープでは、drivelift が作っていない既存フォルダは drivelift から見えないため、folder_id に指定しても Drive が 404 を返す見込み(実機で確認中。結果は docs/design.md に記録する)。現時点では folder_id を省略してマイドライブ直下に置き、Drive の画面で移動する運用を前提にしている。フォルダ作成ツールか drive スコープの opt-in は、確認結果を見てから決める

  • 同名ファイルがあっても上書きせず、新しいファイルを作る(Drive の既定どおり)

  • token.json は暗号化していない。マシンを共有する環境では DRIVELIFT_CONFIG_DIR を保護された場所に向ける

  • Google Workspace の管理者がサードパーティアプリの API アクセスを制限している場合、「内部」クライアントでも認可できないことがある

開発

npm install
npm test
npm run build

テストは Google に接続しない(fetch を差し替え、ループバックのログインは実際のポートで検証する)。

ライセンス

MIT

Available Tools

6 tools
auth_startStart Google sign-inA

Begin the OAuth sign-in. Opens the Google consent page in the user's browser (loopback redirect on 127.0.0.1) and waits up to wait_seconds (default 90) for the user to finish; if they do, the result is state: completed and no further call is needed. Otherwise state: pending — call auth_status (with wait_seconds) to keep waiting. Requires an OAuth client (see status).

ParametersJSON Schema
NameRequiredDescriptionDefault
open_browserNoDefault true. Set false to only return the URL.
wait_secondsNoSeconds to wait for the sign-in to finish before returning (default 90, 0 = return immediately).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint:false, openWorldHint:true), the description discloses the browser opening, loopback redirect, waiting behavior, and state outcomes (completed/pending). It also mentions the need for an OAuth client, adding valuable context beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no waste, and the core purpose is front-loaded. It includes necessary details (loopback, wait, states) without fluff, striking a good balance between completeness and brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description explains the state machine (completed/pending) and the waiting behavior. It covers the prerequisite and points to status and auth_status. It does not mention error conditions explicitly, but the overall flow is sufficiently clear for an agent to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters fully documented. The description adds no new parameter-level meaning; it merely reinforces the behavior of wait_seconds. Baseline 3 is appropriate since the schema already carries the semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Begin the OAuth sign-in' with a specific verb and resource, and distinguishes itself from siblings by referencing auth_status for the pending state and status for the client prerequisite. It leaves no ambiguity about the tool's role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains when to call auth_status (when state is pending) and notes the prerequisite of an OAuth client (see status). It does not contrast with all siblings, but the flow is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

auth_statusCheck sign-in progressA
Read-only

Report the state of the sign-in started by auth_start: idle / pending / completed / failed. With wait_seconds it blocks until the sign-in settles or the time runs out.

ParametersJSON Schema
NameRequiredDescriptionDefault
wait_secondsNoSeconds to wait for the sign-in to settle (default 0).

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint already signals this is a safe read, and the description adds meaningful behavioral context: the optional blocking behavior, the state vocabulary, and the timeout behavior. It doesn't contradict the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the first states the purpose and possible states, the second explains the optional blocking parameter. No filler or redundant restatement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only poller with one optional parameter, the description is complete: it names the states, explains the blocking behavior, and ties the tool to the auth_start workflow. No output schema exists, but 'report the state' plus the enumerated states sufficiently conveys the return concept.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents wait_seconds, so the baseline is 3. The description adds value by explaining that wait_seconds blocks until the sign-in settles or time runs out, giving the parameter a behavioral meaning beyond 'seconds to wait.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Report'), a clear resource ('the sign-in started by auth_start'), and enumerates the exact state values (idle/pending/completed/failed). This makes it easy to distinguish from auth_start (which starts the flow) and the unrelated sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The tool's context is clear: it should be used after auth_start and can optionally block via wait_seconds. It doesn't explicitly spell out when not to use it or name alternatives, but the resource and workflow are specific enough to guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gcloud_setupRun setup steps 1-2 with gcloudA

For users who have the gcloud CLI: prepare a Google Cloud project and enable the Drive API on the user's behalf. Without confirm it only reports what it would run (planned_commands) — show that to the user and ask for approval. With confirm: true it runs those commands (and gcloud auth login, opening a browser, if gcloud has no active account). Steps 3-4 (consent screen, Desktop-app OAuth client) cannot be automated and are returned as next_steps with project-scoped Console links, plus console_form with sample values for every field (show it to the user as a table).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoDefault false (plan only). true = execute the planned commands.
project_idNoProject ID to use or create. Default: gcloud's current project, else a generated drivelift-xxxxxxxx.
login_if_neededNoDefault true. With confirm, run `gcloud auth login` when no gcloud account is active.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavior: without confirm it only reports planned commands; with confirm it executes commands, may run `gcloud auth login`, and may open a browser if no account is active. It also reveals that a project may be created or generated, and that steps 3-4 are returned as next_steps—all useful side-effect context for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured: it front-loads the core purpose, then explains the two execution modes, then clearly summarizes what the tool cannot do. Every sentence contributes a distinct fact, and there is no filler or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema present, the description adequately covers the key returned artifacts: planned_commands, next_steps, and console_form with sample values. It also explains the side-effect behavior and the division between automated steps and manual steps, giving an agent enough information to call the tool correctly and interpret its output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters well. The description adds context around the overall execution flow, but it largely mirrors the parameter descriptions for confirm, project_id, and login_if_needed rather than adding meaning beyond them. Baseline 3 is appropriate because the schema carries the semantic weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: prepare/configure a Google Cloud project and enable the Drive API for users with the gcloud CLI. It also distinguishes itself from the remaining setup steps by explicitly saying steps 3-4 cannot be automated and are returned as next_steps, making its scope clear against sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear guidance: it is for users who have the gcloud CLI, and it fully explains the two modes—plan-only without confirm, and execution with confirm—so an agent knows when to ask for approval. It does not name sibling tools as alternatives, but it does state the boundary between what this tool can do and what must remain as next_steps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_client_secretImport OAuth client JSONA

Copy a downloaded OAuth client JSON (Desktop app type) into drivelift's config directory. Pass the file path; the secret itself never enters the conversation. Without a path, it only lists client_secret*.json candidates in ~/Downloads (newest first) and copies nothing — confirm with the user, then call again with the chosen path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to the downloaded client_secret_*.json

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint=false in annotations, the description carries the behavioral burden and adds valuable context: it copies rather than moves, never exposes the secret in conversation, and copies nothing when the path is omitted. It does not mention overwrite behavior when the config file already exists, so it stops short of full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary action, then the conditional list mode and confirmation step. Every sentence earns its place with no redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single optional parameter with no output schema, this is nearly complete: it covers both call modes, the list output ordering, and the required user-confirmation step. The only gap is unspecified behavior for invalid paths or existing config-file collisions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents path with 100% coverage, so the baseline is 3. The description reinforces that omitting the path triggers listing, but it adds no new format or value constraints beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: copy a downloaded OAuth client JSON into drivelift's config directory. It also documents the optional list-only mode, making the tool's dual purpose unmistakable and distinct from siblings like upload or auth_start.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit invocation rules: call without a path to list candidates, and call with a path to import, including a confirm-then-call-again protocol. It does not explicitly contrast with sibling tools, but the two modes are so clearly specified that an agent knows exactly when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

statusCheck drivelift setup statusA
Read-only

Report whether drivelift can upload to Google Drive right now. Returns state (no_client / no_token / token_invalid / api_disabled / ready), a message, next_steps, and urls. When not ready, relay next_steps to the user verbatim — they contain the exact Google Cloud Console links, a gcloud_setup hint when gcloud is installed, and a ready-made mv command when a downloaded client JSON is found in ~/Downloads. console_form lists sample values for every Console field in steps 3-4; show it to the user as a table so they can fill the forms without guessing. drivelift uses a bring-your-own OAuth client (Desktop app type) and the drive.file scope only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description aligns by calling this a 'Report' operation. It adds meaningful context beyond annotations by listing the returned fields, the state enum, and the specific instruction to relay next_steps verbatim, as well as noting the BYO OAuth client and drive.file scope. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then packs in output details, user-relaying instructions, console_form usage, and OAuth context. It is longer than average but every sentence carries actionable information; only the final contextual sentence is slightly extra, though still relevant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden of explaining return values, and it does so thoroughly: state enum, message, next_steps, urls, and console_form. It also tells the agent exactly how to relay next_steps and when to show console_form as a table, making this complete for a zero-parameter read-only tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema coverage is 100%, so there is nothing for the description to explain about inputs. The baseline of 4 applies here; the description appropriately focuses on outputs instead.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Report whether drivelift can upload to Google Drive right now.' It enumerates the exact return states (no_client / no_token / token_invalid / api_disabled / ready), which clearly distinguishes this setup-level status check from the sibling auth_status tool without needing to inspect either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool — whenever you need to know if an upload is currently possible — and gives post-invocation guidance ('When not ready, relay next_steps to the user verbatim'). However, it never explicitly compares itself to alternatives like auth_status or states when not to use it, so selection guidance is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uploadUpload a local file to Google DriveA

Upload a local file to Google Drive and return its URL. By default (convert: auto) spreadsheets (xlsx/csv/tsv/ods) become Google Sheets, documents (docx/md/txt/html/rtf/odt) become Google Docs, and slides (pptx/odp) become Google Slides via Drive's own import, which carries over most formatting. Other files are stored as-is. Files go to My Drive root unless folder_id is given. If drivelift is not set up, the error carries next_steps to relay to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName in Drive. Default: the file name (extension dropped when converting)
pathYesLocal file path (absolute, or relative to the server's working directory)
convertNoauto (default) / none / spreadsheet / document / presentation
folder_idNoDestination folder ID (the part after /folders/ in the folder URL). Caution: with the drive.file scope, folders that drivelift did not create are usually invisible to it and Drive returns 404; omit it to upload to My Drive root.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true. The description adds valuable behavioral context: conversion rules for various file types, default destination, and error behavior with next_steps. It does not contradict the annotations and provides meaningful detail beyond them, though it could mention potential side effects like overwriting existing files (though it doesn't, which is fine as it's not destructive).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise yet comprehensive, with each sentence adding distinct value. It is front-loaded with the core action and return value, then logically progresses to conversion behavior, destination, and error handling. No wasted words; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters, all documented, and no output schema, the description is complete. It explains return value (URL), conversion behavior, folder handling, and error handling. The complexity is moderate, but the description covers all necessary aspects for an agent to invoke it correctly, including edge cases like folder_id visibility.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all parameters have descriptions. The description significantly enhances this by explaining the convert enum in detail (what happens with auto, which file types map to which Google format), cautioning about folder_id with drive.file scope (404 risk), and clarifying the name default (extension dropped when converting). This goes well beyond the schema's terse descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (upload a local file), the target (Google Drive), and the outcome (return its URL). It also details conversion behavior for different file types, which distinguishes it from any potential sibling upload tools. The verb 'upload' is specific and the resource is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on default behavior (My Drive root) and when to use folder_id, and it explains error handling when drivelift is not set up. While it doesn't explicitly state when not to use this tool or name alternatives, the sibling tools are all auth/setup related, so the usage context is clear. It could be more explicit about prerequisites (e.g., auth required), but the mention of drivelift setup covers that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observedauth_start
    • First observedauth_status
    • First observedgcloud_setup
    • First observedimport_client_secret
    • First observedstatus
    • First observedupload

TDQS

A4.5/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: status reports readiness, auth_start/auth_status manage the OAuth flow, import_client_secret handles client credentials, gcloud_setup automates project preparation, and upload performs the core action. No overlapping or ambiguous tools.

Naming Consistency5/5

All tool names follow a consistent lowercase_with_underscores style, with clear verbs (auth_start, import_client_secret, upload) and descriptive nouns (status, auth_status, gcloud_setup). The naming is uniform and intuitive, with no mixed conventions.

Tool Count5/5

With 6 tools, the set is well-scoped for the server's purpose of uploading files to Google Drive with full setup and authentication support. Each tool earns its place, neither too sparse nor overwhelming.

Completeness5/5

The tool surface covers the entire lifecycle from readiness checks, authentication (both manual and gcloud-assisted), credential import, and upload. There are no dead ends or missing operations for the stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to automate Google Drive tasks such as provisioning workspaces, reusing templates, inspecting folder structures, updating reports, and sharing files through user-controlled OAuth.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to make real in-place edits to Google Drive files—preserving file IDs, revision history, comments, and sharing—while also supporting appends, targeted find-and-replace, reads, searches, and file creation.
    MIT