- Wikijs Mcp Server
Wikijs Mcp Server
Wiki.js MCP Server
Model Context Protocol (MCP) server for Wiki.js integration via GraphQL API.
📖 Description
This project provides an MCP server for interacting with Wiki.js through GraphQL API. MCP (Model Context Protocol) is an open protocol developed by Anthropic that enables AI models to safely interact with external services and tools.
The server provides a unified interface for working with Wiki.js that can be used by various AI agents and tools supporting MCP.
✨ Features
📄 Page Management
- Get Wiki.js pages by ID
- Get page content
- Get list of pages with sorting
- Smart page search (by content, titles, and metadata)
- Create new pages
- Update existing pages
- Delete pages
👥 User Management
- Get list of users
- Search users
- Create new users
- Update user information
🔧 Group Management
- Get list of user groups
- Manage group membership
🌐 Transports
- STDIO: for editor integration (Cursor, VS Code)
- HTTP: for web integrations and API access
🚀 Quick Start
⚡ Want to start right now? See 5-Minute Guide
Installation
- Clone the repository:
git clone https://github.com/heAdz0r/wikijs-mcp-server.git
cd wikijs-mcp-server
- Run automatic setup:
npm run setup
This script will automatically:
- Install dependencies
- Create
.envfile based onexample.env - Build TypeScript code
Configuration
- Edit the
.envfile and specify your Wiki.js settings:
# Port for HTTP MCP server
PORT=3200
# Base URL for Wiki.js (without /graphql)
WIKIJS_BASE_URL=http://localhost:3000
# Wiki.js API token
WIKIJS_TOKEN=your_wikijs_api_token_here
- Edit the
.cursor/mcp.jsonfile and replaceyour_wikijs_api_token_herewith your real token
How to get Wiki.js API token:
- Log into Wiki.js admin panel
- Go to "API" section
- Create a new API key with necessary permissions
- Copy the token to
.envAND to.cursor/mcp.json
📦 Running
HTTP server (recommended)
# Main HTTP server with Cursor MCP support
npm start
# or
npm run start:http
TypeScript version
npm run start:typescript
STDIO mode (for direct editor integration)
npm run server:stdio
Development mode
npm run dev
Testing
npm test
🔌 Editor Integration
Cursor IDE
⚠️ IMPORTANT: Without
.cursor/mcp.jsonfile, Cursor integration will NOT work!
Quick Setup
- Start HTTP server:
npm start
- Automatic configuration setup:
npm run setup:cursor
- Edit
.cursor/mcp.jsonand specify your real token:
{
"mcpServers": {
"wikijs": {
"transport": "http",
"url": "http://localhost:3200/mcp",
"events": "http://localhost:3200/mcp/events",
"cwd": ".",
"env": {
"WIKIJS_BASE_URL": "http://localhost:3000",
"WIKIJS_TOKEN": "your_real_wiki_js_token_here"
}
}
}
}
Critical Parameters
transport: "http"- mandatory HTTP transporturl: "http://localhost:3200/mcp"- exact URL for JSON-RPCevents: "http://localhost:3200/mcp/events"- URL for Server-Sent EventsWIKIJS_TOKEN- real Wiki.js API token (not placeholder!)
Verification
After setup, tools with mcp_wikijs_* prefix should appear in Cursor:
mcp_wikijs_list_pages()mcp_wikijs_search_pages()mcp_wikijs_get_page()- And others...
VS Code (with MCP extension)
Add to VS Code settings:
{
"mcp.servers": {
"wikijs": {
"command": "node",
"args": ["mcp_wikijs_stdin.js"],
"cwd": "/path/to/wikijs-mcp"
}
}
}
🛠 Development
Project Structure
wikijs-mcp-server/
├── src/ # TypeScript source code
│ ├── server.ts # HTTP server
│ ├── tools.ts # Tool definitions
│ ├── api.ts # Wiki.js API client
│ ├── types.ts # Data types
│ └── schemas.ts # Zod validation schemas
├── scripts/ # Management scripts
│ ├── setup.sh # Initial setup
│ ├── start_http.sh # Start HTTP server
│ ├── start_typescript.sh # Start TypeScript version
│ ├── setup_cursor_mcp.sh # Cursor setup
│ ├── test.sh # Run tests
│ ├── test_mcp.js # Test HTTP server
│ ├── test_mcp_stdin.js # Test STDIN server
│ └── README.md # Scripts documentation
├── .cursor/ # Cursor MCP configuration
│ └── mcp.json # MCP configuration file (CRITICALLY IMPORTANT!)
├── dist/ # Compiled TypeScript code
├── *.js # Main JS files
├── example.env # Environment configuration example
├── package.json # Project metadata
└── README.md # Main documentation
🚨 CRITICALLY IMPORTANT:
.cursor/mcp.jsonfile is required for Cursor integration!
Available Scripts
Setup and Build
npm run setup- Initial project setupnpm run build- Build TypeScript projectnpm run setup:cursor- Setup Cursor integration
Running Servers
npm start/npm run start:http- HTTP MCP server (port 3200)npm run start:typescript- TypeScript version of server (port 8000)npm run server:stdio- STDIO version for direct integration
Development and Testing
npm run dev- Development mode with hot reloadnpm run demo- Capability demonstrationnpm test- Run testsnpm run client- Run demo clientnpm run http-client- Run HTTP client
API Endpoints (HTTP mode)
GET /tools- List of available toolsGET /health- Server health checkPOST /mcp- MCP JSON-RPC endpoint
Usage Examples
// Get list of pages
{
"method": "list_pages",
"params": {
"limit": 10,
"orderBy": "TITLE"
}
}
// Create new page
{
"method": "create_page",
"params": {
"title": "New Page",
"content": "# Title\n\nContent...",
"path": "folder/new-page"
}
}
🐛 Troubleshooting
Connection Issues
- Ensure Wiki.js is running and accessible
- Check WIKIJS_BASE_URL correctness
- Verify API token is valid
MCP Issues
- Check Node.js version (requires >=18.0.0)
- Ensure all dependencies are installed
- Check server logs for errors
📚 Documentation
- Scripts Documentation - description of all management scripts
- Changelog - release and update log
- License - project usage terms
🤝 Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📄 License
This project is distributed under the MIT License. See LICENSE file for details.
🔗 Useful Links
- Wiki.js - Official Wiki.js website
- Model Context Protocol - MCP specification
- Anthropic - MCP protocol developer
- GraphQL - Query language for APIs
⭐ Support
If this project helped you, please give it a ⭐ on GitHub!
Have questions? Create an Issue or refer to the documentation.
🆕 New Feature: Automatic URLs
Search Stages
Search works in 4 stages:
- GraphQL API search - fast search through indexed content
- Metadata search - search in titles, paths, and page descriptions
- HTTP content search - deep search in page content via HTTP
- Forced verification - fallback search on known pages
Usage Examples
Content Search
{
"method": "search_pages",
"params": {
"query": "ZELEBOBA",
"limit": 5
}
}
Result:
[
{
"id": 103,
"path": "test/test-page",
"title": "Test Page",
"description": "Test page to demonstrate Wiki.js API capabilities",
"url": "http://localhost:8080/en/test/test-page"
}
]
Title Search
{
"method": "search_pages",
"params": {
"query": "find me",
"limit": 3
}
}
Result:
[
{
"id": 108,
"path": "test/test-gemini-mcp",
"title": "Test Gemini MCP Page (find me)",
"url": "http://localhost:8080/en/test/test-gemini-mcp"
}
]
New Search Benefits
- ✅ Finds pages even with limited API permissions - uses HTTP fallback
- ✅ Multi-level search - combines multiple strategies
- ✅ Content search - finds text inside pages
- ✅ Metadata search - titles, paths, descriptions
- ✅ Fallback methods - guaranteed results for known pages
- ✅ Correct URLs - all results contain ready-to-use links
Technical Details
HTML Content Processing
The system automatically extracts text from HTML using:
- Search in
<template slot="contents">block - HTML tags and entities cleanup
- Fallback to full page content
With limited GraphQL API permissions, the system:
- Switches to HTTP method for content retrieval
- Uses direct requests to HTML pages
- Preserves all page metadata
Server Config
{
"mcpServers": {
"wikijs": {
"command": "docker",
"transport": "http",
"url": "http://localhost:3200/mcp",
"events": "http://localhost:3200/mcp/events",
"cwd": "/path/to/your/wikijs-mcp-server",
"env": {
"WIKIJS_BASE_URL": "https://wiki.example.com",
"WIKIJS_TOKEN": "WikiJS-API-TOKEN"
}
}
}
}