Team Drive MCP
This local, source-read-only MCP server lets you discover, inspect, read, and export indexed team files without modifying source files.
Check index coverage, configured limits, jobs, and supported formats with
team_drive_status.Page through the indexed file inventory, including unsupported and failed files, with
team_drive_list.Search names and indexed keyword content, including short Chinese terms and aliases, with
team_drive_search.Inspect a file’s indexed structure, segment offsets, format limitations, and current source version with
team_drive_inspect.Read bounded file segments with locators and version verification; use selectors for CSV/TSV rows, XLSX sheets/rows, PDF pages, and PPTX slides with
team_drive_read.Export all indexed segments of an explicitly versioned file to a controlled local JSONL artifact with
team_drive_export.Queue incremental reindexing or forced retries with
team_drive_refresh.Monitor indexing progress, coverage, and failures with
team_drive_job_status.Request cooperative cancellation of indexing jobs with
team_drive_cancel.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Team Drive MCP查模拟资料里星河计划2026-09的正式预算和可用金额,并引用单元格"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
df mcp
给 AI 使用的本地团队文件读取工具,Skill 名称为 df-mcp,界面名称为 df mcp;GitHub 仓库仍使用 team-drive-mcp。架构:Skill + MCP + SQLite 增量索引。优先保证来源、版本和读取范围可核查,再优化定位速度。所有附带业务数据均为 SIMULATED / 完全虚构。
已实现的范围
本地 stdio MCP,10 个结构化工具;不调用模型 API、不访问网络。
SQLite 文件清单与关键词索引,支持中文短词、项目代号及配置别名。
TXT、Markdown、CSV、TSV、XLSX、DOCX、PPTX、文字 PDF。
启动扫描、运行期间定期增量核对、删除失效、失败记录和强制重试。
分页、结构导航、原文定位、读取前 SHA256 版本校验、受控 JSONL 导出。
安装时选择并确认读取目录;源文件只读,索引、日志、临时解析文件及导出与源目录分离。
多个 stdio 连接共享一个受管理的本地索引服务;状态目录禁止位于
.codex或CODEX_HOME下。授权根目录边界、符号链接/Windows junction 与 reparse 路径拒绝、压缩文件/XML 限制、超时、明确错误。
运行平台:Windows、macOS / Linux,Node.js >=22,Python >=3.9。 Windows 本版面向固定本地磁盘上的普通目录,支持中文及空格路径;不支持 UNC/网络映射盘、可移动盘、设备路径、junction、符号链接及其他 reparse 路径。目标为 Windows 10/11;自动测试的实际环境与结果见验证记录,不能据此宣称所有公司电脑已经验收。
当前未实现: SharePoint 登录与下载、多用户身份权限、OCR、向量检索、原始文件下载工具、模型自我训练、无人值守云端部署。没有真实团队资料,也没有公司 PPT 模板。
Related MCP server: knowledgehub
安装:先选择允许读取的文件夹
把仓库与真实资料放在互不包含的独立目录,不要将运行安装放在会被定期清除的下载缓存或临时目录中。安装 Node.js 22+ 和 Python 3.9+,下载本仓库或执行下面的 clone 命令。Windows PowerShell、macOS 或 Linux 终端均可执行:
git clone https://github.com/raymondhuang1994/team-drive-mcp.git
cd team-drive-mcp
npm ci --ignore-scripts
npm run setup
npm run install:skillsetup 在仓库 .venv 安装 Python 依赖、编译 TypeScript,然后询问读取哪个文件夹。Windows 可通过文件夹选择窗口选取,也可按提示输入路径。向导展示读取目录与独立状态目录,确认后才保存配置;取消不保存新配置。它不在源目录创建测试文件,也不修改源目录权限。索引在 MCP 客户端启动服务后才开始,安装配置本身不读取整库正文。
无需模型 API key 或数据库服务器。Windows 安装脚本优先查找 py -3,再尝试可用的 python;系统商店跳转别名不作为可用解释器。支持与构建步骤遇到错误时应先解决该错误,不能把未成功的安装当作可用服务。
Skill 安装到个人 Codex 技能目录,名称为 df-mcp。同名目标或旧 team-drive-read 已存在时默认拒绝改动;明确更新或迁移旧 team-drive-read 可执行 npm run install:skill -- --replace,脚本先在目标磁盘逐文件复制并校验完整性,再备份原 Skill 到 Codex 配置目录中的 skill-backups/ 并发布。复制失败不改动原安装;发布失败会尝试恢复原安装,无法自动恢复时保留备份并报告路径。支持中文/空格用户路径及仓库与用户目录位于不同磁盘的安装。Skill 只包含操作规范,MCP 连接按下一节配置。
配置位置与后续换目录
默认状态基目录:
平台 | 默认位置 |
Windows |
|
macOS |
|
Linux |
|
每个源目录使用独立的 profiles/<root-hash>/config.json 与 profiles/<root-hash>/state/。向导会输出完整配置路径。共享索引位于 state/shared-v1/index/,控制文件位于 state/shared-v1/control/;连接结束后保留已提交索引,下次连接复用。配置、正文缓存、数据库、日志和导出按源资料的敏感程度管理,不放在源目录、同步共享盘或公开 Git 仓库中。
状态路径不能包含 .codex 目录,也不能位于自定义 CODEX_HOME 内。安装器和服务都检查此边界及物理路径,不能用别名、符号链接或 junction 绕过。这样 Windows 状态目录的长期句柄不会固定 Codex 的配置目录。即使默认环境变量被重定向到 Codex 目录内,配置也会拒绝,应改用明确的外部 --state-dir。
换目录时运行 npm run configure,重新选择并确认,然后用向导给出的配置路径更新 MCP 连接。不会原地把旧索引绑定到新来源,也不会删除旧配置或资料。MCP 工具本身不能更改读取目录。
已明确路径时可非交互配置,例如 Windows PowerShell:
npm run configure -- --root 'D:\团队资料' --yes--yes 必须与明确的 --root 同用,表示确认该目录。可用 --state-dir '<独立状态基目录>' 自定义状态基目录;向导要求源目录、状态基目录与安装目录两两不重叠,任何一个都不能包含另一个。真实资料应放在程序目录外;仓库内的合成示例仅通过专用示例配置使用,不经过真实资料安装向导。无交互终端且未给出 --root 会失败,不会默认扫描主目录或示例库。
配置 MCP 客户端
优先直接复制配置向导输出的注册命令。 它使用当前安装的 Node 与专用 Python 环境的绝对路径,避免桌面应用与终端的 PATH 不同、或继承了另一套 Python 环境而启动失败。以下是手动配置的同等写法;将配置路径替换成向导的实际输出。
Windows PowerShell,在仓库目录执行:
$repo = (Get-Location).Path
$node = (Get-Command node -CommandType Application).Source
$python = Join-Path $repo '.venv/Scripts/python.exe'
$config = '<向导输出的配置文件绝对路径>'
codex mcp add df_mcp -- $node (Join-Path $repo 'dist/index.js') --config $config --python $pythonmacOS / Linux:
node_bin="$(node -p 'process.execPath')"
codex mcp add df_mcp -- "$node_bin" "$PWD/dist/index.js" --config '<向导输出的配置文件绝对路径>' --python "$PWD/.venv/bin/python"移动安装目录、删除旧 Node 版本或更换 Python 后,重新运行 setup/configure 并更新注册命令;不要沿用已不存在的解释器路径。doctor --config ... 会检查解释器与配置,实际连接仍需用 status 验证。
只有 Codex 桌面应用、没有 codex 命令时,也可在 Codex 的 config.toml 中配置同样的入口。未设置 CODEX_HOME 时,文件位于用户目录的 .codex/config.toml;已设置时使用该目录下的 config.toml。保留其他设置,将下面占位符替换为向导打印的真实绝对路径。如果 df_mcp 已存在,只更新原条目,不重复添加同名 TOML 区块:
[mcp_servers.df_mcp]
command = '<Node 可执行文件绝对路径>'
args = ['<安装目录>/dist/index.js', '--config', '<向导生成的配置文件绝对路径>', '--python', '<专用 Python 可执行文件绝对路径>']Windows 的 Python 通常为 <安装目录>\.venv\Scripts\python.exe,Mac/Linux 为 <安装目录>/.venv/bin/python。这里的 Codex 配置文件只保存启动入口;JSON 内的 state_dir 仍必须在 .codex 之外。保存后完整退出并重新打开 Codex,以释放旧连接。
这里的 df_mcp 是客户端连接名称;Skill 仍为 $df-mcp,工具名保留 team_drive_ 前缀兼容现有调用。旧版本用户应先关闭旧会话,在客户端移除旧 team_drive 连接,再添加新连接,避免保留重复注册。其他支持 stdio 的客户端参考 examples/mcp.json,替换路径占位符。启动新会话,让客户端发现 Skill 和工具。Windows 上已经使用临时 launcher 或修改过 dist/index.js 的用户,按迁移说明检查、备份并替换。
多个 Codex 聊天使用同一份配置时,通过轻量 stdio 桥接连接同一个本地 broker,共享一个 Python 引擎、SQLite 索引和扫描调度。Mac/Linux 使用本机 Unix socket,Windows 使用 named pipe,不对外监听网络,也不安装系统服务。每个聊天有独立会话和分页游标;不能在聊天之间互换 cursor。
服务按需启动,最后一个客户端断开后空闲 60 秒退出。可用 JSON "service": {"idle_seconds": 60, "max_clients": 64} 配置空闲时间(1–3600 秒)和客户端上限(1–256)。达到上限时按错误提示释放不用的连接并重试,不为每个聊天复制配置或索引。state_pool 仅保留旧独立 worker 的兼容用途,普通 MCP 不再按聊天占索引槽。
team_drive_status 返回服务版本、source/config 身份、实例、健康状态、当前作业 ID(详见 job_status)和 state_storage。先看实际返回能力,不能凭 Skill 文件推定已连接新版。多个客户端共享刷新/取消作业:取消会影响同一来源其他会话;只有任务确实不再需要时才取消。配置在服务运行中发生变化时,按提示关闭相关连接并等待服务退出后重新连接,不混用配置。
修改启动入口后需重新连接旧聊天;已关闭的 stdio 管道不会被修改配置复活。手动 npm start -- --config '<配置路径>' 也只是一个桥接客户端。服务没有隐式源目录,不在协议会话中弹出目录选择框。
诊断当前连接
node scripts/doctor.mjs --config '<配置路径>'
node scripts/call-tool.mjs team_drive_status --config '<配置路径>'
node scripts/call-tool.mjs tools --config '<配置路径>'doctor 仅离线读取指定配置、源码/构建版本与路径状态,不启动 worker、不扫描源文件、不创建或修复状态;其成功不能代替实时状态检查。它显示本机路径,分享前需脱敏。call-tool 明确连接指定配置;只有显式 --demo 才使用虚构样本,不会默认把模拟库当成用户资料库。status 立即返回,普通读取等待初次索引最多 60 秒;大库使用持久客户端观察进度。
Mac 升级时先用原连接的配置运行 doctor,核对实际来源和版本。若原连接使用仓库虚构示例,可继续保留同一示例配置;升级服务不会自动切换到真实资料或新根目录。源码副本、构建结果与 Codex 启动入口是三个不同位置,只有重新连接后的 status 才能确认实际运行版本。
示例请求:
使用 $df-mcp 查指定资料目录里本月的正式预算及可用金额,说明口径并引用单元格;缺少资料时明确说明。AI 应先检查索引状态,区分正式资料与草稿,读取证据,再用确定性程序计算。搜索结果不能证明业务数据完整。
升级、恢复与磁盘维护
0.3 从受管理源码构建服务,不直接导入 0.1/0.2 根层索引或 0.2.1 的 pool-v1/。这些旧缓存保留,首次启动共享索引会重建一次,随后所有聊天复用。来源身份不变、已有外部配置可继续使用;重新运行 configure 会按根目录/状态绑定复用配置,并原样保留自定义选项和键顺序。改变来源需要明确选择/确认并生成独立 profile,不会覆盖旧来源绑定。
共享服务使用磁盘工作数据库和已提交检查点。启动从已提交版本恢复;每次提交采用受控临时快照和原子替换,工作文件中断不会被当成新的完整版本。证据读取仍重新校验源 hash。索引是可重建缓存,不能取代源资料备份,也不能把进程强杀测试理解为所有磁盘故障/断电场景已验证。
稳定运行保留已提交库和工作库,提交时另需一个临时快照;若有损坏快照,至多另留一份隔离副本。因此应按最多约 3 份完整索引、含隔离副本时约 4 份预留空间;这是单个共享服务的空间预算,不随聊天数增加。已结束作业最多保留 100 条。解析临时文件只在独占租约下按受控规则回收,不递归删除未知内容。
node scripts/maintain-state.mjs --config '<配置路径>' --prune-exports-days 30
node scripts/maintain-state.mjs --config '<配置路径>' --prune-exports-days 30 --apply维护默认预览,--apply 才删除选中的派生文件;--reset-index 可明确重建已提交/工作/临时/隔离数据库,保留导出、依据包和未知文件。来源目录身份确已更换时,只有明确的 --reset-index --accept-source-replacement 才接受新身份;不要为绕过错误自动加此参数。它获取与服务相同的租约并跳过忙状态。完成全量维护前关闭相关连接、等待 broker 空闲退出;不删除锁文件来强制释放服务。导出保留期只清理未被依据包引用的独立 JSONL;依据包清单及其引用的导出长期保留,不自动到期。无法核实清单引用时拒绝清理(BUNDLE_REFERENCES_UNVERIFIED)。旧缓存/profile 需核对后单独处理,源目录永远不属于清理范围。Windows 迁移及实机验收见迁移说明。
只读的含义
源文件仅以读取权限打开,不提供修改、删除、重命名、移动或更改权限的 MCP 接口。解析快照、索引和生成结果写到独立状态目录。应用清理与 Skill 迁移不处理源资料。Windows 为固定目录身份而持有的句柄可能暂时阻止目录重命名或移除;需要整理源目录时先关闭服务。
这些保障约束本 MCP,不能撤销 AI 宿主其他终端或文件工具的写权限。需要操作系统强制只读时,由 IT 配置受限账户或隔离环境;普通安装不改变源目录 ACL。详见 Windows 只读部署。
Windows 不支持直接读取 OneDrive cloud reparse 文件:即使已经下载,有些文件仍可能被识别为云文件而跳过。在线占位文件不自动下载。当前请使用获准资料在普通、非同步本地文件夹中的副本;被排除或占用的文件会形成覆盖缺口,不能当作已读取。
测试与模拟演示
不配置个人目录、只构建并测试:
npm run setup -- --skip-config
npm test
npm run test:installer
npm run test:doctor
npm run test:backend
npm run test:mcp
npm run test:concurrency
npm run test:install测试使用隔离临时目录和虚构资料。--skip-config 只跳过目录配置,不创建可用的个人读取连接。已有依赖和编译结果时可直接运行测试。
CI 在 Windows、macOS、Linux 的清洁检出中安装依赖并构建,覆盖 Python 3.9 与 3.13。test:install 另外使用临时用户目录运行真实配置、Skill 安装和诊断命令,再启动两份 MCP 客户端检查同文件读取、共享实例、关闭重开与来源不变。它验证默认路径与安装流程;不能代替每台电脑的企业策略、源 ACL 或 Codex 应用级验收。
新安装的最小验收:在两条聊天各自调用 status,确认版本为 0.3.0、state_storage.mode=shared、同一个 instance_id,再 inspect/read 同一文件。完整退出并重开 Codex 后重复一次。失败时保留结构化错误,用明确配置运行 doctor;不要创建随机状态目录或删除活动锁文件作为修复。
npm run demo 显式启动模拟目录的 stdio 服务;它不提供聊天界面,需 MCP 客户端发送协议请求。也可将客户端 --config 指向仓库 examples/config.sample.json,用 $df-mcp 查询样本。演示配置使用独立的 .local/sample-v02-state/,不会自动替换你的正式配置或复用 0.1 旧演示缓存。
工具与完整性
工具 | 用途 |
| 覆盖范围、状态、限制、索引更新时间 |
| 分页列出文件,包含失败/不支持的条目 |
| 按名称与正文关键词发现候选;结果须回查 |
| 校验版本,分页导航章节/工作表/页面结构 |
| 按工作表/行范围/PDF页/幻灯片筛选分段,支持版本锁定与续读 |
| 将指定版本已提取片段导出到受控 JSONL,保留提取缺口 |
| 将指定文件版本汇集为依据包,返回来源清单、导出、观察时间窗与缺口 |
| 排队增量更新; |
| 查看更新任务与失败情况 |
| 请求在安全文件边界取消更新 |
inventory_complete 是本次目录盘点完成;all_present_files_indexed 是盘点内文件均为 ready(可包含部分提取);all_present_files_extracted_completely 才同时要求没有文本提取缺口;extraction_complete 是该解析器完成支持内容的提取。它们都不表示业务资料齐全或视觉内容全部理解。必须查看 format_warnings。致命解析失败不提供成功正文;可明确划定的部分 PDF 提取会保留可读页并标出缺口,不能作为完整文件证据。
Excel 公式与保存值分开返回;保存值可能过期,没有自动重算。Word 页码不稳定,使用段落/表格引用。PPT 图形、PDF 复杂表格、扫描件等存在明确边界。完整限制见 formats.md。
完整汇总应先确定权威来源和业务范围,分页列出并处理全部相关文件,检查遗漏与版本,再用 evidence_bundle 保存文件清单、版本化导出和缺口,用确定性代码计算。依据包生成成功不代表输入总体完整或业务口径已批准。导出是服务状态目录中的 JSONL,不是原始二进制文件。artifact_path 是运行时返回给本地分析工具的绝对路径,不能将含该路径的完整工具轨迹直接公开发布。
更新、限制和性能
运行时默认每 30 秒核对文件元数据,仅解析新增或变化内容。每次证据读取会重新计算原文件 SHA256,故大文件读取仍有顺序 I/O 成本。关闭服务或休眠时不会继续更新,恢复启动后补查。原生操作系统文件事件监听不在本版中。
默认单文件 256 MiB、压缩包总展开体积 512 MiB、100000 个片段、每段 8000 字符、512 列、2000 PDF 页、解析超时 30 秒。超限返回错误,不静默截断。参数可配置,调整前应针对代表性文件验证内存和耗时。
Linux 解析子进程设置地址空间上限;macOS 和 Windows 没有相同的硬内存保证,依靠大小/展开限制和超时。长任务可取消和重启;重启复用已完成文件,单个中断文件重新解析,不承诺从中断行继续。
基准测试:
.venv/bin/python scripts/benchmark.py --files 1000 --rows 50000Windows 可将命令中的 .venv/bin/python 换成 .venv\Scripts\python.exe。生成的结果只在 .local/ 保存。用真实规模验收前,不应承诺任意文件“秒级准确”。
开发与发布
TypeScript MCP 适配层在 src/;Python 索引与解析在 python/team_drive/;Skill 在 skills/。业务来源与指标登记示例在 examples/,仅供业务层参考,不代表本工具已自动认证资料权威性。
公开发布前执行:
git add .
npm run check:public检查器扫描 Git 跟踪文本中的凭证模式、私人主目录、邮箱、意外二进制和运行状态文件;它不能替代人工审查。不要提交真实资料、配置、导出、工具完整轨迹、索引或缓存。源码使用 MIT 许可证;依赖保留各自许可证。
Available Tools
9 toolsteam_drive_cancelTeam drive: cancelA
Request cooperative cancellation of an indexing job. Already indexed files remain; resume by refreshing. Writes local job state only.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: 'cooperative' signals the cancellation may not take effect immediately, 'already indexed files remain' bounds the destructiveness, and 'writes local job state only' scopes the write. This complements destructiveHint=false and readOnlyHint=false well, though it doesn't say how progress/completion of the cancellation is observed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, and every clause carries distinct information (mechanism, data safety, write scope). No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the description covers non-destructiveness and resumability for a mutation tool. The remaining gap is operational: no pointer to team_drive_job_status for confirming the job actually stopped.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter job_id is never mentioned; schema coverage is 0% and the property carries no description. It is a self-evidently named identifier with type and length constraints visible in the schema, which keeps this at minimum-viable, but the description misses an easy win by not saying where a job_id comes from (e.g., team_drive_list or team_drive_job_status).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Request cooperative cancellation of an indexing job.' The phrase 'resume by refreshing' implicitly points at the team_drive_refresh sibling, but the tool is never contrasted explicitly with team_drive_job_status or team_drive_status, which an agent also has available for job tracking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage flow (cancel, then refresh to resume) rather than stating when to choose this over team_drive_job_status or team_drive_status. There is no explicit when-not guidance or statement of prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
team_drive_exportTeam drive: exportA
Export all indexed segments of an explicitly versioned file to a controlled local JSONL artifact for deterministic processing. Check coverage and parser warnings first. Does not modify the source.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | jsonl | |
| file_id | Yes | Opaque file_id returned by list/search, not a filesystem path. | |
| expected_version | Yes | Exact source_version returned by inspect/read. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond annotations: it writes to a local JSONL artifact (consistent with readOnlyHint=false) while not modifying the source (consistent with destructiveHint=false), and frames the output as deterministic. It does not mention idempotency behavior despite idempotentHint=false, which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with the core action front-loaded. The 'Check coverage and parser warnings first' clause is slightly terse but earns its place as a workflow hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the description covers the source-safety and versioning constraints. It stops short of clarifying where the artifact lands or how repeated exports behave, which would round out a file-writing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and both required params (file_id, expected_version) are documented in the schema. The description reinforces the versioning constraint via 'explicitly versioned file' but adds no syntax or format detail for the `format` constant. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: exports indexed segments of an explicitly versioned file into a local JSONL artifact. This distinguishes it from read/inspect by emphasizing 'all segments' and the versioned, deterministic nature. It does not name a sibling, so not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Check coverage and parser warnings first" implies using inspect/status before exporting, but the description does not name those tools or state when-not to use this one. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
team_drive_inspectTeam drive: inspectCRead-onlyIdempotent
Verify the current source hash and page through indexed structure groups with segment offsets, format limitations and version. A recent modification time alone does not establish official status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | Opaque continuation token from the previous response; keep all query parameters unchanged. | |
| file_id | Yes | Opaque file_id returned by list/search, not a filesystem path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation read-only, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds a meaningful behavioral caveat about official status and notes paging/offset/version inspection, but it does not explain return format or operational limits, so a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no obvious filler; the official-status caveat is compact and useful. The first sentence is dense with jargon but still front-loads the core inspection behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and strong read-only annotations, the description does not need to document return values. It still omits sibling routing and limit semantics, leaving the agent without full context for choosing and configuring the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: file_id and cursor are documented, while limit is not. The description's 'page through' wording loosely connects to pagination but does not explain limit semantics or add substantial meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies actions such as verifying the current source hash and paging through indexed structure groups with segment offsets, format limitations, and version. However, it never directly names the team-drive resource or clearly distinguishes this inspection from siblings like team_drive_status or team_drive_read, so the purpose remains somewhat opaque.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the caveat that a recent modification time does not establish official status. There is no explicit when-to-use guidance, prerequisites, or comparison to alternatives, leaving the agent to infer that this tool is for official-status verification rather than status, read, or search calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
team_drive_job_statusTeam drive: job_statusARead-onlyIdempotent
Read current or specified indexing job progress, coverage and failures. A completed scan can still contain failed or unsupported files.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so safety is covered; the description adds a genuinely useful interpretive caveat that a completed scan can still contain failed or unsupported files. That non-obvious behavior (success status != clean result) is real added value beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed by the one caveat that matters. Zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description covers what data the tool surfaces plus the failure caveat. Minor gap: nothing about how to get a job_id or any pagination limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One optional parameter with 0% schema description coverage; the schema only gives type and maxLength. The description partially compensates by framing the parameter as 'specified' vs 'current', implying omission returns the current job, but gives no guidance on where to obtain a job_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (indexing job progress, coverage, failures), which is clearly distinct from siblings like team_drive_cancel or team_drive_list. It doesn't explicitly name a sibling or contrast, so not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Read current or specified indexing job progress' implies the job_id is optional and you get the current job when omitted, which is useful implied usage. But there is no explicit when-to-use/when-not guidance versus team_drive_status or team_drive_refresh.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
team_drive_listTeam drive: listARead-onlyIdempotent
Page through the indexed file inventory, including unsupported and failed files. Use all pages for a scope manifest; verify versions before evidence use.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | Opaque continuation token from the previous response; keep all query parameters unchanged. | |
| prefix | No | Relative directory prefix within the configured source; never an absolute path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world, so safety is covered. The description adds genuinely non-obvious behavior: the inventory includes unsupported and failed files, and complete results require paging through all pages rather than stopping at the first response. It does not mention any auth or rate-limit characteristics, but that is a minor gap given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with what is enumerated and what it contains, followed by usage guidance. Dense but every clause carries information; 'scope manifest' and 'evidence use' are slightly domain-jargon-heavy but still interpretable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, for a paginated enumeration tool the description doesn't tell the agent when to stop paging or how ordering behaves, and says nothing about the undocumented limit parameter, leaving a few practical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: cursor and prefix are documented in-schema, limit is not. The description says 'page through' but adds no detail on limit semantics, prefix scoping, or cursor handling beyond what the schema already states. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: paging through the indexed file inventory, and clarifies the scope by noting it includes unsupported and failed files. It distinguishes from inspection/read siblings implicitly by being a bulk enumeration, but doesn't explicitly contrast with team_drive_search, which is the closest overlapping alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives downstream guidance ('use all pages for a scope manifest; verify versions before evidence use') which implies bulk enumeration over spot lookup, but never names team_drive_search or any other sibling as the alternative for targeted retrieval. When-not-to-use this tool 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.
team_drive_readTeam drive: readARead-onlyIdempotent
Read a bounded segment page with original locators and source version, verifying the current file. Optional selector: rows for CSV/TSV; sheet and rows for XLSX; page for PDF; slide for PPTX. start indexes selected segments. Continue with next_cursor and identical selector/expected_version; missing rows are not zero.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| start | No | ||
| cursor | No | Opaque continuation token from the previous response; keep all query parameters unchanged. | |
| file_id | Yes | Opaque file_id returned by list/search, not a filesystem path. | |
| selector | No | ||
| expected_version | No | Exact source_version returned by inspect/read. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds substantive behavior: read is version-guarded via expected_version, pagination is cursor-based, and the caveat 'missing rows are not zero' warns about absent vs zero values. It does not say what happens when expected_version mismatches (error vs stale read), which is the main remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with the core action, then selector mapping, then continuation semantics. No filler, but the telegraphic style ('missing rows are not zero') costs a little readability for the information it carries.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description covers the two things that most affect correct invocation: selector-per-file-type and cursor/version continuity. Version-mismatch behavior and the limit parameter remain undefined, which is a modest but real gap for a versioned-read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% and the description compensates well for the selector object by mapping keys to file types (rows for CSV/TSV, sheet+rows for XLSX, page for PDF, slide for PPTX) and explaining that start indexes selected segments rather than absolute rows. However it refers to 'rows' where the schema exposes row_start/row_end, leaving the exact pairing ambiguous, and says nothing about limit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reads a bounded segment page of a team-drive file, returning original locators and source version while verifying the current file. It is distinguishable from export/inspect by its paged-segment framing, though the phrasing ('original locators') is jargon-heavy and never names the resource type explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives continuation rules ('Continue with next_cursor and identical selector/expected_version') which is real procedural guidance, but never says when to choose this over team_drive_inspect, team_drive_export or team_drive_search. An agent must infer the boundary from the sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
team_drive_refreshTeam drive: refreshA
Queue a local inventory and incremental reindex job. Use force only to retry unchanged failures or deliberately rebuild the index. Source files remain read-only; poll job_status for completion.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare it is not read-only, not idempotent and not destructive; the description adds real context beyond that by saying it queues an asynchronous job, that source files remain read-only, and that completion must be polled via job_status. It does not say what happens if called repeatedly on the same drive (relevant given idempotentHint=false), so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, then the parameter caveat, then the safety and follow-up note. No sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the async job/polling model is covered. The remaining gap is what a reindex job actually affects locally and what the caller should do with the job handle besides polling, but nothing critical to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden for the single `force` parameter, and it does explain the specific conditions under which force should be set. It stops short of describing the default incremental behavior in mechanical terms (skipping unchanged files), so the semantics are clear but not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Queue a local inventory and incremental reindex job') and explicitly routes the agent to the sibling team_drive_job_status for polling, which is the most likely confusion point among the read-only siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit conditions for the only parameter ('Use force only to retry unchanged failures or deliberately rebuild the index'), which is genuine when-to-use guidance. It does not state when to prefer this over sibling operations like team_drive_inspect or team_drive_list, leaving that to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
team_drive_searchTeam drive: searchARead-onlyIdempotent
Find candidate files using names and indexed keyword content, including short Chinese terms and configured aliases. Search results are not authoritative or exhaustive business data; inspect/read before answering.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| cursor | No | Opaque continuation token from the previous response; keep all query parameters unchanged. | |
| prefix | No | Relative directory prefix within the configured source; never an absolute path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description earns credit by disclosing a non-obvious trait: results are 'not authoritative or exhaustive business data', which changes how the agent should treat hits. Minor gap on result set size/pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the core capability is front-loaded before the trust caveat. Every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and cursor/prefix semantics live in the schema. For a 4-param search tool the description covers purpose, match semantics and the verify-before-answering rule; only result-volume and paging expectations are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: cursor and prefix are already documented in the schema, while query and limit are not. The description partially compensates by explaining what query matches (names, indexed keywords, short Chinese terms, configured aliases), but says nothing about limit or paging behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find candidate files') and scopes it to names plus indexed keyword content. It implicitly separates itself from team_drive_list/inspect by calling results 'candidate' files, but never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing clause 'inspect/read before answering' tells the agent this tool is a first-pass filter that must be followed by team_drive_inspect or team_drive_read. Clear context, but no explicit condition for choosing search over team_drive_list, and no guidance on when to use prefix vs query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
team_drive_statusTeam drive: statusARead-onlyIdempotent
Check index coverage, current jobs, supported formats and configured limits. Counts describe the last inventory, not guaranteed current business totals.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and a closed world, so the safety profile is covered. Beyond that, the description adds a genuinely useful caveat that counts reflect the last inventory rather than live business totals, warning the agent against treating results as real-time. It could go further by saying what refreshes that inventory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the substantive capability list front-loaded and the staleness caveat following as a qualifier. Nothing in it restates the name or title redundantly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't document return values, and with no parameters the input side is trivially complete. What remains slightly thin is how the reported inventory gets refreshed, which matters given the sibling team_drive_refresh.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly spends no space on inputs and focuses on what the call yields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (check) and enumerates the concrete things returned: index coverage, current jobs, supported formats, configured limits. That is far more informative than the title's tautology. It does not, however, distinguish itself from team_drive_job_status, which plausibly covers the 'current jobs' portion, leaving overlap unresolved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The list of reported items implies a health/diagnostics use case, but there is no explicit statement of when to call this versus team_drive_job_status or when to follow up with team_drive_refresh. Usage must be inferred from the reported fields rather than stated.
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.
9 tool updates
v0.1.0- First observed
team_drive_cancel - First observed
team_drive_export - First observed
team_drive_inspect - First observed
team_drive_job_status - First observed
team_drive_list - First observed
team_drive_read - First observed
team_drive_refresh - First observed
team_drive_search - First observed
team_drive_status
TDQS
Scored across 9 tools
Each tool targets a distinct stage of the index lifecycle, and the descriptions actively draw boundaries (status = inventory totals/limits, job_status = live job progress; inspect = structure/hash verification, read = content segments). The only mild overlaps are status vs job_status and inspect vs read, both of which are clarified but still plausibly confusable at a glance.
All nine tools use a uniform team_drive_<action> snake_case pattern with predictable verbs (list, search, inspect, read, export, refresh, cancel). No mixed conventions or abbreviations; an agent can guess new tool names reliably.
Nine tools is well within the ideal range and each maps to a necessary distinct operation in the index-and-read workflow. Nothing feels redundant or bolted on.
The surface covers the full lifecycle: triggering/cancelling/refreshing indexing, monitoring job and overall status, discovering files via list and search, verifying via inspect, reading content pages, and exporting a versioned artifact. Sources are intentionally read-only, so the absence of write tools is correct rather than a gap.
Maintenance
Related MCP Connectors
Securely search and manage workspace context files for AI agents and teams.
Team docs served to AI agents over MCP - search, Markdown reads, version pinning, read audit.
Persistent docs and memory for AI agents — read, write, organize & search a shared workspace.
Read and search folders on your own computer with explicit consent. Files are never uploaded.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables Large Language Models to safely browse and interact with local file systems through secure directory listing, file reading, and content search capabilities. Built with comprehensive security controls and high-performance handling of large directories and files.1MIT
- FlicenseAqualityDmaintenanceEnables AI assistants to search, read, and retrieve context from local knowledge bases with full-text search, absolute paths, and section-level details.4-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to browse, search, and retrieve papers from a local research library with read-only access, supporting multiple formats and automatic indexing.2MIT
- AlicenseAqualityAmaintenanceEnables local AI agents to perform hybrid search (BM25 + vector) over privately indexed local files, including notes, PDFs, DOCX, source code, and OCR'd images. All indexing and retrieval stay on the machine with read-only, whitelist-scoped access.3MIT