Kiro MCP Integration with BookStack
Kiro MCP Integration with ClaudeBookStack
Overview
This page documents how to connect your BookStack instance to Kiro is— Amazon's agentic AI-poweredAI IDE that uses Claude (via Amazon Bedrock)— as itsan AIMCP backbone.server. KiroOnce natively supports the Model Context Protocol (MCP), allowing it to connect to external tools and data sources during agentic coding sessions. This integration enablesconfigured, Kiro's AI agentsagent tocan interactsearch withyour APIs,documentation, databases,read documentationpage systems,content for context, create new pages, and otherupdate servicesexisting —ones allwithout from withinleaving your development workflow.environment.
The integration uses the bookstack-mcp npm package as a local MCP server. Kiro connects to it via .kiro/settings/mcp.json and treats BookStack as a tool it can invoke during any agentic coding session.
What isYou Kiro?Can Do
KiroWith wasBookStack launched by AWS in July 2025 as a spec-driven agentic IDE — a VS Code-based environment that brings structure to AI-assisted development. Rather than treating AI as a simple autocomplete tool, Kiro operates through a methodology of structured specifications, turning natural language promptswired into comprehensiveKiro, technicalyou planscan beforesay writingthings a single line of code.
Kiro's three core concepts are:like:
SpecsSearch docs during coding:A—structured"Findthree-fileoursysteminternal(requirements.md,APIdesign.md,spectasks.md)inthatBookStackdefinesbeforewhatimplementingtothisbuild, how to build it, and what steps are needed. Written using EARS (Easy Approach to Requirements Syntax).client."- Read pages for context — "Read the BookStack page on our DB2 schema before writing this migration."
- Generate documentation automatically — "After finishing this module, create a BookStack page summarizing how it works."
- Update existing pages — "Update the Linux hardening page with the new sysctl values we just tested."
- Keep docs in sync via Agent Hooks
: Automated triggers that fire predefined agent actions when IDE events occur—suchConfigureasKiro to auto-generatingupdatedocumentationaonBookStacksave,pagerunningwheneverqualityacheckskeyon commit, or updating tests when codefile changes. Steering Files: Persistent project knowledge stored in.kiro/steering/as Markdown files. Steering gives Kiro's agents durable context about your tech stack, coding standards, and project structure that survives across sessions.
What is MCP?
Model Context Protocol (MCP) is an open standard developed by Anthropic that allows AI models like Claude to connect to external tools and data sources. MCP servers act as bridges between the AI and external services, exposing capabilities (tools) that the AI can invoke during a session.
In Kiro, MCP servers extend what Kiro's agents can do. With MCP configured, Kiro can:
Search and retrieve documentation from external knowledge basesRead and write files via filesystem serversQuery GitHub repositories, issues, and pull requestsInteract with REST APIs and databasesFetch live web content for research during a coding taskConnect to any MCP-compliant service (Slack, Jira, BookStack, etc.)
Claude as Kiro's AI Backend
Kiro uses Claude (licensed through Amazon Bedrock) as its underlying AI model. Users can select between:
Claude Sonnet 4.5— the default model, optimized for reliable advanced coding and reasoningAuto— a mixed-model mode that uses multiple frontier models for intent detection and caching to balance quality, latency, and cost
Because Kiro routes through Amazon Bedrock, it benefits from AWS's enterprise security, data residency controls, and compliance posture — making it suitable for organizations with strict data handling requirements.
Prerequisites
- Kiro IDE installed (
macOS Intel/Apple Silicon,macOS, Windows, or Linux) — kiro.dev - An AWS account (required for Kiro
authentication and Bedrock access)authentication) - Node.js
18+18 or newer (for runningnpm/npx-based MCP servers locally) Thethe MCP serverpackage(s)viayou want to connect to Kironpx)AnyA running BookStack instance with APIcredentialsaccessorenabled- A
requiredBookStackbyAPIthoseTokenMCPIDserversand Token Secret (see below)
Setup
1.Step Locate1 — Generate a BookStack API Token
- Log into BookStack as an admin (or as the user you want Kiro to act as)
- Click your profile avatar in the top-right → Edit Profile
- Scroll down to the API Tokens section and click Create Token
- Give it a name (e.g.,
Kiro MCP) and optionally set an expiry date - Click Save — copy the Token ID and Token Secret immediately. The secret is only shown once.
Step 2 — Create the Kiro MCP ConfigurationConfig File
Kiro loadsreads MCP server configurationdefinitions from a JSON file at one of two locations:
- Workspace-level:
.kiro/settings/mcp.json(checked intoinside yourrepo;project root — applies only to that projectonly) - User-level:
~/.kiro/settings/mcp.json(in your home directory — appliesglobally acrossto allprojects)projects
Workspace-levelCreate settingsor take precedence over user-level settings when both exist.
2. Configure an MCP Server
Editedit the appropriate file and add mcp.jsonyour server definition. Kiro uses the samefollowing JSON structure as other MCP-compatible hosts:block:
{
"mcpServers": {
"bookstack": {
"command": "npx",
"args": ["-y", "bookstack-mcp"],
"env": {
"BOOKSTACK_BASE_URL": "${BOOKSTACK_BASE_URL}",
"BOOKSTACK_TOKEN_ID": "${BOOKSTACK_TOKEN_ID}",
"BOOKSTACK_TOKEN_SECRET": "${BOOKSTACK_TOKEN_SECRET}"
}
},
"github": {
"command"BOOKSTACK_ENABLE_WRITE": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"true"
}
}
}
}
UseThe ${ syntax tells Kiro to VARIABLE_NAME}VAR_NAME}referenceread the value from your shell environment at startup. Export the three variables ratherin thanyour hardcodingshell secretsprofile directly(e.g., ~/.zshrc or ~/.bashrc):
export BOOKSTACK_BASE_URL="https://bookstack.x1a.net"
export BOOKSTACK_TOKEN_ID="your-token-id-here"
export BOOKSTACK_TOKEN_SECRET="your-token-secret-here"
bookstack-mcp server ships in read-only mode. You must explicitly set BOOKSTACK_ENABLE_WRITE=true in the 3.to Remote MCP Servers
Kiro also supports remote MCP servers via HTTP/SSE. Use the url property instead of command:
{
"mcpServers": {
"my-remote-server": {
"url": "https://mcp.example.com/sse",
"headers": {
"Authorization": "Bearer ${MY_API_TOKEN}"
}
}
}
}
4. Restrict Dangerous Tools
You can preventallow Kiro fromto invokingcreate specificor MCPupdate toolspages. usingOmit theit if disabledToolsproperty:
{only "mcpServers":want {read "filesystem":access.
{
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"],
"disabledTools": ["delete_file", "move_file"]
}
}
}
5.Step 3 — Reload Kiro
AfterSave savingthe mcp.json, file. Kiro willdetects detectconfiguration changes automatically — the change and make the MCPBookStack tools will be available to agents in your next agent chat or spec session.session Nowithout a full restartrestart. isIf typicallytools required.don't appear, open the MCP panel in Kiro settings to check for any startup errors from the server process.
Common MCP Servers forWhat Kiro Can Do with BookStack
Once connected, Kiro's agent has access to the following BookStack tools:
|
No | ||
|
No | ||
/ |
No | ||
get_chapters / | |
No | |
|
No | ||
|
No | ||
|
Yes | ||
update_page |
Update an existing page's title or content | Yes | |
create_shelf / update_shelf |
Manage book shelves | Yes | |
create_attachment |
Attach a link to a page | Yes |
A full community directory of available MCP servers is listed in the official Kiro documentation at kiro.dev/docs/mcp/servers/.
Example UseKiro CasesPrompts
PullSearch documentationdocs whilebefore writingimplementing codesomething
"
ImplementSearch BookStack for our internal REST API authentication spec, then scaffold aBookStack APIPython clientinthatPython.implementsUse the BookStack MCP to look up the current API spec and generate a working client class.it."
Kiro willcalls invokesearch_content with your query, reads the BookStackmatching MCPpage, tothen read your internal API docs and useuses that content as context to generate accurate implementation code — no copy-pastingpaste required.needed.
Spec-drivenGenerate featurea withdocumentation GitHubpage contextfrom code
"Read
GitHubtheissuedb_backup.sh#142scriptandIgeneratejust wrote, then create aKiroBookStackspecpagefor implementingin therequestedLinuxfeature.book titled 'Automated DB Backup Script' documenting how it works."
Kiro callsreads the GitHubfile, MCP to fetchdrafts the issue bodydocumentation, and comments, then generatescalls requirements.mdcreate_page, with the appropriate design.mdbook_id,. andThe page tasks.mdgroundedappears in theBookStack actual issue text.immediately.
QueryUpdate a databasepage toafter writemaking a migrationchanges
"
InspectI've changed thecurrentfirewallschemarulesofon theusersiSeriestable— find the iSeries network configuration page inour dev databaseBookStack andwriteupdatea migrationit toaddreflectantheaudit_lognewcolumn.port allowlist."
Kiro uses the PostgreSQL MCPsearch_content to introspectlocate the livepage, schema,reads it, then writescalls aupdate_page migrationwith filethe thatrevised accuratelycontent, targetspreserving existingeverything columnselse andon types.the page.
Auto-update docs via Agent Hook
Configure"When I save any file inscripts/, automatically update the corresponding BookStack runbook page."
Define an Agent Hook in .kiro/hooks/ tothat triggerfires on filefile-save save.events. WhenThe hook instructs Kiro to find and update the relevant BookStack page each time you save a functionscript signature— changes,keeping your runbooks always in sync without manual effort.
Read a runbook to answer a question
"What's the
hookcorrectfiresprocess for joining a new Linux VM to our domain? Check the BookStack Linux book."
Kiro searches BookStack, reads the relevant page, and answers from your actual internal documentation rather than generic knowledge.
Tips and Gotchas
- Write mode is off by default. Don't forget
BOOKSTACK_ENABLE_WRITE=true— otherwise create/update calls will silently do nothing or error. - Export your env vars before launching Kiro. Kiro
usesreads environment variables at startup. If you add them to your shell profile, open a new terminal session before starting Kiro, or they won't be picked up. - Use
disabledToolsto limit risk. If you want Kiro to read but not write, omitBOOKSTACK_ENABLE_WRITEand also add"disabledTools": ["create_page", "update_page"]to your server config block for an extra layer of protection. - Mention BookStack explicitly in your prompt. Kiro won't automatically reach for the BookStack MCP
to updateunless therelevantcontextinternalmakesdocumentationit clear — say "check BookStack" or "search our docs" to guide it. - Check the book ID when creating pages. If Kiro creates a page
automatically.in
the
book,SecuritywrongConsiderations- tell it the correct book name. It will look up the ID via
get_booksand retry. EnvironmentDon'tvariablescommitoversecretshardcodedtovaluesthe repo.:Always useUse${references inVAR}VAR_NAME}mcp.json.,Hardcodednotsecretsliteralcommittedtokentovalues.version control are a significant risk.Workspace vs. user config: Be careful about checking workspace-levelAdd.kiro/settings/mcp.jsonintotoshared repos.gitignoreif itcontainsexistsserveratdefinitionsworkspacethatlevelreferenceandenvironmentyourvariablesteamspecifichastodifferentindividual developers.credentials.disabledToolsToken permissions matter.:UseThe MCP token acts as theBookStackdisabledToolsfieldusertoyoulimitcreatedwhatitKiro'sunder.agentsIf that user can't see a book, neither cando with a given MCP server — especially for servers that can delete or overwrite data.Trusted servers only: Only connect Kiro to MCP servers you trust. Remote servers receive requests that may include code context and file contents.Bedrock data handling: Prompts sent to Claude through Kiro are processed via Amazon Bedrock. Review AWS Bedrock's data use and retention policies for compliance requirements.Kiro.
Troubleshooting
| Issue | Resolution |
|---|---|
mcp.json is valid JSON; run npx -y bookstack-mcp manually to check |
|
| Authentication error |
Confirm BOOKSTACK_TOKEN_ID and BOOKSTACK_TOKEN_SECRET are correct; check the token hasn't expired in BookStack |
| Connection refused / cannot reach BookStack | Confirm BOOKSTACK_BASE_URL is reachable from the machine running Kiro; check VPN or firewall if BookStack is internal |
| Create/update page does nothing | Ensure BOOKSTACK_ENABLE_WRITE=true is set in the env block |
| Environment |
|
| Mention |
|
Ensure |
References
- bookstack-mcp on GitHub (ttpears/bookstack-mcp)
- bookstack-mcp on npm
- Kiro MCP Documentation
(IDE) - Kiro MCP Configuration Reference
KiroBookStackMCPAPIServer DirectoryKiro Blog: MCP and Developer ProductivityDocumentation- Model Context Protocol (MCP) Overview
AnthropicBookStack MCP Integration with Claude (this instance)