A Model Context Protocol (MCP) server that connects AI models to GROWI wiki content. Enables LLMs to search and retrieve information from your organization's knowledge base for accurate, context-aware responses. Supports connections to multiple GROWI apps.
- 🔍 GROWI page search and retrieval
- 📝 Page management
- 🏷️ Tag management
- 📋 Comment management
- 🔗 Share link management
- GROWI v7.3.x or higher recommended
- Some features are also available starting from GROWI v7.2.5 and later
- GROWI API
Supports simultaneous connections to multiple GROWI apps. Each app is configured using numbered environment variables.
{
"mcpServers": {
"growi": {
"command": "npx",
"args": ["@growi/mcp-server"],
"env": {
"GROWI_APP_NAME_1": "main",
"GROWI_BASE_URL_1": "https://your-growi-instance.com",
"GROWI_API_TOKEN_1": "your_growi_api_token"
}
}
}
}
{
"mcpServers": {
"growi": {
"command": "npx",
"args": ["@growi/mcp-server"],
"env": {
"GROWI_DEFAULT_APP_NAME": "staging",
"GROWI_APP_NAME_1": "production",
"GROWI_BASE_URL_1": "https://wiki.example.com",
"GROWI_API_TOKEN_1": "token_for_production",
"GROWI_APP_NAME_2": "staging",
"GROWI_BASE_URL_2": "https://wiki-staging.example.com",
"GROWI_API_TOKEN_2": "token_for_staging",
"GROWI_APP_NAME_3": "development",
"GROWI_BASE_URL_3": "https://wiki-dev.example.com",
"GROWI_API_TOKEN_3": "token_for_development"
}
}
}
}
searchPages
- Search pages by keywordscreatePage
- Create a new pageupdatePage
- Update an existing pagedeletePages
- Delete pages (bulk operation supported)duplicatePage
- Duplicate a page (including child pages)renamePage
- Change page name and pathgetPage
- Get a page datagetPageInfo
- Get detailed page informationgetRecentPages
- Get list of recently updated pagesgetPageListingRoot
- Get root page listgetPageListingChildren
- Get child pages of specified pagepageListingInfo
- Get summary information of page listingspublishPage
/unpublishPage
- Set page publish/unpublish status
getPageTag
- Get tags of a pageupdateTag
- Update tags of a pagegetTagList
- Get list of tagssearchTags
- Search tags
getComments
- Get comments of a page
listRevisions
- Get page edit historygetRevision
- Get details of a specific revision
createShareLink
- Create a share linkgetShareLinks
- Get share links of a pagedeleteShareLinks
- Delete share linksdeleteShareLinkById
- Delete a specific share link
getUserRecentPages
- Get recent pages of a specific user
Variable Name | Required | Description | Default Value |
---|---|---|---|
GROWI_APP_NAME_{N} |
✅ | GROWI app identifier name (N is an integer) | - |
GROWI_BASE_URL_{N} |
✅ | Base URL of GROWI instance (N is an integer) | - |
GROWI_API_TOKEN_{N} |
✅ | GROWI API access token (N is an integer) | - |
GROWI_DEFAULT_APP_NAME |
❌ | Default app name to use | First configured app |
- Use integer values (1, 2, 3...) for each app configuration (sequential numbering is not required)
- Combination of
GROWI_APP_NAME_N
,GROWI_BASE_URL_N
, andGROWI_API_TOKEN_N
is required - App names, base URLs, and API tokens must each be unique
- If
GROWI_DEFAULT_APP_NAME
is omitted, the first configured app becomes the default - The app specified in
GROWI_DEFAULT_APP_NAME
will be used as the default app when the LLM does not explicitly include an app name in the prompt
- Node.js 18 or higher
- pnpm (recommended)
- GROWI instance (for development and testing)
- Clone the repository
git clone https://github.com/growilabs/growi-mcp-server.git
cd growi-mcp-server
- Install dependencies
pnpm install
- Set up environment variables
cp .env.example .env.local
# Edit .env.local to enter GROWI connection information
- Start the development server
# Test with MCP CLI
pnpm dev:cli
# Develop with MCP Inspector
pnpm dev:inspect
# Build
pnpm build
# Lint
pnpm lint
# Run tests
pnpm test
# Run tests with coverage
pnpm test:coverage
# Run in production
pnpm start
- Build
pnpm build
- MCP Server Configuration (Single App)
{
"mcpServers": {
"growi": {
"command": "node",
"args": ["/Users/username/projects/growi-mcp-server/dist/index.js"],
"env": {
"GROWI_APP_NAME_1": "main",
"GROWI_BASE_URL_1": "https://your-growi-instance.com",
"GROWI_API_TOKEN_1": "your_growi_api_token"
}
}
}
}
- MCP Server Configuration (Multiple Apps)
{
"mcpServers": {
"growi": {
"command": "node",
"args": ["/Users/username/projects/growi-mcp-server/dist/index.js"],
"env": {
"GROWI_DEFAULT_APP_NAME": "production",
"GROWI_APP_NAME_1": "production",
"GROWI_BASE_URL_1": "https://wiki.example.com",
"GROWI_API_TOKEN_1": "production_token",
"GROWI_APP_NAME_2": "staging",
"GROWI_BASE_URL_2": "https://wiki-staging.example.com",
"GROWI_API_TOKEN_2": "staging_token"
}
}
}
}
Note
Set the absolute path to the built output in "args"
- Check connectivity
curl -v http://app:3000/_api/v3/healthcheck
- If the
app
hostname cannot be resolved, check the devcontainer network and verify it includesgrowi_devcontainer_default
- The
.devcontainer/devcontainer.json
file sets--network
inrunArgs
, so rebuilding the container should apply this setting - To add manually, run the following:
- Run
docker network
command on the docker host machine
docker network connect growi_devcontainer_default growi-mcp-server-dev
- Run
- The
Contributions to the project are welcome!
- Issue Reports: Bug reports and feature requests via GitHub Issues
- Pull Requests:
- Fork and create a branch
- Implement changes
- Add tests (if applicable)
- Create a pull request
- Coding Standards: Use Biome
- Commit Messages: Follow Conventional Commits
This project is released under the MIT License.
- GROWI Official Site - Open source wiki platform
- Model Context Protocol - Standard protocol for AI and tool integration
- GROWI SDK TypeScript - GROWI API TypeScript SDK
- FastMCP - MCP server development framework
Notice
This MCP server is under development. APIs may change without notice. Please test thoroughly before using in production environments.