loading…
Search for a command to run...
loading…
Provides AI assistants with direct access to self-hosted Docmost documentation through tools for listing spaces, searching content, and retrieving pages in Mark
Provides AI assistants with direct access to self-hosted Docmost documentation through tools for listing spaces, searching content, and retrieving pages in Markdown format. It facilitates seamless documentation lookup and content retrieval within MCP-compatible clients.
An MCP server that gives AI assistants direct access to your self-hosted Docmost documentation via its API.
Works with any MCP-compatible client, including:
| Tool | Description |
|---|---|
| list_spaces | List all available documentation spaces with names, slugs, and IDs |
| search_docs | Full-text search across all documentation, with optional space filtering |
| get_page | Retrieve full page content converted from ProseMirror JSON to Markdown |
| create_space | Create a new space with optional idempotent behavior |
| create_page | Create a page in a space (Markdown content) |
| update_page | Update page title/content (replace/append/prepend modes) |
| duplicate_page | Duplicate a page recursively |
| move_page | Move a page within a space or hierarchy |
| move_page_to_space | Move a page to another space |
| create_comment | Create a page comment (Markdown converted to ProseMirror) |
| resolve_comment | Resolve a comment with an optional note |
git clone https://github.com/aleksvin8888/local-docmost-mcp.git
cd docmost-mcp
python3 -m venv venv
source venv/bin/activate # Linux / macOS
# venv\Scripts\activate # Windows
pip install -r requirements.txt
This installs the core dependencies:
If you need a local Docmost instance for testing, you can use the provided Docker Compose setup:
cd container_docmost
docker compose up -d
This starts Docmost on http://localhost:3000 (port 3001 if configured in host mapping) along with Postgres and Redis.
Copy the example config and fill in your details:
cp config.example.json config.json
Edit config.json:
{
"base_url": "https://your-docmost-instance.example.com",
"email": "[email protected]",
"password": "your-password",
"timeout": 30,
"page_content_format": "markdown",
"create_space_conflict_policy": "return_existing",
"duplicate_page_conflict_policy": "auto_suffix",
"clear_parent_on_space_move": true
}
| Parameter | Description |
|---|---|
base_url |
URL of your Docmost instance (no trailing slash) |
email |
Email address for Docmost authentication |
password |
Password for Docmost authentication |
timeout |
HTTP request timeout in seconds |
page_content_format |
Page content format for create/update (default: markdown) |
create_space_conflict_policy |
return_existing or error on space name conflict |
duplicate_page_conflict_policy |
auto_suffix or error on title conflict |
clear_parent_on_space_move |
Clear parent when moving to another space (default: true) |
Note:
config.jsoncontains sensitive credentials and is excluded from version control via.gitignore.
source venv/bin/activate # if not already active
python docmost_client.py
Expected output:
=== Spaces ===
My Space (my-space) - 019a2a69-...
Another Space (another) - 019a5e21-...
...
=== Search 'example' ===
Example Page Title - abc123def
...
If you see your spaces and search results, the client is working correctly.
The server uses stdio transport, which is supported by all major MCP clients. Below are setup instructions for the most popular ones.
Choose one of the following options.
Important: Use absolute paths to both the Python binary inside
venvandmcp_server.py.
Add to ~/.claude/settings.json:
{
"mcpServers": {
"docmost": {
"command": "/absolute/path/to/docmost-mcp/venv/bin/python",
"args": ["/absolute/path/to/docmost-mcp/mcp_server.py"]
}
}
}
Create .claude/settings.json in your project root:
{
"mcpServers": {
"docmost": {
"command": "/absolute/path/to/docmost-mcp/venv/bin/python",
"args": ["/absolute/path/to/docmost-mcp/mcp_server.py"]
}
}
}
claude mcp add docmost \
-c "/absolute/path/to/docmost-mcp/venv/bin/python" \
-- /absolute/path/to/docmost-mcp/mcp_server.py
After adding the config, restart Claude Code or start a new session.
Add the server to your Claude Desktop config file:
~/.config/claude/claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json{
"mcpServers": {
"docmost": {
"command": "/absolute/path/to/docmost-mcp/venv/bin/python",
"args": ["/absolute/path/to/docmost-mcp/mcp_server.py"]
}
}
}
Restart Claude Desktop after saving the config.
Most MCP clients use the same configuration format. Add the server with:
/absolute/path/to/docmost-mcp/venv/bin/python/absolute/path/to/docmost-mcp/mcp_server.pyRefer to your client's documentation for the exact config file location and format.
Once the MCP server is connected, your AI assistant can use the following tools:
Show me all available documentation spaces
Search the documentation for "user permissions"
Find "API endpoints" in the Engineering space
Show me the full content of page with slug_id "abc123def"
Create a space named "Project Phoenix" with description "Q2 launch docs"
Create a page in space "SPACE_ID" titled "Kickoff Notes" with content "# Kickoff\n..."
Append "## Decisions\n- ..." to page "PAGE_ID"
Move page "PAGE_ID" under parent "PARENT_ID" and set position "after:SIBLING_ID"
Note:
move_pagepasses position hints through to the Docmost API. If your Docmost version requires fractional indices, you may need to adjust the API payload or client logic.
Add a comment to page "PAGE_ID": "Please review this section."
Resolve comment "COMMENT_ID" with note "Addressed in revision 3."
create_space: 409 conflicts return a clear error or the existing space (see create_space_conflict_policy).create_page: 404 for invalid space_id, 400 for invalid parent_page_id.update_page: 404 when page is missing; append/prepend requires content.duplicate_page: 404 when source page is missing; conflict handling depends on duplicate_page_conflict_policy.move_page: requires new_parent_page_id or new_position; rejects circular moves; invalid positions return 400.create_comment: 404 when page is missing; 401 if not authorized.resolve_comment: 404 when comment is missing; 403 if not authorized.Set-Cookie header.token.json for subsequent requests. If a request returns 401, the server automatically re-authenticates and retries.docmost-mcp/
├── .github/workflows/ # CI/CD pipelines (GitHub Actions)
├── container_docmost/ # Docker Compose setup for local testing
├── tests/ # Comprehensive unit test suite
├── mcp_server.py # MCP server (11 tools)
├── docmost_client.py # Docmost API client
├── requirements.txt # Python dependencies
├── config.example.json # Configuration template
├── config.json # Your credentials (not in git)
├── token.json # Cached JWT token (auto-generated)
├── .gitignore
└── README.md
The project includes a comprehensive test suite covering both the API client and the MCP server handlers.
# Install test dependencies
pip install pytest pytest-asyncio responses coverage pytest-cov
# Run all tests
PYTHONPATH=. pytest tests/ -v
# Run tests with coverage report
PYTHONPATH=. pytest tests/ --cov=. --cov-report=term-missing
GitHub Actions are configured in .github/workflows/ci.yml to automatically run tests on every push and pull request across multiple Python versions (3.10, 3.11, 3.12).
You can simulate the CI environment locally using act:
act push -W .github/workflows/ci.yml
config.json contains your credentials — never commit it to gittoken.json contains a JWT token — never commit it to git.gitignoreemail and password in config.json are correctbase_url points to your Docmost instancetoken.json and it will be recreated automatically on the next requestvenv/bin/python and mcp_server.pypip install -r requirements.txt)MIT
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"docmost-mcp-server": {
"command": "npx",
"args": []
}
}
}Web content fetching and conversion for efficient LLM usage.
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also