gcontext
The workspace your agent works in: tasks it tracks, integrations it operates, scripts it runs. Structure lives in the cloud so every session starts oriented; secret values and script execution never leave your machine.
One prompt like "ship the launch discount: new payment link in Stripe, point promo.example.com at the site, update the launch task" and your agent reads the integration docs, runs the scripts locally with keys injected from your local secret store, and checks off the task, without a single key entering the conversation.
Get started (2 minutes)
uvx gcontext-mcp login # browser sign-in at https://app.gcontext.ai mints a token
Then add it to Claude Code:
claude mcp add-json gcontext '{
"type": "stdio",
"command": "uvx",
"args": ["gcontext-mcp"],
"env": { "GCONTEXT_TOKEN": "<your token>" }
}'
Free up to 30 files, no credit card. Needs uv/uvx on your PATH.
What your agent gets
- Tasks: typed folders with goals, steps, and progress notes the agent maintains, so the next session picks up exactly where the last one stopped.
- Integrations: docs per third-party service (what it is, allowed/never operations, which secret NAMES it needs) that act as the agent's operations manual and guardrails.
- Local script execution:
tool_run_scriptruns Python on YOUR machine with secret values injected from~/.gcontext/.env(chmod 0600; OS keychain opt-in viaGCONTEXT_SECRET_BACKEND=keychain) and scrubbed from every output the agent sees. - A secret-name registry: the cloud knows only NAMES and descriptions; values are filled once via a local browser form and stay on your machine.
The privacy split
| Lives in the cloud | Never leaves your machine |
|---|---|
| Folder structure, docs, task state | Secret VALUES (~/.gcontext/.env, keychain opt-in) |
| Secret NAMES + present/missing flags | Script and shell execution |
| Activity metadata (names, token counts) | Script outputs before scrubbing |
Why: pasting API keys into a chat is how keys end up in logs and screenshots, and a cloud that executes your code with your keys HAS your keys. gcontext gives the agent full operational ability with zero key custody.
Other clients and modes
Claude Desktop (no CLI): edit the config file (Settings → Developer → Edit
Config; macOS ~/Library/Application Support/Claude/claude_desktop_config.json,
Windows %APPDATA%\Claude\claude_desktop_config.json), then fully restart:
{
"mcpServers": {
"gcontext": {
"command": "uvx",
"args": ["gcontext-mcp"],
"env": { "GCONTEXT_TOKEN": "<your token>" }
}
}
}
Keep the server name gcontext (or change it in the dashboard's Settings);
every prompt the dashboard copies references the server by that name. Desktop
has no slash-command prompts (/use-integration, etc.); you drive the same
tools by plain chat.
Self-hosting: same product, your server, one docker compose up and a
single token. See SELF_HOSTING.md or
https://gcontext.ai/self-hosting.
Pure-local dev (no cloud, own SQLite), from a checkout:
claude mcp add gcontext -- uv run --directory /ABS/PATH/TO/apps/mcp-minimal python server.py
Tools
tool_list_dir(path="/"),tool_read_file(path),tool_write_file(path, content),tool_delete(path)—tool_write_fileauto-creates missing parent folderstool_secrets(action="list"|"register"|"unregister", name, description),tool_setup_secrets(form=True)tool_run_script(code)- runs Python locally with secrets injected from the local store (~/.gcontext/.envby default)
The secret registry
The registry holds secret NAMES + descriptions only — it is for setup and
verification, not runtime. It does NOT gate tool_run_script, which injects the
whole secret environment from the local store regardless of what's registered.
tool_secrets(action="register", name, description)- declare a required secret.tool_setup_secrets()- opens a local browser form where the user fills in the values; they are stored in~/.gcontext/.env(chmod 0600), or the OS keychain withGCONTEXT_SECRET_BACKEND=keychain(form=Falseappends blankNAME=lines to the.envinstead).tool_secrets()- showspresentper name so you can confirm setup.
How it works
- Write a file describing a 3rd-party operation and which secret NAMES it needs;
declare those names with
tool_secrets(action="register"). - To act, read the file, generate Python, and call
tool_run_script. - Secret values resolve from the local store (
~/.gcontext/.envby default, keychain opt-in) at run time - never stored in the DB.
Security / trust model
tool_run_script runs arbitrary Python locally with your real secret values injected -
there is no sandbox. It is exactly as trusted as whatever drives the server. Run it
on your own machine only; never expose this server remotely.
Script contract
- Read secrets via
os.environ["VAR"]- never hardcode, neverload_dotenv. - Use only registered names that show
present_locally: true. - Exit codes:
0OK,2missing secret (KeyError),1any other failure.
Config (env vars)
GCONTEXT_API_URL- backend origin (defaulthttps://app.gcontext.ai; set for self-host).GCONTEXT_TOKEN- the dashboard-minted token.MCP_MINIMAL_DB- SQLite path for pure-local mode (defaultdb.sqlitenext toserver.py).MCP_MINIMAL_ENV_FILE- secret-values file (default~/.gcontext/.env).GCONTEXT_SECRET_BACKEND-env(default: values in the 0600.env) orkeychain(OS keychain).
Developing
Tests and the three-ring test architecture: see tests/README.md.
Run everything with make test.
Metadata
Release files for gcontext-mcp 0.3.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| gcontext_mcp-0.3.3.tar.gz | 243.0 kB | Without provenance | Details for gcontext_mcp-0.3.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| gcontext_mcp-0.3.3-py3-none-any.whl | Python 3 | none | any | Details for gcontext_mcp-0.3.3-py3-none-any.whl |
Total release size: 267.7 kB
Release files / gcontext_mcp-0.3.3.tar.gz
| Download URL | gcontext_mcp-0.3.3.tar.gz |
|---|---|
| Size | 243.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cf634bec758f70349c502c4774feb21cd12455bb38830521e30d509e1b0aba4d
|
|
BLAKE2b-256 checksum How to use checksums |
a916d6fb6a4fcb0803bcf523d667f24f85e624d2943b6a55eef8a1558e252c8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.16
|
Release files / gcontext_mcp-0.3.3-py3-none-any.whl
| Download URL | gcontext_mcp-0.3.3-py3-none-any.whl |
|---|---|
| Size | 24.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
84a42bafecf3ac0f3e2a93dcc52eb77805adc55f66a86bc2bb9da2ed161a8969
|
|
BLAKE2b-256 checksum How to use checksums |
cd511b91a31d59505bb7d9235dba0a5829653851d9d567197a246df4cfe3b083
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.16
|
Security for gcontext-mcp 0.3.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.