Skip to main content
Glama

Google Docs MCP Server

by Gurgeron
README.md6.63 kB
# Google Docs MCP Server This is a Model Context Protocol (MCP) server that allows you to connect to Google Docs through Claude. With this server, you can: - List all Google Docs in your Drive - Read the content of specific documents - Create new documents - Update existing documents - Search for documents - Delete documents ## Prerequisites - Node.js v16.0.0 or later - Google Cloud project with the Google Docs API and Google Drive API enabled - OAuth 2.0 credentials for your Google Cloud project ## Setup 1. Clone this repository and navigate to the project directory: ```bash git clone https://github.com/yourusername/MCP-Google-Doc.git cd MCP-Google-Doc ``` 2. Install dependencies: ```bash npm install ``` 3. Create an OAuth 2.0 client ID in the Google Cloud Console: - Go to the [Google Cloud Console](https://console.cloud.google.com/) - Create a new project or select an existing one - Enable the Google Docs API and Google Drive API - Go to "APIs & Services" > "Credentials" - Click "Create Credentials" > "OAuth client ID" - Select "Desktop app" for the application type - Download the JSON file and save it as `credentials.json` in your project directory > **Important**: The `credentials.json` and `token.json` files contain sensitive information and are excluded from version control via `.gitignore`. Never commit these files to your repository. 4. Build the project: ```bash npm run build ``` 5. Run the server: ```bash npm start ``` The first time you run the server, it will prompt you to authenticate with Google. Follow the on-screen instructions to authorize the application. This will generate a `token.json` file that stores your access tokens. ## Security Considerations - **Credential Security**: Both `credentials.json` and `token.json` contain sensitive information and should never be shared or committed to version control. They are already added to the `.gitignore` file. - **Token Refresh**: The application automatically refreshes the access token when it expires. - **Revoking Access**: If you need to revoke access, delete the `token.json` file and go to your [Google Account Security settings](https://myaccount.google.com/security) to remove the app from your authorized applications. ## Connecting to Claude for Desktop To use this server with Claude for Desktop: 1. Edit your Claude Desktop configuration file: - On macOS: `~/Library/Application Support/Claude/claude_desktop_config.json` - On Windows: `%APPDATA%\Claude\claude_desktop_config.json` 2. Add the following to your configuration: ```json { "mcpServers": { "googledocs": { "command": "node", "args": ["/absolute/path/to/build/server.js"] } } } ``` Replace `/absolute/path/to/build/server.js` with the actual path to your built server.js file. 3. Restart Claude for Desktop. ## User Interface The Google Docs MCP server features a user-friendly, conversational interface that: - Presents document information in a clean, readable format - Uses natural language responses rather than raw API data - Formats dates in a human-readable way - Provides helpful follow-up questions after actions - Never exposes sensitive data like OAuth tokens This interface styling is designed to match other Claude MCP integrations like Notion, providing a consistent and pleasant user experience. ## Development ### Project Structure ``` google-docs-integration/ ├── build/ # Compiled JavaScript files ├── src/ # TypeScript source code │ └── server.ts # Main server implementation ├── .gitignore # Git ignore file ├── credentials.json # OAuth 2.0 credentials (not in version control) ├── package.json # Project dependencies and scripts ├── README.md # Project documentation ├── token.json # OAuth tokens (not in version control) └── tsconfig.json # TypeScript configuration ``` ### Adding New Features To add new features to the MCP server: 1. Modify the `src/server.ts` file to implement new functionality 2. Build the project with `npm run build` 3. Test your changes by running `npm start` ## Available Resources - `googledocs://list` - Lists all Google Docs in your Drive - `googledocs://{docId}` - Gets the content of a specific document by ID ## Available Tools - `create-doc` - Creates a new Google Doc with the specified title and optional content - `update-doc` - Updates an existing Google Doc with new content (append or replace) - `insert-text` - Directly inserts text into a document without Notion or other integrations - `search-docs` - Searches for Google Docs containing specific text - `delete-doc` - Deletes a Google Doc by ID ## Available Prompts - `create-doc-template` - Helps create a new document based on a specified topic and writing style - `analyze-doc` - Analyzes the content of a document and provides a summary ## Usage Examples Here are some example prompts you can use with Claude once the server is connected: - "Show me a list of all my Google Docs" - "Create a new Google Doc titled 'Meeting Notes' with the content 'Topics to discuss: ...'" - "Update my document with ID '1abc123def456' to add this section at the end: ..." - "Search my Google Docs for any documents containing 'project proposal'" - "Delete the Google Doc with ID '1abc123def456'" - "Create a formal document about climate change" - "Analyze the content of document with ID '1abc123def456'" ## Troubleshooting If you encounter authentication issues: 1. Delete the `token.json` file in your project directory 2. Run the server again to trigger a new authentication flow If you're having trouble with the Google Docs API: 1. Make sure the API is enabled in your Google Cloud Console 2. Check that your OAuth credentials have the correct scopes ## Contributing 1. Fork the repository 2. Create a feature branch: `git checkout -b feature/your-feature-name` 3. Commit your changes: `git commit -am 'Add some feature'` 4. Push to the branch: `git push origin feature/your-feature-name` 5. Submit a pull request ## License MIT ## Environment Variables Create a `.env` file at the project root (or export the variables in your shell) with the following keys: ```env # OAuth 2.0 client credentials – **JSON string** of the credentials file GOOGLE_DOCS_CREDENTIALS_JSON={...} # OAuth token – **JSON string** returned by the OAuth consent flow GOOGLE_DOCS_TOKEN_JSON={...} ``` If these variables are set, the server will **not** attempt to read `credentials.json` or `token.json` from disk.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Gurgeron/MCPtRY'

If you have feedback or need assistance with the MCP directory API, please join our Discord server