Hello !
We are a team working with a locally deployed instance of bookstack and librechat. We would like to put an MCP server between them, and your project seems to be the right place to ask.
context
We have many users with different accesses to shelves, depending on their department. Those rights are handled at bookstack-acl level.
Currently, bookstack-mcp resolves its credentials once at startup, so every MCP user shares one BookStack identity. That flattens BookStack's own permission model: a user reaches, through the assistant, content scoped by the service token. Hence, everyone access the same pages, regardless of their departments.
What we would like
The ability to supply BookStack API credentials per request, via HTTP headers on the streamable-HTTP transport (falling back to the environment when absent). For instance, in librechat.yaml file :
mcpServers:
bookstack:
type: streamable-http
url: http://mcp-bookstack:3000/mcp
headers:
X-Bookstack-Token-Id: "{{BOOKSTACK_TOKEN_ID}}"
X-Bookstack-Token-Secret: "{{BOOKSTACK_TOKEN_SECRET}}"
customUserVars:
BOOKSTACK_TOKEN_ID: { title: "BookStack token ID" }
BOOKSTACK_TOKEN_SECRET: { title: "BookStack token secret" }
Each user creates their own token in BookStack (Profile > API Tokens), paste it once, and the assistant then sees exactly what that user sees. Users who provide nothing fall back to the service token (defined in environment vars) the one with only reading rights on public pages.
Happy to contribute
If this direction fits your view of the project, we are glad to open a PR (which will be to be honest AI-assisted in its making). Tell us how you would have it shaped (env flag name, header names, whether the resolution belongs in the transport layer or in the config builder) so it can fit in the project. If you would rather not do that, no hard feelings, we understand that this project scope may not include ours.
Whatever is next, thank you for this project. We hope to see it grow soon :)
Hello !
We are a team working with a locally deployed instance of bookstack and librechat. We would like to put an MCP server between them, and your project seems to be the right place to ask.
context
We have many users with different accesses to shelves, depending on their department. Those rights are handled at bookstack-acl level.
Currently, bookstack-mcp resolves its credentials once at startup, so every MCP user shares one BookStack identity. That flattens BookStack's own permission model: a user reaches, through the assistant, content scoped by the service token. Hence, everyone access the same pages, regardless of their departments.
What we would like
The ability to supply BookStack API credentials per request, via HTTP headers on the streamable-HTTP transport (falling back to the environment when absent). For instance, in
librechat.yamlfile :Each user creates their own token in BookStack (Profile > API Tokens), paste it once, and the assistant then sees exactly what that user sees. Users who provide nothing fall back to the service token (defined in environment vars) the one with only reading rights on public pages.
Happy to contribute
If this direction fits your view of the project, we are glad to open a PR (which will be to be honest AI-assisted in its making). Tell us how you would have it shaped (env flag name, header names, whether the resolution belongs in the transport layer or in the config builder) so it can fit in the project. If you would rather not do that, no hard feelings, we understand that this project scope may not include ours.
Whatever is next, thank you for this project. We hope to see it grow soon :)