Add the Kythene MCP server to your assistant. Most clients sign in with OAuth - no keys to manage. Global scope is almost always right: a team memory you want in every project, not one you re-add per checkout.
https://kythene.com/mcp/kythene
mcpServers{
"mcpServers": {
"kythene": {
"serverUrl": "https://kythene.com/mcp/kythene"
}
}
}Uses serverUrl, not url.
Opens PROJECT settings when a project is open; reaching global config is a deliberate act. The agent can write the workspace file but not the global one unaided.
Needs an explicit Refresh then Authenticate after editing.
Global: ~/.gemini/config/mcp_config.json · Per-project: .agents/mcp_config.json
No config file to edit. In ChatGPT, add a custom connector pointing at the MCP endpoint above (typically Settings → Connectors → Add custom connector) - Kythene is not in the built-in connector directory, so you paste the URL yourself - then authorise when prompted.
Needs extra per-tool metadata; add via workspace app settings.
Config: workspace app settings (GUI) (global only)
/plugin marketplace add https://kythene.com/.claude-plugin/marketplace.json /plugin install kythene@kythene
Prefer this: the plugin adds the skill that teaches your assistant when to recall and publish. The MCP-only options below still work.
claude mcp add --scope user --transport http kythene https://kythene.com/mcp/kythene
mcpServers{
"mcpServers": {
"kythene": {
"type": "http",
"url": "https://kythene.com/mcp/kythene"
}
}
}Defaults to local (per-project) scope - pass --scope user for a memory you want in every repo.
Setting an Authorization header suppresses OAuth: use the URL alone for the sign-in flow, or a key, never both.
Global: ~/.claude.json (--scope user) · Per-project: .mcp.json (--scope project)
No config file to edit. In Claude Desktop / web / mobile, add a custom connector pointing at the MCP endpoint above (typically Settings → Connectors → Add custom connector) - Kythene is not in the built-in connector directory, so you paste the URL yourself - then authorise when prompted.
One custom connector covers Desktop, web, Cowork and mobile - it is account-synced, so add it once.
Config: account-synced (no local JSON) (global only)
mcpServers{
"mcpServers": {
"kythene": {
"type": "streamableHttp",
"url": "https://kythene.com/mcp/kythene"
}
}
}Without type it falls back to legacy SSE and fails silently.
Setting an Authorization header suppresses OAuth.
Config: extension globalStorage (global only)
codex mcp add kythene https://kythene.com/mcp/kythene
mcp_servers{
"mcp_servers": {
"kythene": {
"url": "https://kythene.com/mcp/kythene"
}
}
}mcp add writes global only; there is no scope flag.
Config: ~/.codex/config.toml (global only)
mcpServers{
"mcpServers": {
"kythene": {
"url": "https://kythene.com/mcp/kythene"
}
}
}Global: ~/.cursor/mcp.json · Per-project: .cursor/mcp.json
devin mcp add kythene https://kythene.com/mcp/kythene
mcpServers{
"mcpServers": {
"kythene": {
"transport": "http",
"url": "https://kythene.com/mcp/kythene"
}
}
}Global: ~/.config/devin/mcp_config.json · Per-project: .devin/mcp_config.json
gemini mcp add --scope user kythene https://kythene.com/mcp/kythene
mcpServers{
"mcpServers": {
"kythene": {
"httpUrl": "https://kythene.com/mcp/kythene"
}
}
}Defaults to project scope - pass --scope user.
Uses httpUrl, NOT url; url is treated as SSE and fails silently.
Global: ~/.gemini/settings.json · Per-project: .gemini/settings.json
extensions{
"extensions": {
"kythene": {
"type": "streamable_http",
"uri": "https://kythene.com/mcp/kythene"
}
}
}YAML config, not JSON, under extensions: with a uri key.
Deeplinks can fail silently for auth'd streamable-HTTP extensions (block/goose#4006) - use the manual path if so.
Config: ~/.config/goose/config.yaml (global only)
mcpServers{
"mcpServers": {
"kythene": {
"url": "https://kythene.com/mcp/kythene"
}
}
}This client can't do OAuth - use npx -y mcp-remote https://kythene.com/mcp/kythene as an stdio command entry instead of the URL.
AI Assistant cannot do OAuth (YouTrack LLM-25012) - needs the npx -y mcp-remote <url> shim.
Global: UI Level dropdown (no file) · Per-project: UI Level dropdown
mcpServers{
"mcpServers": {
"kythene": {
"type": "streamable-http",
"url": "https://kythene.com/mcp/kythene"
}
}
}This client can't do OAuth - use npx -y mcp-remote https://kythene.com/mcp/kythene as an stdio command entry instead of the URL.
Cannot do OAuth (roo #8119) - needs npx -y mcp-remote <url> as a stdio entry.
type streamable-http is required.
Global: extension globalStorage · Per-project: .roo/mcp.json (wins)
servers{
"servers": {
"kythene": {
"type": "http",
"url": "https://kythene.com/mcp/kythene"
}
}
}Container is servers (not mcpServers). Both the deeplink and code --add-mcp land in the user profile (global).
Global: user profile mcp.json · Per-project: .vscode/mcp.json
mcpServers{
"mcpServers": {
"kythene": {
"url": "https://kythene.com/mcp/kythene"
}
}
}OAuth works for LOCAL agents only; Warp cloud agents are unsupported (no API-key path helps there).
Global: ~/.warp/.mcp.json · Per-project: .warp/.mcp.json
mcpServers{
"mcpServers": {
"kythene": {
"serverUrl": "https://kythene.com/mcp/kythene"
}
}
}DCR unconfirmed; OAuth known. serverUrl or url.
Legacy - Devin CLI is the new Windsurf default.
Config: ~/.codeium/windsurf/mcp_config.json (global only)
context_servers{
"context_servers": {
"kythene": {
"url": "https://kythene.com/mcp/kythene"
}
}
}Container is context_servers.
Setting an Authorization header suppresses OAuth.
Global: per-OS settings.json · Per-project: .zed/settings.json (unconfirmed)
Point any MCP client at the endpoint above. If it can't do OAuth, wrap it with npx -y mcp-remote https://kythene.com/mcp/kythene. Full guide: https://kythene.com/docs.
{
"mcpServers": {
"kythene": { "url": "https://kythene.com/mcp/kythene" }
}
}