@kividbio/mcp-server
v0.2.0
Published
Model Context Protocol server for KiviDB Cloud: run, query and share context across databases from any MCP client.
Maintainers
Readme
KiviDB Cloud MCP server
Lets Claude, ChatGPT, Gemini and any other MCP client run KiviDB Cloud databases, query them, and share context with each other through one.
Everything it does, it does as an API key. The key belongs to one organization and carries a role, so the key is the limit: what it can see, and what it may change, is decided by the server rather than by this package. When a call is refused, the refusal is passed through word for word, because the server's message says what to do next and a paraphrase would lose that.
Install
Nothing to install. The clients below start it on demand.
Claude Desktop, Claude Code, Cursor, VS Code
{
"mcpServers": {
"kividb": {
"command": "npx",
"args": ["-y", "@kividbio/mcp-server"],
"env": { "KIVIDB_API_KEY": "kvdb_live_..." }
}
}
}Gemini CLI
Same shape, in ~/.gemini/settings.json:
{
"mcpServers": {
"kividb": {
"command": "npx",
"args": ["-y", "@kividbio/mcp-server"],
"env": { "KIVIDB_API_KEY": "kvdb_live_..." }
}
}
}ChatGPT, and anything else that wants a URL
ChatGPT connectors take a URL rather than a subprocess, so run the server in HTTP mode:
KIVIDB_API_KEY=kvdb_live_... npx -y @kividbio/mcp-server --http --port 8787Add it as a connector pointing at https://your-host/. Each request may carry
its own key as Authorization: Bearer <key>, so one deployment can serve
several people without any of them sharing a key; the key in the environment is
the fallback when a request sends none.
Put it behind TLS. The key is a bearer credential and travels in a header.
What it can do
Databases — list_databases, get_database, create_database,
resize_database, scale_replicas, upgrade_to_pro, delete_database.
create_database takes free_tier for a database that costs nothing. Anything
paid bills the organization that owns the key, so the tool descriptions tell the
model to confirm with you first. delete_database requires the database's exact
current name and checks it against the server before deleting, because a model
that has confused two ids would otherwise delete the wrong one and report
success.
Shared context — remember, recall, forget.
This is the part that makes three assistants one conversation. A note written by ChatGPT is readable by Claude and by Gemini, as long as they point at the same database and namespace:
ChatGPT: remember that we moved the allowlist into Terraform Claude, later: recall allowlist →
[mul8o6rx] by chatgpt (staging, deploy) The staging allowlist reverts on every deploy...
Notes carry an author and optional tags, and recall filters on both. The
default namespace is shared; use different namespaces to keep projects apart.
Vectors — vector_search, list_vector_sets.
KiviDB does not build embeddings. The vectors have to be in the database
already, added with VADD; these tools search what is there.
Note: vector and full-text commands are currently denied to the application user by the managed ACL, so
vector_searchreturns NOPERM on instances provisioned with it.rememberandrecalldeliberately avoid those command families and work everywhere.
Anything else — run_command runs a single KiviDB command: SET, GET,
FT.SEARCH, VADD, VSIM and the rest. Administrative commands are refused by
the server, not by this package.
Backups — create_backup, list_backups.
Environment
| Variable | Meaning |
| --- | --- |
| KIVIDB_API_KEY | Required for stdio. The default for HTTP when a request sends no bearer token. |
| KIVIDB_API_ENDPOINT | Defaults to https://api.kividb.io. |
| PORT | HTTP mode only. Defaults to 8787. |
A note on trust
An MCP server runs with your key and acts on your databases. This one never widens what the key may do, and it never hides a refusal. The two places it adds a check of its own are both about a model making a mistake rather than the server making one: deleting requires the name to match, and namespaces and note ids are restricted to characters that cannot reshape a key.
