PlusGPT MCP Server
Connects an agent to a PlusGPT knowledge base instance so it can orient itself (whoami, list_spaces, browse_space, recent_pages), read and search content (get_page, search_pages with fused keyword+semantic results, ask_knowledge_base for cited answers, list_page_types), and write back (create/update/move/delete pages, create folders). It also handles file ingestion, turning PDFs and images into attached pages with upload_document, check_import, list_imports and retry_import, and manages searchability via check_indexing, wait_for_indexing and reindex_page. Authentication uses per-caller Knowledge Base API keys, so each agent only reaches what its key allows.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PlusGPT MCP Serverask the knowledge base how to reset my VPN"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PlusGPT MCP server
An MCP server that lets an agent read, write, search and question a PlusGPT knowledge base instance. Built with FastMCP and served over streamable HTTP.
The server stores no credentials. Each caller authenticates with their own Knowledge Base API key, and every request is made as that user, so an agent can reach exactly what its key can reach and nothing else.
Tools
Orientation
Tool | What it does |
| Who the key belongs to and whether it can write |
| Every space you can see, with your role in each |
| Folders and page titles in a space, without page bodies |
| What you touched most recently, across spaces |
Reading
Tool | What it does |
| Full page, as text by default or HTML for editing |
| Keyword and semantic search fused, then reranked |
| A written answer with citations, the way the Ask page works |
| The kinds of page in use, so filing reuses existing vocabulary |
Writing
Tool | What it does |
| New page from markdown, plain text or HTML |
| Replace a page or append to it |
| New folder, optionally nested |
| Move a page to another folder or space |
| Delete a page, reporting what was removed |
Sharing
Everything here hands something to somebody else, so each tool says plainly how far the grant reaches.
Tool | What it does |
| Give named people access to one page by email, inviting anyone without an account |
| Hand over a whole space, including pages added to it later - a far bigger grant than |
| Make a page readable by anyone with the link, with no sign-in |
| Withdraw that link, so the old one stays dead |
| Take one person's access to a page away |
| Remove somebody from a space entirely |
| Who can see a page, and who is only invited |
| Who is in a space, and who has not joined yet |
| Pages and spaces other people have shared with this account |
| Read a page shared by link, whether or not it is yours |
| Take a private copy of a page somebody shared, so it cannot be withdrawn |
Files
Tool | What it does |
| Turn PDFs or images into pages, keeping the originals attached |
| The originals attached to a page: name, type and size |
| Fetch one original back, to pass on to whoever asked |
| Progress of one upload |
| Recent uploads and how they turned out |
| Re-parse a failed upload without resending the file |
Indexing
Tool | What it does |
| Whether a page is searchable yet |
| Block until a page is searchable |
| Rebuild chunks, summary and embeddings |
Every tool carries a description written for an agent to read, including what to pass, what comes back, and which tool to reach for next.
What a key can reach
There is no authority here beyond the caller's own key: every request is made with it, and the Knowledge Base's own permission rules decide the answer. Two limits are this server's own, because they are not the API's to enforce:
Ids are checked before they become part of a request path, so a tool cannot be steered onto an endpoint other than the one it describes.
upload_document'surlis fetched only from public addresses, and only up to 50 MB. The server sits on the same private network as the database, the object store and the vector store; a caller-chosen URL must not reach them.
Pages have a type
Every page can be filed as a type - Letter, Invoice, Runbook, whatever this
knowledge base actually uses. It is free text, not a fixed set, so
list_page_types exists to show the vocabulary already in use: reusing
"Invoice" beats inventing "Invoices" and splitting the category in two.
create_page, update_page and upload_document all accept one.
Several files at once
upload_document takes either one file (content_base64) or many
(files_base64 with matching filenames). By default each file becomes its own
page named after its own content. With combine=true they become a single page
in the order given, which is what a document that arrived as a set of scans
needs. One doc_type applies to the whole upload.
Related MCP server: mcp-rag
Connecting a client
The endpoint is https://plusgpt.io/mcp and the transport is streamable HTTP.
Authenticate with a Knowledge Base API key, created in the app under
Settings → API keys, sent as a bearer token:
{
"mcpServers": {
"plusgpt": {
"type": "http",
"url": "https://plusgpt.io/mcp",
"headers": { "Authorization": "Bearer kb_your_key_here" }
}
}
}Give the key the write scope if the agent should create or edit pages. A read-only key still searches and asks; writes are refused with a message saying so.
The skill
Connecting the server tells an agent what it can call. It does not tell it
how to behave - and the two mistakes that matter most are behavioural: reading
a PDF itself instead of passing the bytes, and filing a document wherever
without asking. skills/plusgpt/ is a skill that settles both.
skills/plusgpt/
SKILL.md what PlusGPT is, when to use it, the whole tool list
references/files.md handing over files: formats, limits, combine, failures
references/writing.md writing pages by hand: markdown support, page qualityCopy the directory into wherever the agent loads skills from - for Claude Code
that is .claude/skills/plusgpt/ in a project or ~/.claude/skills/plusgpt/
for every project:
cp -R skills/plusgpt ~/.claude/skills/It is plain markdown with YAML frontmatter, so any agent that reads skills can
use it as-is. Its central instruction is that the agent passes files straight to
upload_document rather than transcribing them, because a vision model on the
server side reads scans, photographs and handwriting better than a transcription
does - and keeps the original attached to the page.
tests/test_skill.py checks the skill against the running server: every tool is
mentioned, no invented tool is named, every promised upload_document parameter
exists, and the accepted formats match the ones the server really takes. If a
tool is renamed and the skill is not updated, that test fails.
Running it
With Docker, pointed at a Knowledge Base you can reach:
docker run --rm -p 8000:8000 \
-e KB_API_URL=https://plusgpt.io/api/v1 \
shanaka95/knowledgebase-mcp:latestAlongside the Knowledge Base stack, as a service in the same compose file:
mcp:
image: shanaka95/knowledgebase-mcp:latest
environment:
KB_API_URL: http://backend:8000/api/v1
restart: unless-stoppedFor development:
uv sync
uv run python -m kb_mcp # serves http://127.0.0.1:8000/mcp
uv run pytest tests -q
uv run ruff check src tests && uv run mypyConfiguration
Every setting is an environment variable; see .env.example. The one that
matters is KB_API_URL, which is a container name inside a deployment and a
public URL from anywhere else.
Variable | Default | Meaning |
|
| Knowledge Base REST API |
|
| Where this server listens |
|
| Mount path |
|
| Ordinary requests |
|
| Answering and document parsing |
|
| How long a verified key is trusted |
|
| Cap on blocking waits |
How authentication works
The client sends
Authorization: Bearer kb_....The server calls
GET /users/meon the Knowledge Base with that key.A rejected key, or an unreachable Knowledge Base, denies the request.
A verified key is cached briefly so a burst of tool calls is one auth check.
The same key is then used for every API call the tools make.
Revoking a key in the app stops it working here within AUTH_CACHE_SECONDS.
This server cannot be deployed
Maintenance
Related MCP Connectors
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Search, read, cite, create, and safely update a user's private KeepFlash knowledge library.
Access Pollinations models and API capabilities through agent tools.
Related MCP Servers
- AlicenseBqualityDmaintenanceAllows AI models to interact with SourceSync.ai's knowledge management platform to organize, ingest, retrieve, and search content in knowledge bases.2553 npm3MIT
- AlicenseAqualityBmaintenanceEnables per-project, traceable access to a RAG knowledge base, with tools for searching and adding knowledge chunks.4MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to search, retrieve, and manage documents from a Context11 knowledge base through tools like search_context, get_document, and list_folders.65 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables secure access to an organizational knowledge base via Supabase (RLS), providing tools for search, retrieval, writing, version history, and change tracking.-