Skip to content
MCP ThesaurusMCP Thesaurus

Context Book

CommunityIncomplete39/100Claim

streamable-httpMITupdated 3mo ago

Stop re-explaining yourself to Agents. Give it the right context, right when needed.

SourceWebsite5

What can you do with Context Book?

smithery badge License: MIT

Stop re-explaining yourself to Agents. Give it the right context, right when needed.

LLMs are stateless โ€” each conversation starts from scratch. ContextBook gives your AI tools a persistent, searchable knowledge library to draw the right context when they need it. No bloatware, no pre-loaded junk. Just the right information, at the right time.

How It Works

flowchart LR
    AI["๐Ÿค– AI Clients\nClaude ยท Cursor ยท Windsurf"]
    Browser["๐ŸŒ Browser Dashboard"]
    MCP["๐Ÿ”Œ MCP Server :8081\n8 Bearer-authenticated tools"]
    API["โš™๏ธ REST API :8080\nOAuth 2.0 ยท Books ยท Pages ยท Search"]
    DB["๐Ÿ—„๏ธ PostgreSQL\npgvector ยท pg_trgm"]
    VOYAGE["๐Ÿง  Voyage AI\nvoyage-4 (1024-dim)"]

    AI -- "MCP ยท Bearer Token" --> MCP
    Browser -- "Session ยท HTTP JSON" --> API
    MCP --- DB
    API --- DB
    API -- "OAuth 2.0 PKCE" --> AI
    DB --- VOYAGE

Two Go binaries share a PostgreSQL database:

  • API server (cmd/api) โ€” the control plane: user login, OAuth 2.0, dashboard, book/page CRUD
  • MCP server (cmd/mcp) โ€” the data plane: 8 MCP tools for AI agents, protected by Bearer tokens

MCP Tools

All tools require a valid Bearer token and are scoped to the authenticated user.

Tool Description
book_create_or_update Create a Book or update its metadata
book_list Paginated list of Book metadata
book_get Retrieve all pages of a Book
page_insert Push an atomic page into a Book; embeds immediately
page_update Replace a page's content; re-embeds
page_delete Remove a page (indices not re-numbered)
page_search Semantic search across all Books
readme Returns the usage guide (call once per session)

Quick Start

Prerequisites

1. Set up the database

CREATE DATABASE contextbook_db;
\c contextbook_db
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS pg_trgm;

Migrations run automatically on API server startup.

2. Configure environment

cp .env.example backend/.env
# Edit backend/.env โ€” set DATABASE_URL, API_KEY_SALT, VOYAGE_API_KEY

3. Run the backend

cd backend
go run ./cmd/api/main.go    # API + dashboard (:8080)
go run ./cmd/mcp/main.go     # MCP server (:8081)

4. Run the frontend (optional)

cd frontend
npm install && npm run dev    # Vite dev server on :5173

5. Connect an AI client

For Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "contextbook": {
      "url": "http://localhost:8081/mcp"
    }
  }
}

For any MCP-compatible client, point the server URL to http://localhost:8081/mcp.

Documentation

  • Backend README โ€” API routes, auth flows, database schema, MCP tools, configuration
  • Frontend README โ€” components, routing, design system, development setup
  • Architecture โ€” full system overview with Mermaid diagrams

Project Structure

context-book/
โ”œโ”€โ”€ backend/
โ”‚   โ”œโ”€โ”€ cmd/api/main.go          REST API + auth server
โ”‚   โ”œโ”€โ”€ cmd/mcp/main.go          MCP tool server
โ”‚   โ””โ”€โ”€ internal/
โ”‚       โ”œโ”€โ”€ api/                  REST handlers + routes
โ”‚       โ”œโ”€โ”€ auth/                 OAuth 2.0 PKCE, sessions, SSO
โ”‚       โ”œโ”€โ”€ context/              Book/Page business logic
โ”‚       โ”œโ”€โ”€ db/                  pgx queries + migrations
โ”‚       โ”œโ”€โ”€ embedding/            Voyage AI client
โ”‚       โ”œโ”€โ”€ logger/               slog + HTTP access logging
โ”‚       โ””โ”€โ”€ mcp/                  8 MCP tool handlers
โ”œโ”€โ”€ frontend/                     React 19 + Vite + TypeScript SPA
โ”‚   โ””โ”€โ”€ src/
โ”‚       โ”œโ”€โ”€ App.tsx               Router + app shell
โ”‚       โ”œโ”€โ”€ lib/api.ts            HTTP client
โ”‚       โ””โ”€โ”€ components/           UI components
โ”œโ”€โ”€ Dockerfile                    API server container
โ”œโ”€โ”€ Dockerfile.mcp                MCP server container
โ””โ”€โ”€ go.work                       Go workspace

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/my-feature)
  3. Make your changes
  4. Ensure the backend compiles (cd backend && go build ./cmd/api ./cmd/mcp)
  5. Ensure the frontend builds (cd frontend && npm run build)
  6. Commit and push
  7. Open a Pull Request

License

MIT โ€” see the LICENSE file for details.