google-docs-mcp


Namegoogle-docs-mcp JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryMCP server for Google Docs
upload_time2025-08-29 15:37:38
maintainerNone
docs_urlNone
authorJag_k
requires_python>=3.13
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Google Docs MCP

MCP server for Google Docs.

## Features

- Tools:
  - `docs.read` — Read a Doc as Markdown or HTML
  - `comments.list` — List comments and replies
  - `comments.reply` — Reply to a comment (write gated)
  - `comments.resolve` — Resolve a comment (write gated)
  - `docs.insert_text` — Insert or append text (write gated)
  - `docs.from_url` — Normalize a Docs/Drive URL to IDs
  - `drive.export_file` — Export as PDF/DOCX/HTML
- Resources:
  - `mcp://token-info` — Safe token diagnostics (no secrets)
  - `gdoc-md://{document_id}` — Google Doc (Markdown)
  - `gdoc-html://{document_id}` — Google Doc (HTML)
- Prompts:
  - `comment_reply`, `summarize_doc`

## Quick Start

- Using CLI (recommended):
  - Authorize: `uvx google-docs-mcp auth authorize [-f|--force]`
  - Start server (default stdio): `uvx google-docs-mcp server [--transport stdio|http|sse|streamable-http]`
- Using local instance:
  - Authorize: `uv run google_docs_mcp auth authorize`
  - Start server: `uv run google_docs_mcp server`

## MCP Config (example)

Add to your MCP client configuration (installed CLI):

```toml
[mcp_servers.google_docs_mcp]
command = "uvx"
args = ["google-docs-mcp", "server"]
env = {
  WRITE_MODE = "disabled",
  GOOGLE__CLIENT_ID = "<id>",
  GOOGLE__CLIENT_SECRET = "<secret>",
}
```

## OAuth Setup

1) Create OAuth Desktop client in Google Cloud Console.
2) Provide `GOOGLE__CLIENT_ID` and `GOOGLE__CLIENT_SECRET` as env vars, or put a client file in the config dir and set `GOOGLE__OAUTH_CLIENT_FILE`.
3) Run `google-docs-mcp auth authorize` (or `uv run -m google_docs_mcp.cli auth authorize`) and approve scopes.

## Write Safety

- Controlled via `WRITE_MODE` env var. Default is `enabled`. Set `disabled` to block any write tools.

## Configuration

- This repo provides an auto-generated `Configuration.md` and a starter `.env.example`. They are the source of truth for all env vars and defaults.
- Common variables:
  - `WRITE_MODE`: `enabled` (default) or `disabled`
  - `LOG_LEVEL`: `DEBUG` | `INFO` (default) | `WARNING` | `ERROR` | `CRITICAL`
  - `GOOGLE__CLIENT_ID`, `GOOGLE__CLIENT_SECRET`, `GOOGLE__OAUTH_CLIENT_FILE`, `GOOGLE__SCOPES`
s
See `Configuration.md` for all environment variables and examples. A starter `.env.example` is provided.

## Notes

- Python 3.13, pydantic v2, ruff format, strict mypy.
- No tests by design; keep code small and documented.

## MCP Inspector

The MCP Inspector is a handy UI to explore and call tools.

Interactive setup (recommended):

- Start Inspector: `npx -y @modelcontextprotocol/inspector`
- In the connection dialog, set:
  - Transport: `stdio`
  - Command: `google-docs-mcp` (or `uv` for the alternative config above)
  - Args: `server`
  - Env (optional): add `WRITE_MODE=disabled` and your OAuth vars if not already stored
- Connect, then list tools and try `docs.from_url` and `docs.read`.

Tip: enable verbose logs with `LOG_LEVEL=DEBUG` in Env to diagnose issues.

Note on Drive permissions

- Some tools (comments and exports) call the Drive API. If you see a Drive 404 like "File not found" on an accessible Doc, re-authorize with Drive read-only scope:
  - Ensure `GOOGLE__SCOPES` includes `https://www.googleapis.com/auth/drive.readonly`.
  - Run `google-docs-mcp auth authorize` again to grant the new scope.

## Diagnostics

- Show token info (safe): `google-docs-mcp auth token-info`
- Revoke local token: `google-docs-mcp auth revoke`

## Security

- Required scopes: `https://www.googleapis.com/auth/documents` and `https://www.googleapis.com/auth/drive.readonly`.
- Secrets are never logged. The `mcp://token-info` resource exposes only safe metadata.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "google-docs-mcp",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.13",
    "maintainer_email": null,
    "keywords": null,
    "author": "Jag_k",
    "author_email": "Jag_k <30597878+jag-k@users.noreply.github.com>",
    "download_url": "https://files.pythonhosted.org/packages/80/c9/a4644712a519dc0b4e3a964c7ddb5516891218814cab1f9108576f2fcde7/google_docs_mcp-0.1.0.tar.gz",
    "platform": null,
    "description": "# Google Docs MCP\n\nMCP server for Google Docs.\n\n## Features\n\n- Tools:\n  - `docs.read` \u2014 Read a Doc as Markdown or HTML\n  - `comments.list` \u2014 List comments and replies\n  - `comments.reply` \u2014 Reply to a comment (write gated)\n  - `comments.resolve` \u2014 Resolve a comment (write gated)\n  - `docs.insert_text` \u2014 Insert or append text (write gated)\n  - `docs.from_url` \u2014 Normalize a Docs/Drive URL to IDs\n  - `drive.export_file` \u2014 Export as PDF/DOCX/HTML\n- Resources:\n  - `mcp://token-info` \u2014 Safe token diagnostics (no secrets)\n  - `gdoc-md://{document_id}` \u2014 Google Doc (Markdown)\n  - `gdoc-html://{document_id}` \u2014 Google Doc (HTML)\n- Prompts:\n  - `comment_reply`, `summarize_doc`\n\n## Quick Start\n\n- Using CLI (recommended):\n  - Authorize: `uvx google-docs-mcp auth authorize [-f|--force]`\n  - Start server (default stdio): `uvx google-docs-mcp server [--transport stdio|http|sse|streamable-http]`\n- Using local instance:\n  - Authorize: `uv run google_docs_mcp auth authorize`\n  - Start server: `uv run google_docs_mcp server`\n\n## MCP Config (example)\n\nAdd to your MCP client configuration (installed CLI):\n\n```toml\n[mcp_servers.google_docs_mcp]\ncommand = \"uvx\"\nargs = [\"google-docs-mcp\", \"server\"]\nenv = {\n  WRITE_MODE = \"disabled\",\n  GOOGLE__CLIENT_ID = \"<id>\",\n  GOOGLE__CLIENT_SECRET = \"<secret>\",\n}\n```\n\n## OAuth Setup\n\n1) Create OAuth Desktop client in Google Cloud Console.\n2) Provide `GOOGLE__CLIENT_ID` and `GOOGLE__CLIENT_SECRET` as env vars, or put a client file in the config dir and set `GOOGLE__OAUTH_CLIENT_FILE`.\n3) Run `google-docs-mcp auth authorize` (or `uv run -m google_docs_mcp.cli auth authorize`) and approve scopes.\n\n## Write Safety\n\n- Controlled via `WRITE_MODE` env var. Default is `enabled`. Set `disabled` to block any write tools.\n\n## Configuration\n\n- This repo provides an auto-generated `Configuration.md` and a starter `.env.example`. They are the source of truth for all env vars and defaults.\n- Common variables:\n  - `WRITE_MODE`: `enabled` (default) or `disabled`\n  - `LOG_LEVEL`: `DEBUG` | `INFO` (default) | `WARNING` | `ERROR` | `CRITICAL`\n  - `GOOGLE__CLIENT_ID`, `GOOGLE__CLIENT_SECRET`, `GOOGLE__OAUTH_CLIENT_FILE`, `GOOGLE__SCOPES`\ns\nSee `Configuration.md` for all environment variables and examples. A starter `.env.example` is provided.\n\n## Notes\n\n- Python 3.13, pydantic v2, ruff format, strict mypy.\n- No tests by design; keep code small and documented.\n\n## MCP Inspector\n\nThe MCP Inspector is a handy UI to explore and call tools.\n\nInteractive setup (recommended):\n\n- Start Inspector: `npx -y @modelcontextprotocol/inspector`\n- In the connection dialog, set:\n  - Transport: `stdio`\n  - Command: `google-docs-mcp` (or `uv` for the alternative config above)\n  - Args: `server`\n  - Env (optional): add `WRITE_MODE=disabled` and your OAuth vars if not already stored\n- Connect, then list tools and try `docs.from_url` and `docs.read`.\n\nTip: enable verbose logs with `LOG_LEVEL=DEBUG` in Env to diagnose issues.\n\nNote on Drive permissions\n\n- Some tools (comments and exports) call the Drive API. If you see a Drive 404 like \"File not found\" on an accessible Doc, re-authorize with Drive read-only scope:\n  - Ensure `GOOGLE__SCOPES` includes `https://www.googleapis.com/auth/drive.readonly`.\n  - Run `google-docs-mcp auth authorize` again to grant the new scope.\n\n## Diagnostics\n\n- Show token info (safe): `google-docs-mcp auth token-info`\n- Revoke local token: `google-docs-mcp auth revoke`\n\n## Security\n\n- Required scopes: `https://www.googleapis.com/auth/documents` and `https://www.googleapis.com/auth/drive.readonly`.\n- Secrets are never logged. The `mcp://token-info` resource exposes only safe metadata.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "MCP server for Google Docs",
    "version": "0.1.0",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8c8b4342cb791e3759e367750db0da05ca9205a029f114b69e7d730cd6330ed1",
                "md5": "1c1ef64e6ff569cca55d9b2d57031541",
                "sha256": "8340ac352534d907c24e63434877c7968d1a38f09d4061761b4a19efd1f70e13"
            },
            "downloads": -1,
            "filename": "google_docs_mcp-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1c1ef64e6ff569cca55d9b2d57031541",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.13",
            "size": 18602,
            "upload_time": "2025-08-29T15:37:36",
            "upload_time_iso_8601": "2025-08-29T15:37:36.845218Z",
            "url": "https://files.pythonhosted.org/packages/8c/8b/4342cb791e3759e367750db0da05ca9205a029f114b69e7d730cd6330ed1/google_docs_mcp-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "80c9a4644712a519dc0b4e3a964c7ddb5516891218814cab1f9108576f2fcde7",
                "md5": "a8a2ad4d7b697009d3ef66f5c477297a",
                "sha256": "9568415ca89720cbc498f5c9dfed7ca2fe82dc940b90a917600cd117be7fc912"
            },
            "downloads": -1,
            "filename": "google_docs_mcp-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "a8a2ad4d7b697009d3ef66f5c477297a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.13",
            "size": 14248,
            "upload_time": "2025-08-29T15:37:38",
            "upload_time_iso_8601": "2025-08-29T15:37:38.070050Z",
            "url": "https://files.pythonhosted.org/packages/80/c9/a4644712a519dc0b4e3a964c7ddb5516891218814cab1f9108576f2fcde7/google_docs_mcp-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-29 15:37:38",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "google-docs-mcp"
}
        
Elapsed time: 4.47413s