MCP server implementation for Kibela API integration, enabling LLMs to interact with Kibela content.
[!TIP] This extension performs GraphQL schema introspection using the buildClientSchema, getIntrospectionQuery, and printSchema functions from the graphql package to reverse engineer Kibela's API. For more details, see her
- Search notes with advanced filters
- Get your latest notes
- Get note content and comments
- Manage groups and folders
- Like/unlike notes
- List users
- View note attachments
- View recently viewed notes
- Get notes by path
-
KIBELA_TEAM
: Your Kibela team name (required) -
KIBELA_TOKEN
: Your Kibela API token (required)
Add to your ~/.cursor/mcp.json
:
{
"mcpServers": {
"kibela": {
"command": "npx",
"args": ["-y", "@kiwamizamurai/mcp-kibela-server"],
"env": {
"KIBELA_TEAM": "YOUR_TEAM_NAME",
"KIBELA_TOKEN": "YOUR_TOKEN"
}
}
}
}
If you want to use docker instead
{
"mcpServers": {
"kibela": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"KIBELA_TEAM",
"-e",
"KIBELA_TOKEN",
"ghcr.io/kiwamizamurai/mcp-kibela-server:latest"
],
"env": {
"KIBELA_TEAM": "YOUR_TEAM_NAME",
"KIBELA_TOKEN": "YOUR_TOKEN"
}
}
}
}
Search Kibela notes with given query
- Input:
-
query
(string): Search query -
coediting
(boolean, optional): Filter by co-editing status -
isArchived
(boolean, optional): Filter by archive status -
sortBy
(string, optional): Sort by (RELEVANT, CONTENT_UPDATED_AT) -
userIds
(string[], optional): Filter by user IDs -
folderIds
(string[], optional): Filter by folder IDs
-
- Returns: List of matching notes with ID, title, URL, author, groups and more
Get your latest notes from Kibela
- Input:
-
limit
(number, optional): Number of notes to fetch (default: 15)
-
- Returns: List of your latest notes with author information
Get content and comments of a specific note
- Input:
-
id
(string): Note ID -
include_image_data
(boolean, optional): Whether to include image data URLs in the response (default: false)
-
- Returns: Full note content including HTML, comments, attachments, groups, folders and more
Get list of accessible groups
- Input: None
- Returns: List of groups with details like privacy settings and permissions
Get folders in a group
- Input:
-
groupId
(string): Group ID -
parentFolderId
(string, optional): Parent folder ID for nested folders
-
- Returns: List of folders with their notes and metadata
Get notes in a group that are not attached to any folder
- Input:
-
groupId
(string): Group ID
-
- Returns: List of notes with author information, sorted by last update time
Get notes in a folder
- Input:
-
folderId
(string): Folder ID -
limit
(number, optional): Number of notes to fetch (default: 100)
-
- Returns: List of notes with author information, sorted by last update time
Get list of users
- Input: None
- Returns: List of users with ID, account and real name
Like a note
- Input:
-
noteId
(string): Note ID
-
- Returns: Updated likers list
Unlike a note
- Input:
-
noteId
(string): Note ID
-
- Returns: Updated likers list
Get your recently viewed notes
- Input:
-
limit
(number, optional): Number of notes to fetch (max 15)
-
- Returns: List of recently viewed notes with author information
Get note content by its path or URL
- Input:
-
path
(string): Note path (e.g. '/group/folder/note') or full Kibela URL (e.g. 'https://team.kibe.la/notes/123') -
include_image_data
(boolean, optional): Whether to include image data URLs in the response (default: false)
-
- Returns: Full note content including HTML, comments, attachments, groups, folders and more
- Clone the repository
- Install dependencies:
npm install
For local development, update your ~/.cursor/mcp.json
:
{
"mcpServers": {
"kibela": {
"command": "node",
"args": ["path/to/mcp-kibela-server/dist/src/index.js"],
"env": {
"KIBELA_TEAM": "YOUR_TEAM_NAME",
"KIBELA_TOKEN": "YOUR_TOKEN"
}
}
}
}
npx @modelcontextprotocol/inspector node ./dist/src/index.js
and set environemtns
Build and run locally:
docker build -t mcp-kibela-server .
Then use this configuration:
{
"mcpServers": {
"kibela": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"KIBELA_TEAM",
"-e",
"KIBELA_TOKEN",
"mcp-kibela-server"
],
"env": {
"KIBELA_TEAM": "YOUR_TEAM_NAME",
"KIBELA_TOKEN": "YOUR_TOKEN"
}
}
}
}
For SSE transport, ensure the server URL is set to: http://localhost:3000/sse