OMOS-MCP
OMOS-MCP
MCP 服务器让 AI 代理(Claude、ChatGPT、Cursor 等)读取 OMOS Shared Drive 中的项目文档来回答问题 — 每个答案都引用源文件并附带 Google Drive 链接
支持的 Drive 结构:
OMOS/
├── Project A/
│ ├── Project Overview/
│ ├── Timeline/
│ ├── Design/
│ │ ├── System Flow/
│ │ ├── DB/
│ │ └── API/
│ └── BRD/
└── Project B/ ...工具
工具 | 说明 |
| 索引整个 Drive:所有项目 + 所有文件,附带 ID 和链接(代理始终先调用此工具) |
| 全文搜索整个 Drive,可按项目/部分限定范围 |
| 以文本形式读取文件 — Google Docs/Sheets/Slides、PDF、.docx、.xlsx、md/text 以及图片(直接将图片发送给代理查看) |
| 立即重建索引(默认缓存 5 分钟) |
代理按顺序搜索:过滤 Project Name → 未找到则查看 Project Overview 并向用户确认 → 继续询问是否涉及 Timeline | BRD | Design (System Flow / DB / API) → 问题过于宽泛时会反问以缩小范围(已内置于服务器指令中)
Related MCP server: brkt-gdrive-mcp
一次性设置:Service Account
服务器通过 service account 访问 Drive(无需每个人登录):
进入 console.cloud.google.com → 创建新项目(或使用现有项目)
APIs & Services → Library → 搜索 Google Drive API → 点击 Enable
IAM & Admin → Service Accounts → Create Service Account → 设置名称如
omos-mcp→ 点击 Create(可跳过角色步骤,无需授予任何权限)进入创建的 service account → 标签页 Keys → Add Key → Create new key → JSON → 密钥文件将下载
复制 service account 的电子邮件(格式为
omos-mcp@<project>.iam.gserviceaccount.com)并共享 Shared Drive / OMOS 文件夹,授予该邮箱 Viewer 权限找到根 OMOS 的 folder id:在浏览器中打开文件夹,查看 URL
https://drive.google.com/drive/folders/<这是 id>
环境变量
变量 | 说明 |
| root OMOS 的文件夹 ID(来自步骤 6)— 必填 |
| 整个 JSON 密钥文件的内容,或指向文件的路径 — 必填 |
| (HTTP 模式)客户端必须发送的 bearer token |
| 索引缓存过期时间(秒),默认 300 |
| (HTTP 模式)为 Claude.ai / ChatGPT 网页版启用 OAuth 模式 |
| (HTTP 模式)监听端口,默认 8000 |
本地运行
先安装 uv(curl -LsSf https://astral.sh/uv/install.sh | sh)
1) 设置 .env(服务器从仓库根目录自动加载):
cp .env.example .env编辑 .env,填入 OMOS_ROOT_FOLDER_ID 和密钥文件路径(例如将密钥文件放在 ./service-account.json — 已加入 gitignore)
2) 连接 Claude Code(stdio):
claude mcp add omos -- uv run --directory "/path/to/OMOS-MCP" omos-mcpClaude Desktop / Cursor / Windsurf — 在 MCP 配置中添加:
{
"mcpServers": {
"omos": {
"command": "uv",
"args": ["run", "--directory", "/path/to/OMOS-MCP", "omos-mcp"]
}
}
}3) 测试: 向代理提问 "OMOS 中有哪些项目?" — 应返回项目列表及链接
(可选)在本地作为 HTTP 服务器运行: 在 .env 中启用 OMOS_AUTH_TOKEN,然后
uv run omos-mcp-http端点位于 http://localhost:8000/mcp,连接方式:
claude mcp add --transport http omos http://localhost:8000/mcp -H "Authorization: Bearer <OMOS_AUTH_TOKEN>"部署为 MCP link(Render)
将此仓库推送到 GitHub(已包含
Dockerfile+render.yaml)Render → New → Blueprint → 选择此仓库
在仪表盘中设置环境变量:
OMOS_ROOT_FOLDER_ID= root OMOS 的文件夹 IDGOOGLE_SERVICE_ACCOUNT_JSON= 整个 JSON 密钥文件的内容(直接粘贴)OMOS_AUTH_TOKENRender 自动生成 → 复制分发给团队
部署完成后 → 端点为
https://<app>.onrender.com/mcp
用户连接:
claude mcp add --transport http omos https://<app>.onrender.com/mcp \
-H "Authorization: Bearer <OMOS_AUTH_TOKEN>"Cursor / VS Code:在 MCP 配置中添加 URL 和 header Authorization: Bearer <token>
供 Claude.ai / ChatGPT(网页版)使用 — OAuth
网页客户端没有输入 header 的地方,必须通过 OAuth 提供商(如 WorkOS AuthKit,免费支持最多 100 万用户):
注册 workos.com → 启用 AuthKit → 设置登录方式并限制仅团队成员
仪表盘 → Connect → Configuration → 开启 Client ID Metadata Document 和 Dynamic Client Registration
添加 Resource Indicator =
https://<app>.onrender.com(不带/mcp)在 Render 上额外设置 3 个环境变量:
OAUTH_ISSUER= AuthKit 域名,OAUTH_AUDIENCE=https://<app>.onrender.com,PUBLIC_URL=https://<app>.onrender.com用户:Claude.ai → Settings → Connectors → Add custom connector → 输入
https://<app>.onrender.com/mcp→ 通过 WorkOS 登录
OAuth 模式和 bearer token 可以共存 — 网页使用 OAuth,CLI 仍可使用 token
测试转换器
uv run python test_convert.pyAvailable Tools
4 toolsomos_indexA
Get the full index of the OMOS drive: every project and its files (with file ids and links). Use this whenever the user asks about any internal project, BRD, timeline, design, system flow, DB, API, or เอกสารโปรเจค — ALWAYS call this first, then filter by Project Name before drilling into Timeline / BRD / Design (System Flow, DB, API).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It explicitly states the tool returns the full index of every project with file IDs and links, and implies a read-only operation (no side effects). It does not mention performance, caching, or rate limits, but the zero-parameter nature and output schema presence mitigate the need for deeper behavioral detail. The description adds meaningful context beyond the empty schema and missing annotations.
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?
The description is concise at three sentences with no wasted words. The first sentence clearly states the core purpose and what is returned. The second sentence provides specific when-to-use guidance. The third sentence prescribes the correct invocation sequence. Every sentence adds distinct value and the critical usage instructions are front-loaded.
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?
Given the tool has zero parameters and an output schema, the description covers all necessary aspects: what the tool returns (full index of projects and files with IDs and links), when to use it (specific user query scenarios), and how to use it correctly (call first, then filter by project name before drilling into details). The presence of an output schema reduces the need to describe return values, and the description's guidance is fully self-contained.
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 input schema has zero parameters and 100% schema coverage, meaning there is nothing for the description to add about parameters. The description correctly stays silent on parameters (there are none) and instead focuses on what the tool returns and when to use it. A slight deduction because the description could explicitly state 'no arguments required' to confirm no parameters are needed.
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 starts with a clear verb+resource combination: 'Get the full index of the OMOS drive' and immediately specifies the exact content: every project and its files with IDs and links. It thoroughly distinguishes itself from siblings like 'omos_search' by stating it returns the full unfiltered index, while also providing specific use cases where this tool should be used first.
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 gives explicit when-to-use guidance: 'whenever the user asks about any internal project, BRD, timeline, design, system flow, DB, API, or เอกสารโปรเจค.' It also provides a sequence: 'ALWAYS call this first, then filter by Project Name before drilling into Timeline / BRD / Design.' This effectively differentiates from omos_search (which presumably handles the filtering step) and sets clear expectations for invocation order.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omos_readA
Read a file from the OMOS drive as text (Google Docs/Sheets/Slides, PDF, docx, xlsx, markdown/text) or as an image (png/jpg). The response starts with a citation block (file name, path, link) — always include that citation in your answer.
Args: file_id: the Drive file id from omos_index or omos_search
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: it returns text or image content, starts with a citation block that must be included in answers, and accepts a Drive file ID from omos_index or omos_search. Since no annotations are provided, the description carries the full burden and provides solid behavioral context without contradictions.
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?
The description is short and well-structured: a one-sentence overview of what the tool does (including format types), then a specific instruction about the citation block, and finally a clear parameter description. Every sentence adds value, and the most critical information is front-loaded.
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?
Given the tool has only one parameter, limited schema, and no output schema, the description is complete for its simplicity. It explains the input, output format (including citation), and supported file types. A small gap is not explaining how the output type (text vs image) is determined (e.g., by file extension or a parameter).
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 description explains that the file_id parameter should come from omos_index or omos_search, adding meaning beyond the schema's simple type/required. With 0% schema description coverage, the description must compensate, and it does so effectively by specifying the source of valid file IDs.
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 clearly states the tool reads a file from the OMOS drive and specifies supported formats (text types and image types). The verb 'read' combined with the resource 'file from OMOS drive' provides a specific, actionable purpose that distinguishes it from sibling tools like omos_index (indexing) and omos_search (searching).
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 gives clear context for when to use this tool (to read a file), and implicitly distinguishes it from omos_index and omos_search which are for listing or searching. However, it does not explicitly state when NOT to use it or mention alternatives for non-file operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omos_refreshA
Rebuild the drive index so newly added projects/files show up immediately (the index is otherwise cached for a few minutes).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the caching side effect and the rebuild action, but does not mention potential costs (e.g., performance impact), whether it is asynchronous, or any required permissions. The behavior is generally clear but lacks some depth expected for an unannotated tool.
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?
The description is a single, well-structured sentence that immediately conveys the action and purpose. No redundant words; every part earns its place.
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?
For a simple parameterless tool with an output schema, the description covers the core functionality and caching behavior. It could be improved by noting typical usage scenarios (e.g., after uploads) or safe call frequency, but it is largely complete.
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?
There are no parameters; schema description coverage is 100% by default. The description does not need to add parameter details. Baseline score of 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?
The description explicitly states the action ('Rebuild the drive index') and the effect ('so newly added projects/files show up immediately'). It distinguishes itself from sibling tools (index, search, read) by focusing on cache invalidation.
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 provides clear context on when to use the tool—after adding projects/files to bypass caching. It mentions the default caching behavior ('otherwise cached for a few minutes'), but does not explicitly state when not to use it or list alternative tools for similar purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omos_searchA
Full-text search across the OMOS drive. Returns matching files with project path and link; use omos_read on the ids to read content.
Args: query: keyword or phrase (searches file content and names) project: optional exact project name from omos_index to narrow the search section: optional section name (e.g. 'BRD', 'Timeline', 'Design', 'DB') to narrow further
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| project | No | ||
| section | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It accurately describes the search behavior, confirms it returns files with path and link, and mentions it searches both content and names. Could mention pagination or limits but not required for basic transparency.
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 paragraphs with minimal waste; first sentence immediately states purpose, then parameter list is clean. Every sentence adds value and is front-loaded.
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?
Given output schema exists, description need not detail return values; it still says 'Returns matching files with project path and link'. Parameter descriptions are thorough, and sibling references (omos_read, omos_index) provide complete context for usage.
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%, but description fully compensates by explaining each parameter's purpose: query searches content/names, project references omos_index for exact name, section gives concrete examples (BRD, Timeline, etc.). This adds significant meaning beyond the bare 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?
Clearly states verb 'search' and resource 'OMOS drive', specifies full-text search, and explicitly directs to use omos_read for content retrieval, effectively distinguishing from 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?
Provides explicit guidance to use omos_read after search and mentions omos_index for project names, though it does not explicitly state when not to use this tool or describe alternatives beyond omos_read.
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.
4 tool updates
v0.1.0- First observed
omos_index - First observed
omos_read - First observed
omos_refresh - First observed
omos_search
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: omos_index provides the full index, omos_search performs full-text search with optional filters, omos_refresh rebuilds the index, and omos_read reads file content. There is no overlap or ambiguity between them.
All tools follow a consistent 'omos_<verb>' pattern (index, search, refresh, read). The naming is predictable and uniform, making it easy for an agent to understand the action each tool performs.
With 4 tools, the set is well-scoped for a drive retrieval server. Each tool addresses a necessary function (listing, searching, refreshing, reading) without being too few or excessive. The count matches the domain's core operations.
The tool surface covers the full read lifecycle for the OMOS drive: obtaining the index, searching, refreshing for updates, and reading file content. No obvious gaps exist for a retrieval-focused server; all necessary operations are present.
Maintenance
Related MCP Connectors
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
MCP server for generating rough-draft project plans from natural-language prompts.
Read-only MCP server exposing a user ORANO library to their own AI agent.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables users to query documents from Google Drive using AI assistance, providing tools for searching vector databases and generating answers based on document content.-
- FlicenseNot gradedqualityBmaintenanceMCP server for semantic search over Google Drive documents, enabling AI tools to search, list, and retrieve document content.-
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to interact with Google Docs, Sheets, and Drive using the user's own Google account.-
- AlicenseNot gradedqualityDmaintenanceMCP server that reads Google Docs and Google Sheets content for AI assistants like Claude.8 npm1MIT