Docs MCP Server
by nic01asFr
README.md
<img src="https://docs.numerique.gouv.fr/assets/icon-docs-dsfr.svg" width="48" alt="Icรดne DSFR">
# Docs MCP Server
<div align="center">
**๐ MCP Server for Docs**
*Complete API integration with 31 tools including document content editing via Yjs*
[](https://badge.fury.io/py/docs-mcp-server)
[](https://pypi.org/project/docs-mcp-server/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/astral-sh/ruff)
[](https://github.com/nic01asFr/docs-mcp-server/actions)
[](https://codecov.io/gh/nic01asFr/docs-mcp-server)
[](https://github.com/PyCQA/bandit)
[](https://mypy.readthedocs.io/)
[๐ Documentation](https://nic01asFr.github.io/docs-mcp-server/) โข
[๐ Installation](#-installation) โข
[๐ ๏ธ Usage](#%EF%B8%8F-usage) โข
[๐ค Contributing](CONTRIBUTING.md) โข
[๐ Changelog](CHANGELOG.md)
</div>
---
The **Docs MCP Server** provides seamless integration between Claude and [Docs](https://docs.fr) instances through the Model Context Protocol (MCP). It enables Claude to interact with collaborative documents, manage access permissions, and leverage AI-powered features directly within the Docs ecosystem.
## โจ Key Features
### ๐ **Complete Document Management**
- ๐ Create, read, update, and delete documents
- ๐ณ Navigate hierarchical document structures
- โ๏ธ Move and reorganize documents in trees
- ๐ Duplicate documents with or without permissions
- โญ Manage favorites and restore from trashbin
### โ๏ธ **Document Content Editing** *(NEW in v0.2.0)*
- ๐ Read document content as plain text
- โ๏ธ Update documents with text or markdown
- ๐ Apply AI transformations directly to documents
- ๐ Translate document content automatically
- ๐ง Yjs (CRDT) format support for collaborative editing
### ๐ฅ **Advanced Access Control**
- ๐ Grant and revoke user permissions (reader, editor, administrator, owner)
- ๐ง Send email invitations to external users
- ๐ Search for users across the platform
- ๐ฎ Manage pending invitations
### ๐ค **AI-Powered Features**
- โ๏ธ Text correction and grammar checking
- ๐ Content rephrasing and summarization
- ๐ Multi-language translation support
- โก Custom AI transformations
### ๐ **Version History**
- ๐ Browse document version history
- ๐ Retrieve specific version content
- ๐ Track changes over time
### ๐ **MCP Integration**
- **31 Tools**: Comprehensive set of operations including content editing
- **4 Resources**: Real-time data access
- **Type Safety**: Full TypeScript-style type hints
- **Error Handling**: Robust error management
- **Yjs Support**: Native collaborative document format
## ๐ Installation
### From PyPI (Recommended)
```bash
pip install docs-mcp-server
```
### From Source (Development)
```bash
git clone https://github.com/nic01asFr/docs-mcp-server.git
cd docs-mcp-server
pip install -e \".[dev]\"
```
## โ๏ธ Configuration
### Environment Variables
```bash
export DOCS_BASE_URL=\"https://your-docs-instance.com\"
export DOCS_API_TOKEN=\"your-api-token\"
export DOCS_TIMEOUT=30 # Optional: request timeout in seconds
export DOCS_MAX_RETRIES=3 # Optional: maximum retry attempts
```
### Verify Configuration
```bash
docs-mcp-server --config-check
```
Output:
```
โ Configuration loaded successfully
Base URL: https://docs.example.com
Token: ****-token-****-1234
Timeout: 30s
Max retries: 3
โ API connection successful
Authenticated as: user@example.com
User ID: user-123
```
## ๐ ๏ธ Usage
### Command Line
```bash
# Start with environment variables
docs-mcp-server
# Start with explicit configuration
docs-mcp-server --base-url https://docs.example.com --token your-token
# Start with custom server name
docs-mcp-server --name my-docs-server
# Start with verbose logging
docs-mcp-server --verbose
```
### Python Module
```bash
python -m docs_mcp_server
```
### Programmatic Usage
```python
import asyncio
from docs_mcp_server import DocsServer
async def main():
server = DocsServer(
base_url=\"https://docs.example.com\",
token=\"your-token\",
server_name=\"my-docs-server\"
)
await server.run()
if __name__ == \"__main__\":
asyncio.run(main())
```
## ๐ Available Tools
<details>
<summary><strong>๐ Document Operations (6 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `docs_list_documents` | List documents with filtering and pagination |
| `docs_get_document` | Retrieve a specific document by ID |
| `docs_create_document` | Create new documents (root or child) |
| `docs_update_document` | Update document title and content |
| `docs_delete_document` | Soft delete documents |
| `docs_restore_document` | Restore deleted documents |
</details>
<details>
<summary><strong>โ๏ธ Document Content Editing (4 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `docs_get_content_text` | Read document content as plain text |
| `docs_update_content` | Update document with text or markdown |
| `docs_apply_ai_transform` | Apply AI transformation and save to document |
| `docs_apply_ai_translate` | Translate and save document content |
</details>
<details>
<summary><strong>๐ณ Tree Operations (4 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `docs_move_document` | Move documents in tree structure |
| `docs_duplicate_document` | Create document copies |
| `docs_get_children` | Get immediate child documents |
| `docs_get_tree` | Get complete tree structure |
</details>
<details>
<summary><strong>๐ Access Management (7 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `docs_list_accesses` | List document permissions |
| `docs_grant_access` | Grant user access to documents |
| `docs_update_access` | Modify existing permissions |
| `docs_revoke_access` | Remove user access |
| `docs_invite_user` | Send email invitations |
| `docs_list_invitations` | List pending invitations |
| `docs_cancel_invitation` | Cancel invitations |
</details>
<details>
<summary><strong>๐ค User & Content Management (8 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `docs_search_users` | Search users by email |
| `docs_get_current_user` | Get current user information |
| `docs_add_favorite` | Add documents to favorites |
| `docs_remove_favorite` | Remove from favorites |
| `docs_list_favorites` | List favorite documents |
| `docs_list_trashbin` | List deleted documents |
| `docs_list_versions` | List document version history |
| `docs_get_version` | Get specific version content |
</details>
<details>
<summary><strong>๐ค AI Features (2 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `docs_ai_transform` | AI text transformation (correct, rephrase, summarize) |
| `docs_ai_translate` | AI translation services |
</details>
## ๐ Resources
| Resource | Description |
|----------|-------------|
| `docs://documents` | All accessible documents |
| `docs://favorites` | User's favorite documents |
| `docs://trashbin` | Soft-deleted documents |
| `docs://user` | Current user information |
## ๐ก Examples
### Basic Document Operations
```python
from docs_mcp_server import create_client
async def example():
async with create_client() as client:
# Create a document
doc = await client.create_document(
title=\"Project Proposal\",
content=\"# Project Overview\\n\\nThis is our new project...\"
)
# Grant access to a colleague
await client.grant_access(
document_id=doc.id,
user_email=\"colleague@example.com\",
role=\"editor\"
)
# Use AI to improve content
improved = await client.ai_transform(
document_id=doc.id,
text=\"This text needs improvement\",
action=\"rephrase\"
)
print(f\"Improved text: {improved.result}\")
```
### MCP Server Integration
```python
import asyncio
from docs_mcp_server import DocsServer
async def main():
server = DocsServer(
base_url=\"https://docs.example.com\",
token=\"your-token\",
server_name=\"company-docs\"
)
await server.run()
asyncio.run(main())
```
### Error Handling
```python
from docs_mcp_server import DocsAPIClient, DocsError, DocsNotFoundError
async def robust_example():
try:
async with DocsAPIClient() as client:
doc = await client.get_document(\"non-existent-id\")
except DocsNotFoundError:
print(\"Document not found\")
except DocsError as e:
print(f\"API error: {e.message}\")
except Exception as e:
print(f\"Unexpected error: {e}\")
```
## ๐งช Development
### Setup Development Environment
```bash
git clone https://github.com/nic01asFr/docs-mcp-server.git
cd docs-mcp-server
pip install -e \".[dev]\"
pre-commit install
```
### Run Tests
```bash
# Run all tests
pytest
# Run with coverage
pytest --cov=docs_mcp_server --cov-report=html
# Run specific test file
pytest tests/test_client.py -v
```
### Code Quality
```bash
# Linting and formatting
ruff check src/ tests/
ruff format src/ tests/
# Type checking
mypy src/docs_mcp_server
# Security scanning
bandit -r src/
safety check
```
### Documentation
```bash
# Serve documentation locally
mkdocs serve
# Build documentation
mkdocs build
```
## ๐ญ Production Ready
### โ
**Quality Assurance**
- ๐งช Comprehensive test suite with >95% coverage
- ๐ Type safety with mypy and pydantic
- ๐งน Code quality with ruff and pre-commit hooks
- ๐ก๏ธ Security scanning with bandit and safety
- ๐ Performance monitoring and optimization
### ๐ **Security**
- ๐ Secure API token management
- ๐ HTTPS-only communication
- โ
Input validation and sanitization
- ๐พ No sensitive data storage
- ๐ Comprehensive security documentation
### ๐ **CI/CD**
- ๐ Automated testing on multiple Python versions (3.10-3.12)
- ๐ฆ Automated PyPI publishing on releases
- ๐ Security vulnerability scanning
- ๐ Performance regression testing
### ๐ **Documentation**
- ๐ Comprehensive API documentation
- ๐ก Usage examples and tutorials
- ๐ค Contribution guidelines
- ๐ Security policy
- ๐ Detailed changelog
## ๐ Links
- ๐ฆ [PyPI Package](https://pypi.org/project/docs-mcp-server/)
- ๐ [Documentation](https://nic01asFr.github.io/docs-mcp-server/)
- ๐ [GitHub Repository](https://github.com/nic01asFr/docs-mcp-server)
- ๐ [Issue Tracker](https://github.com/nic01asFr/docs-mcp-server/issues)
- ๐ฌ [Discussions](https://github.com/nic01asFr/docs-mcp-server/discussions)
## ๐ License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## ๐ค Contributing
We welcome contributions! Please see our [Contributing Guidelines](CONTRIBUTING.md) for details.
### Contributors
<a href=\"https://github.com/nic01asFr/docs-mcp-server/graphs/contributors\">
<img src=\"https://contrib.rocks/image?repo=nic01asFr/docs-mcp-server\" />
</a>
## ๐ Acknowledgments
- [Model Context Protocol](https://github.com/modelcontextprotocol) for the MCP specification
- [La Suite Numรฉrique](https://lasuite.numerique.gouv.fr/) and the DINUM team for creating the Docs platform
- All contributors and users of this project
---
<div align=\"center\">
**Made with โค๏ธ by nic01asFr**
*Enabling seamless AI integration with collaborative documentation*
</div>
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues