Rank
83
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Crawler Summary
⚠️ DEPRECATED: TypeScript MCP server - Use Python FastMCP server in fastmcp_server/ instead BookStack MCP Server This repository hosts a **Python FastMCP-based server** that exposes consolidated tools for managing a BookStack instance. The flagship capabilities are the image gallery management workflows that power authoring experiences in downstream MCP clients. **⚠️ DEPRECATION NOTICE**: The TypeScript/mcp-framework server (src/ directory) is deprecated and no longer maintained. All development has moved t Published capability contract available. No trust telemetry is available yet. 11 GitHub stars reported by the source. Last updated 2/24/2026.
Freshness
Last checked 2/22/2026
Best For
Contract is available with explicit auth and schema references.
Not Ideal For
mcp-framework-server is not ideal for teams that need stronger public trust telemetry, lower setup complexity, or more explicit contract coverage before production rollout.
Evidence Sources Checked
editorial-content, capability-contract, runtime-metrics, public facts pack
⚠️ DEPRECATED: TypeScript MCP server - Use Python FastMCP server in fastmcp_server/ instead BookStack MCP Server This repository hosts a **Python FastMCP-based server** that exposes consolidated tools for managing a BookStack instance. The flagship capabilities are the image gallery management workflows that power authoring experiences in downstream MCP clients. **⚠️ DEPRECATION NOTICE**: The TypeScript/mcp-framework server (src/ directory) is deprecated and no longer maintained. All development has moved t
Public facts
7
Change events
1
Artifacts
0
Freshness
Feb 22, 2026
Published capability contract available. No trust telemetry is available yet. 11 GitHub stars reported by the source. Last updated 2/24/2026.
Trust score
Unknown
Compatibility
MCP
Freshness
Feb 22, 2026
Vendor
Oculairmedia
Artifacts
0
Benchmarks
0
Last release
0.0.1
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Published capability contract available. No trust telemetry is available yet. 11 GitHub stars reported by the source. Last updated 2/24/2026.
Setup snapshot
git clone https://github.com/oculairmedia/Bookstack-MCP.gitSetup complexity is MEDIUM. Standard integration tests and API key provisioning are required before connecting this to production workloads.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Oculairmedia
Protocol compatibility
MCP
Auth modes
mcp, api_key
Machine-readable schemas
OpenAPI or schema references published
Adoption signal
11 GitHub stars
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
5
Snippets
0
Languages
typescript
bash
# Install Python dependencies for the FastMCP server pip install -r fastmcp_server/requirements.txt
bash
cd fastmcp_server python3 -m fastmcp_server
text
BS_URL=https://your-bookstack.example.com BS_TOKEN_ID=... BS_TOKEN_SECRET=...
bash
cd /opt/stacks/bookstack-mcp/Bookstack-MCP
set -a && source .env && set +a
python3 - <<'PY'
import asyncio, json, time
from fastmcp import FastMCP
from fastmcp_server.bookstack.tools import register_bookstack_tools
TEST_IMAGE_URL = "https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"
PAGE_ID = 39 # replace with a page id from your BookStack instance
async def main():
mcp = FastMCP("manual-test")
register_bookstack_tools(mcp)
tool = await mcp.get_tool("bookstack_manage_images")
result = await tool.run({
"operation": "create",
"name": f"URL Upload Test {int(time.time())}",
"image": TEST_IMAGE_URL,
"uploaded_to": PAGE_ID,
})
print(json.dumps(json.loads(result.content[0].text), indent=2))
asyncio.run(main())
PYbash
cd fastmcp_server python3 -m pytest tests/test_manage_images.py -v
Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB MCP
Editorial quality
ready
⚠️ DEPRECATED: TypeScript MCP server - Use Python FastMCP server in fastmcp_server/ instead BookStack MCP Server This repository hosts a **Python FastMCP-based server** that exposes consolidated tools for managing a BookStack instance. The flagship capabilities are the image gallery management workflows that power authoring experiences in downstream MCP clients. **⚠️ DEPRECATION NOTICE**: The TypeScript/mcp-framework server (src/ directory) is deprecated and no longer maintained. All development has moved t
This repository hosts a Python FastMCP-based server that exposes consolidated tools for managing a BookStack instance. The flagship capabilities are the image gallery management workflows that power authoring experiences in downstream MCP clients.
⚠️ DEPRECATION NOTICE: The TypeScript/mcp-framework server (
src/directory) is deprecated and no longer maintained. All development has moved to the Python FastMCP server (fastmcp_server/directory). Please migrate to the Python server for the latest features and bug fixes.
# Install Python dependencies for the FastMCP server
pip install -r fastmcp_server/requirements.txt
Launch the FastMCP server after exporting your BookStack credentials (see below):
cd fastmcp_server
python3 -m fastmcp_server
Copy .env.example to .env and populate these variables before invoking any BookStack tools:
BS_URL=https://your-bookstack.example.com
BS_TOKEN_ID=...
BS_TOKEN_SECRET=...
The API token must belong to a user that can view and manage the image gallery. Local helper scripts use set -a && source .env so the values apply to ad-hoc Python snippets as well.
The Python FastMCP server provides comprehensive BookStack management through consolidated tools:
bookstack_content_crud — unified CRUD operations for books, bookshelves, chapters, and pages (Letta-compatible)bookstack_list_content — list and filter content entities with paginationbookstack_search — full-text search across BookStack contentbookstack_batch_operations — bulk create, update, and delete operationsbookstack_manage_images — unified create/read/update/delete/list interface for imagesbookstack_search_images — advanced discovery with extension, date, size, and usage filtersAll tools are registered by fastmcp_server/bookstack/tools.py and surfaced automatically when the FastMCP server starts.
📘 Letta Compatibility: If you're using Letta as your MCP client, please read docs/LETTA_COMPATIBILITY.md for important compatibility requirements and best practices.
bookstack_manage_images accepts three input shapes for the image/new_image fields during create and update operations:
data:image/png;base64,...)When a URL is supplied the tool:
BookStack's POST /api/image-gallery endpoint enforces two additional fields beyond the binary payload:
type — must be gallery for standard content images (use drawio only when uploading diagrams.net PNGs)uploaded_to — the numeric page ID to attach the image to. BookStack rejects uploads without a real page context.The tool surfaces these as optional inputs named image_type and uploaded_to. Default values of gallery and 0 preserve backward compatibility while allowing callers to target specific pages when required.
After exporting your environment variables you can confirm an end-to-end URL upload with the following snippet (replace PAGE_ID with an existing page id):
cd /opt/stacks/bookstack-mcp/Bookstack-MCP
set -a && source .env && set +a
python3 - <<'PY'
import asyncio, json, time
from fastmcp import FastMCP
from fastmcp_server.bookstack.tools import register_bookstack_tools
TEST_IMAGE_URL = "https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"
PAGE_ID = 39 # replace with a page id from your BookStack instance
async def main():
mcp = FastMCP("manual-test")
register_bookstack_tools(mcp)
tool = await mcp.get_tool("bookstack_manage_images")
result = await tool.run({
"operation": "create",
"name": f"URL Upload Test {int(time.time())}",
"image": TEST_IMAGE_URL,
"uploaded_to": PAGE_ID,
})
print(json.dumps(json.loads(result.content[0].text), indent=2))
asyncio.run(main())
PY
You should receive a JSON payload describing the uploaded image, including thumbnails and the uploaded_to identifier. A 422 error means BookStack rejected the request (common causes: missing uploaded_to, disallowed MIME type, image exceeding the 50 MB limit). A 404 response typically indicates the API token lacks gallery permissions.
Run the Python unit tests for the BookStack tools:
cd fastmcp_server
python3 -m pytest tests/test_manage_images.py -v
The suite covers URL handling, timeout and size enforcement, invalid scheme rejection, and the forwarding of type/uploaded_to metadata.
docs/PRD-Image-Gallery-Management.mdMachine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
ready
Auth
mcp, api_key
Streaming
Yes
Data region
global
Protocol support
Requires: mcp, lang:typescript, streaming
Forbidden: none
Guardrails
Operational confidence: medium
curl -s "https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/snapshot"
curl -s "https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/contract"
curl -s "https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Rank
83
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Rank
80
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Rank
74
Expose OpenAPI definition endpoints as MCP tools using the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)
Traction
No public download signal
Freshness
Updated 2d ago
Rank
72
An actix_web backend for the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)
Traction
No public download signal
Freshness
Updated 2d ago
Contract JSON
{
"contractStatus": "ready",
"authModes": [
"mcp",
"api_key"
],
"requires": [
"mcp",
"lang:typescript",
"streaming"
],
"forbidden": [],
"supportsMcp": true,
"supportsA2a": false,
"supportsStreaming": true,
"inputSchemaRef": "https://github.com/oculairmedia/Bookstack-MCP#input",
"outputSchemaRef": "https://github.com/oculairmedia/Bookstack-MCP#output",
"dataRegion": "global",
"contractUpdatedAt": "2026-02-24T19:46:46.535Z",
"sourceUpdatedAt": "2026-02-24T19:46:46.535Z",
"freshnessSeconds": 4434567
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"MCP"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_MCP",
"generatedAt": "2026-04-17T03:36:13.805Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "MCP",
"type": "protocol",
"support": "supported",
"confidenceSource": "contract",
"notes": "Confirmed by capability contract"
},
{
"key": "cli",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:MCP|supported|contract capability:cli|supported|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "MCP",
"href": "https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:46:46.535Z",
"isPublic": true
},
{
"factKey": "auth_modes",
"category": "compatibility",
"label": "Auth modes",
"value": "mcp, api_key",
"href": "https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:46:46.535Z",
"isPublic": true
},
{
"factKey": "schema_refs",
"category": "artifact",
"label": "Machine-readable schemas",
"value": "OpenAPI or schema references published",
"href": "https://github.com/oculairmedia/Bookstack-MCP#input",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:46:46.535Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Oculairmedia",
"href": "https://github.com/oculairmedia/Bookstack-MCP",
"sourceUrl": "https://github.com/oculairmedia/Bookstack-MCP",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-24T19:43:14.176Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "11 GitHub stars",
"href": "https://github.com/oculairmedia/Bookstack-MCP",
"sourceUrl": "https://github.com/oculairmedia/Bookstack-MCP",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-24T19:43:14.176Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-oculairmedia-bookstack-mcp/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to mcp-framework-server and adjacent AI workflows.