007c676ff22d3d00e38683e5a896d903617ea01c
Integrates StreamableHTTP natively into the MCP server instead of using StdioServerTransport. Adds Node.js cluster support so multiple workers can handle concurrent MCP clients simultaneously. Changes: - src/index.ts: replace StdioServerTransport with StreamableHTTPServerTransport + Node.js cluster (primary forks N workers, each worker handles HTTP requests on :8080/mcp with a serializing mutex) - Dockerfile: multi-stage build (node:22-slim builder + runtime) - .gitea/workflows/docker-build.yml: CI/CD pipeline — on push to main, builds and pushes Docker image to gitea.p-lao.com registry Environment variables: - MCP_WORKERS (default: 4) — number of cluster workers Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Docmost MCP Server
A Model Context Protocol (MCP) server for Docmost, enabling AI agents to search, create, modify, and organize documentation pages and spaces.
Features
Core Management
create_page: Smart creation tool. Creates content (via import) AND handles hierarchy (nesting under a parent) in one go.update_page: Update a page's content and/or title. Updates are performed via real-time collaboration (WebSocket).delete_page/delete_pages: Delete single or multiple pages at once.move_page: Organize pages hierarchically by moving them to a new parent or root.
Exploration & Retrieval
search: Full-text search across spaces with optional space filtering (query,spaceId).get_workspace: Get information about the current Docmost workspace.list_spaces: View all spaces within the current workspace.list_groups: View all groups within the current workspace.list_pages: List pages within a space (ordered byupdatedAtdescending).get_page: Retrieve full content and metadata of a specific page.
Comments
list_comments: List all comments on a page with content converted to Markdown.get_comment: Retrieve a single comment by ID.create_comment: Create a page-level or inline comment. Content is provided as Markdown and automatically converted to ProseMirror JSON. Supports replies viaparentCommentId.update_comment: Update an existing comment's content (creator only).delete_comment: Delete a comment (creator or space admin only).check_new_comments: Check for new comments across a space (or a page subtree) since a given timestamp. Efficiently filters byupdatedAtbefore fetching comments.
Technical Details
- Automatic Markdown Conversion: Page content is automatically converted from Docmost's internal ProseMirror/TipTap JSON format to clean Markdown for easy agent consumption. Supports all Docmost extensions including callouts, task lists, math blocks, embeds, and more.
- Smart Import API: Uses Docmost's import API to ensure clean Markdown-to-ProseMirror conversion when creating pages.
- Child Preservation: The
update_pagetool creates a new page ID but effectively simulates an in-place update by reparenting existing child pages to the new version. - Pagination Support: Automatically handles pagination for large datasets (spaces, pages, groups).
- Filtered Responses: API responses are filtered to include only relevant information, optimizing data transfer for agents.
Installation
npm install
npm run build
Configuration
This server requires the following environment variables to be set:
DOCMOST_API_URL: The full URL to your Docmost API (e.g.,https://docs.example.com/api).DOCMOST_EMAIL: The email address for authentication.DOCMOST_PASSWORD: The password for authentication.
usage with Claude Desktop / generic MCP Client
Add the following to your MCP configuration (e.g. claude_desktop_config.json):
{
"mcpServers": {
"docmost-local": {
"command": "node",
"args": ["./build/index.js"],
"env": {
"DOCMOST_API_URL": "http://localhost:3000/api",
"DOCMOST_EMAIL": "test@docmost.com",
"DOCMOST_PASSWORD": "test"
}
}
}
}
Development
# Watch mode
npm run watch
# Build
npm run build
License
MIT
Languages
TypeScript
99.4%
Dockerfile
0.6%