One address for any MCP client. Your key stays in your Odel vault.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Odel could not list its tools without signing in.
Public connector package for SPM - Structured Project Memory.
SPM turns project knowledge into durable, shareable, governed and internally smart project memory for AI agents. This repository contains only the public connector surface: the authenticated remote MCP configuration, installable bundles for Codex, Claude Code, Cursor and OpenClaw, browser authorization helpers, lifecycle adapters, examples and security guidance.
The SPM application, backend, billing system, private console, memory engine and infrastructure are not included in this repository.
Human setup and inspection guide:
https://getspm.com/agents
https://getspm.com/v1/mcp
Official MCP Registry descriptor:
server.json
Registry name:
com.getspm/spm
The endpoint is public for discovery, but authenticated for use. A client needs:
Connector profiles expose the agent-facing SPM surface:
The hosted MCP connector does not expose:
This boundary is intentional. Agents receive the memory tools they need without being given commercial or destructive administrative powers.
Install the Codex plugin from this repository marketplace:
.agents/plugins/marketplace.json
Or configure Codex manually:
[mcp_servers.spm]
url = "https://getspm.com/v1/mcp"
bearer_token_env_var = "SPM_CODEX_MCP_TOKEN"
startup_timeout_sec = 30
tool_timeout_sec = 120
Authorize Codex for all projects the signed-in organization user may access:
python3 plugins/spm-codex/scripts/auth_spm_codex.py \
--project-id <authorization-project-id> \
--access-mode organization \
--write-env ~/.spm/codex.env
source ~/.spm/codex.env
Verify:
python3 plugins/spm-codex/scripts/doctor_spm_codex.py
Run the functional remote MCP smoke:
python3 plugins/spm-codex/scripts/smoke_spm_remote_mcp.py \
--project-id <authorized-project-id>
The smoke uses the same SPM_CODEX_MCP_TOKEN as Codex and requires an
explicit authorized project id (or SPM_SMOKE_PROJECT_ID). It initializes the
hosted MCP endpoint, verifies the project-resolution, multi-project,
agent-session and memory tool surface, creates a small project-scoped smoke
memory event, reads temporal state, creates and verifies a context pack, queries
the context graph, runs agent preflight and reports post-action evidence. It
never prints the token and the hosted connector strips raw event bodies from
returned context.
For a non-mutating token check, use:
python3 plugins/spm-codex/scripts/smoke_spm_remote_mcp.py \
--project-id <authorized-project-id> --read-only
The repository includes native client bundles:
plugins/spm-claudeplugins/spm-cursorplugins/spm-openclawClients that only support MCP can use the same remote endpoint and bearer
token. The generic authorization helper is
scripts/agent-connectors/authorize_spm_agent.py. See also:
examples/codex/config.tomlexamples/claude-desktop/claude_desktop_config.jsonexamples/cursor/mcp.jsonexamples/windsurf/mcp_config.jsonDo not commit tokens. Prefer environment variables or each agent client's secret storage. Tokens must be explicitly scoped and revocable from SPM. Organization visibility does not permit silent project mixing: each task keeps one active project, while cross-project packs require an explicit user request. Session continuation does not clone, pull, reset or overwrite a workspace. Receiving agents inspect their actual material state, compare it with SPM's manifest and ask before obtaining or reconciling resources.
See SECURITY.md and docs/security-boundary.md.