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.
Creates a new Google Docs document.
title
: The title of the new documentcontent
: The content to write to the document
Updates an existing Google Docs document.
documentId
: The ID of the document to updatecontent
: The content to write to the documentreplaceAll
(optional): Whether to replace all content (true) or append (false)
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
Deletes a Google Docs document using Google Drive API.
documentId
: The ID of the document to delete
Publishes content from Google Docs to WordPress.
google_docs_url
(required): URL of the Google Docs documenttitle
(optional): Title of the blog postslug
(optional): URL slug for the posttags
(optional): Comma-separated list of tagscategories
(optional): Comma-separated list of categoriesstate
(optional): Post state (draft/publish)author
(optional): Author namedate
(optional): Publication dateexcerpt
(optional): Post excerptpost_type
(optional): Post type (post/page)featured_image_url
(optional): URL of the featured imagefeatured_image_alt_text
(optional): Alt text for featured imagefeatured_image_caption
(optional): Caption for featured imageexport_settings
(optional): Object containing:compress_images
: Booleandemote_headings
: Booleanconvert_to_webp
: Booleanfirst_image_as_featured_image
: Booleanadd_no_follow_to_external_links
: Booleanbold_as_strong
: Booleanwp_content_editor
: String
newspack_settings
(optional): Object containing:newspack_article_summary
: Stringnewspack_article_summary_title
: Stringnewspack_post_subtitle
: String
yoast_settings
(optional): Object containing:yoast_focuskw
: Stringyoast_metadesc
: Stringyoast_title
: String
rankmath_settings
(optional): Object containing:rank_math_focus_keyword
: String
Checks the status of a Docswrite publishing job.
jobId
: The ID of the job to checkqueueType
(optional): The type of queue (default: "post")
-
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
-
Create a Google Cloud Project and enable:
- Google Docs API
- Google Drive API
-
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
-
Install dependencies:
npm install
- Build the project:
npm run build
Run the server with your Docswrite token:
node dist/index.js --docswriteToken=your-docswrite-token
// 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"
}
// 1. Search for documents
{
"query": "WordPress"
}
// 2. Update a document
{
"documentId": "your-doc-id",
"content": "Updated content",
"replaceAll": true
}
// 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"
}