README.md•5.52 kB
# Docswrite MCP Server
Docswrite created the first in the world MCP to write to Google Docs and turn the google docs into a perfectly formatted post on WordPress.
This server provides tools for working with Google Docs, Google Drive, and WordPress through Docswrite.
## Tools
### 1. Google Docs & Drive Tools
#### `google-docs-create`
Creates a new Google Docs document.
- `title`: The title of the new document
- `content`: The content to write to the document
#### `google-docs-update`
Updates an existing Google Docs document.
- `documentId`: The ID of the document to update
- `content`: The content to write to the document
- `replaceAll` (optional): Whether to replace all content (true) or append (false)
#### `google-docs-search`
Searches for Google Docs documents using Google Drive API.
- `query`: The search query to find documents
- Returns: List of documents with ID, name, creation time, and last modified time
#### `google-docs-delete`
Deletes a Google Docs document using Google Drive API.
- `documentId`: The ID of the document to delete
### 2. Docswrite Tools
#### `docswrite-publish`
Publishes content from Google Docs to WordPress.
- `google_docs_url` (required): URL of the Google Docs document
- `title` (optional): Title of the blog post
- `slug` (optional): URL slug for the post
- `tags` (optional): Comma-separated list of tags
- `categories` (optional): Comma-separated list of categories
- `state` (optional): Post state (draft/publish)
- `author` (optional): Author name
- `date` (optional): Publication date
- `excerpt` (optional): Post excerpt
- `post_type` (optional): Post type (post/page)
- `featured_image_url` (optional): URL of the featured image
- `featured_image_alt_text` (optional): Alt text for featured image
- `featured_image_caption` (optional): Caption for featured image
- `export_settings` (optional): Object containing:
- `compress_images`: Boolean
- `demote_headings`: Boolean
- `convert_to_webp`: Boolean
- `first_image_as_featured_image`: Boolean
- `add_no_follow_to_external_links`: Boolean
- `bold_as_strong`: Boolean
- `wp_content_editor`: String
- `newspack_settings` (optional): Object containing:
- `newspack_article_summary`: String
- `newspack_article_summary_title`: String
- `newspack_post_subtitle`: String
- `yoast_settings` (optional): Object containing:
- `yoast_focuskw`: String
- `yoast_metadesc`: String
- `yoast_title`: String
- `rankmath_settings` (optional): Object containing:
- `rank_math_focus_keyword`: String
#### `docswrite-job-status`
Checks the status of a Docswrite publishing job.
- `jobId`: The ID of the job to check
- `queueType` (optional): The type of queue (default: "post")
## Project Structure
### Source Files
- `src/index.ts`: Main server implementation and tool definitions
- Initializes MCP server
- Defines and registers all available tools
- Handles command-line arguments and environment variables
- `src/auth.ts`: Google OAuth2 authentication handling
- Manages OAuth2 flow for Google APIs
- Handles token storage and refresh
- Provides authorization for Google Docs and Drive APIs
- `src/google-docs.ts`: Google Docs and Drive API operations
- Document creation and manipulation
- Content updating and formatting
- Document search and deletion
- Error handling and response formatting
- `src/docswrite-request.ts`: Docswrite API integration
- Handles requests to Docswrite service
- Manages WordPress publishing queue
- Job status checking and monitoring
- `src/oauth-server.ts`: OAuth callback server implementation
- Handles OAuth2 callback from Google
- Manages token exchange
- Provides success/failure responses
- `src/config.ts`: Configuration management
- Environment variables
- API endpoints
- Default settings
- `src/utils.ts`: Utility functions
- Helper methods
- Common operations
- Shared types and interfaces
## Setup
1. Create a Google Cloud Project and enable:
- Google Docs API
- Google Drive API
2. Configure OAuth2 credentials:
- Create OAuth2 credentials in Google Cloud Console
- Download and save as `credentials.json` in project root
- Set redirect URI to `http://localhost:3000/oauth2callback`
3. Install dependencies:
```bash
npm install
```
4. Build the project:
```bash
npm run build
```
## Usage
Run the server with your Docswrite token:
```bash
node dist/index.js --docswriteToken=your-docswrite-token
```
## Example Flows
### 1. Create and Publish Flow
```json
// 1. Create a new Google Doc
{
"title": "My New Post",
"content": "This is the content of my post."
}
// 2. Publish to WordPress
{
"google_docs_url": "https://docs.google.com/document/d/your-doc-id/edit",
"title": "My New Post",
"state": "draft"
}
// 3. Check publishing status
{
"jobId": "your-job-id"
}
```
### 2. Search and Update Flow
```json
// 1. Search for documents
{
"query": "WordPress"
}
// 2. Update a document
{
"documentId": "your-doc-id",
"content": "Updated content",
"replaceAll": true
}
```
### 3. Document Management Flow
```json
// 1. Create document
{
"title": "Draft Post",
"content": "Initial draft"
}
// 2. Update content
{
"documentId": "your-doc-id",
"content": "Additional content",
"replaceAll": false
}
// 3. Publish to WordPress
{
"google_docs_url": "https://docs.google.com/document/d/your-doc-id/edit",
"title": "Final Post",
"state": "publish",
"categories": "tutorials",
"tags": "wordpress, google-docs"
}
```