
ContextStream wires your AI assistant into a persistent memory and knowledge layer across your codebase, conversations, and team tools. It exposes semantic search over code, a lessons system that captures failures and decisions, session memory that survives context window pressure, and direct integrations with GitHub, Slack, and Notion. The server indexes your project locally and syncs with a hosted service, then surfaces relevant context automatically through a SmartRouter that analyzes each message. You get dependency graph queries, multi-modal media indexing, and hybrid search without manually feeding files into prompts. Setup drops an MCP config into Claude Desktop, Cursor, VS Code with Copilot, or OpenCode, and the tools hook in transparently from there.
Public tool metadata for what this MCP can expose to an agent.
mcp_server_versionReturn the running ContextStream MCP server package version Access: FreeReturn the running ContextStream MCP server package version Access: Free
No parameter schema in public metadata yet.
auth_meFetch authenticated user profile Access: FreeFetch authenticated user profile Access: Free
No parameter schema in public metadata yet.
workspaces_listList accessible workspaces (paginated list: items, total, page, per_page, has_next, has_prev). Access: Free2 paramsList accessible workspaces (paginated list: items, total, page, per_page, has_next, has_prev). Access: Free
pagenumberpage_sizenumberprojects_listList projects (optionally by workspace; paginated list: items, total, page, per_page, has_next, has_prev). Access: Free3 paramsList projects (optionally by workspace; paginated list: items, total, page, per_page, has_next, has_prev). Access: Free
pagenumberpage_sizenumberworkspace_idstringprojects_createCreate a new project within a workspace. Use this when you need to create a project for a specific folder/codebase. If workspace_id is not provided, uses the current session's workspace. Optionally associates a local folder and generates AI editor rules. Access: Free Access: Free5 paramsCreate a new project within a workspace. Use this when you need to create a project for a specific folder/codebase. If workspace_id is not provided, uses the current session's workspace. Optionally associates a local folder and generates AI editor rules. Access: Free Access: Free
descriptionstringfolder_pathstringgenerate_editor_rulesbooleannamestringworkspace_idstringprojects_updateUpdate a project (rename or change description) Access: Free3 paramsUpdate a project (rename or change description) Access: Free
descriptionstringnamestringproject_idstringprojects_indexTrigger indexing for a project Access: Free1 paramsTrigger indexing for a project Access: Free
project_idstringsearch_semanticSemantic vector search Access: Free4 paramsSemantic vector search Access: Free
limitnumberproject_idstringquerystringworkspace_idstringsearch_hybridHybrid search (semantic + keyword) Access: Free4 paramsHybrid search (semantic + keyword) Access: Free
limitnumberproject_idstringquerystringworkspace_idstringsearch_keywordKeyword search Access: Free4 paramsKeyword search Access: Free
limitnumberproject_idstringquerystringworkspace_idstringmemory_create_eventCreate a memory event for a workspace/project Access: Free6 paramsCreate a memory event for a workspace/project Access: Free
contentstringevent_typestringmetadataobjectproject_idstringtitlestringworkspace_idstringmemory_list_eventsList memory events (optionally scoped) Access: Free3 paramsList memory events (optionally scoped) Access: Free
limitnumberproject_idstringworkspace_idstringmemory_create_nodeCreate a knowledge node with optional relations Access: Free6 paramsCreate a knowledge node with optional relations Access: Free
contentstringnode_typestringproject_idstringrelationsarraytitlestringworkspace_idstringmemory_list_nodesList knowledge graph nodes Access: Free3 paramsList knowledge graph nodes Access: Free
limitnumberproject_idstringworkspace_idstringmemory_searchSearch memory events/notes Access: Free4 paramsSearch memory events/notes Access: Free
limitnumberproject_idstringquerystringworkspace_idstringmemory_decisionsList decision summaries from workspace memory Access: Free4 paramsList decision summaries from workspace memory Access: Free
categorystringlimitnumberproject_idstringworkspace_idstringgraph_relatedFind related nodes in the knowledge graph Access: Elite/Team (Full Graph) (upgrade: https://contextstream.io/pricing)4 paramsFind related nodes in the knowledge graph Access: Elite/Team (Full Graph) (upgrade: https://contextstream.io/pricing)
limitnumbernode_idstringproject_idstringworkspace_idstringgraph_pathFind path between two nodes Access: Elite/Team (Full Graph) (upgrade: https://contextstream.io/pricing)4 paramsFind path between two nodes Access: Elite/Team (Full Graph) (upgrade: https://contextstream.io/pricing)
project_idstringsource_idstringtarget_idstringworkspace_idstringgraph_decisionsDecision history in the knowledge graph Access: Elite/Team (Full Graph) (upgrade: https://contextstream.io/pricing)3 paramsDecision history in the knowledge graph Access: Elite/Team (Full Graph) (upgrade: https://contextstream.io/pricing)
limitnumberproject_idstringworkspace_idstringgraph_dependenciesDependency graph query Access: Pro (Graph-Lite) (upgrade: https://contextstream.io/pricing)3 paramsDependency graph query Access: Pro (Graph-Lite) (upgrade: https://contextstream.io/pricing)
include_transitivebooleanmax_depthnumbertargetobjectgraph_call_pathFind call path between two targets Access: Elite/Team (Full Graph) (upgrade: https://contextstream.io/pricing)3 paramsFind call path between two targets Access: Elite/Team (Full Graph) (upgrade: https://contextstream.io/pricing)
max_depthnumbersourceobjecttargetobjectgraph_impactAnalyze impact of a target node Access: Pro (Graph-Lite) (upgrade: https://contextstream.io/pricing)2 paramsAnalyze impact of a target node Access: Pro (Graph-Lite) (upgrade: https://contextstream.io/pricing)
max_depthnumbertargetobjectgraph_ingestBuild and persist the dependency graph for a project. Runs async by default (wait=false) and can take a few minutes for larger repos. Access: Elite/Team (Full Graph) (upgrade: https://contextstream.io/pricing)2 paramsBuild and persist the dependency graph for a project. Runs async by default (wait=false) and can take a few minutes for larger repos. Access: Elite/Team (Full Graph) (upgrade: https://contextstream.io/pricing)
project_idstringwaitbooleanprojects_getGet project details by ID Access: Free1 paramsGet project details by ID Access: Free
project_idstringprojects_overviewGet project overview with summary information Access: Free1 paramsGet project overview with summary information Access: Free
project_idstringprojects_statisticsGet project statistics (files, lines, complexity) Access: Free1 paramsGet project statistics (files, lines, complexity) Access: Free
project_idstringprojects_filesList all indexed files in a project Access: Free1 paramsList all indexed files in a project Access: Free
project_idstringprojects_index_statusGet project indexing status Access: Free1 paramsGet project indexing status Access: Free
project_idstringprojects_ingest_localRead ALL files from a local directory and ingest them for indexing. This indexes your entire project by reading files in batches. Automatically detects code files and skips ignored directories like node_modules, target, dist, etc. Access: Free4 paramsRead ALL files from a local directory and ingest them for indexing. This indexes your entire project by reading files in batches. Automatically detects code files and skips ignored directories like node_modules, target, dist, etc. Access: Free
overwritebooleanpathstringproject_idstringwrite_to_diskbooleanworkspaces_getGet workspace details by ID Access: Free1 paramsGet workspace details by ID Access: Free
workspace_idstringmemory_get_eventGet a specific memory event by ID with FULL content (not truncated). Use this when you need the complete content of a memory event, not just the preview returned by search/recall. Access: Free1 paramsGet a specific memory event by ID with FULL content (not truncated). Use this when you need the complete content of a memory event, not just the preview returned by search/recall. Access: Free
event_idstringmemory_update_eventUpdate a memory event Access: Free4 paramsUpdate a memory event Access: Free
contentstringevent_idstringmetadataobjecttitlestringmemory_delete_eventDelete a memory event Access: Free1 paramsDelete a memory event Access: Free
event_idstringmemory_timelineGet chronological timeline of memory events for a workspace Access: Free1 paramsGet chronological timeline of memory events for a workspace Access: Free
workspace_idstringmemory_summaryGet condensed summary of workspace memory Access: Free1 paramsGet condensed summary of workspace memory Access: Free
workspace_idstringgraph_circular_dependenciesDetect circular dependencies in project code Access: Elite/Team (Full Graph) (upgrade: https://contextstream.io/pricing)1 paramsDetect circular dependencies in project code Access: Elite/Team (Full Graph) (upgrade: https://contextstream.io/pricing)
project_idstringgraph_unused_codeDetect unused code in project Access: Elite/Team (Full Graph) (upgrade: https://contextstream.io/pricing)1 paramsDetect unused code in project Access: Elite/Team (Full Graph) (upgrade: https://contextstream.io/pricing)
project_idstringsession_initInitialize a new conversation session and automatically retrieve relevant context. This is the FIRST tool AI assistants should call when starting a conversation. Returns: workspace info, project info, recent memory, recent decisions, relevant context, and high-priority lessons...9 paramsInitialize a new conversation session and automatically retrieve relevant context. This is the FIRST tool AI assistants should call when starting a conversation. Returns: workspace info, project info, recent memory, recent decisions, relevant context, and high-priority lessons...
allow_no_workspacebooleanauto_indexbooleancontext_hintstringfolder_pathstringinclude_decisionsbooleaninclude_recent_memorybooleanproject_idstringsession_idstringworkspace_idstringsession_toolsGet an ultra-compact list of all available ContextStream MCP tools. Use this when you need to know what tools are available without reading full descriptions. Returns a token-efficient tool catalog (~120 tokens) organized by category. Format options: - 'grouped' (default): Cat...2 paramsGet an ultra-compact list of all available ContextStream MCP tools. Use this when you need to know what tools are available without reading full descriptions. Returns a token-efficient tool catalog (~120 tokens) organized by category. Format options: - 'grouped' (default): Cat...
categorystringformatstringgrouped · minimal · fulldefault: groupedsession_get_user_contextRetrieve user preferences, coding style, and persona from memory. Use this to understand how the user likes to work and adapt your responses accordingly. Access: Free1 paramsRetrieve user preferences, coding style, and persona from memory. Use this to understand how the user likes to work and adapt your responses accordingly. Access: Free
workspace_idstringworkspace_associateAssociate a folder/repo with a workspace after user selection. Call this after session_init returns status='requires_workspace_selection' and the user has chosen a workspace. This persists the selection to .contextstream/config.json so future sessions auto-connect. Optionally...5 paramsAssociate a folder/repo with a workspace after user selection. Call this after session_init returns status='requires_workspace_selection' and the user has chosen a workspace. This persists the selection to .contextstream/config.json so future sessions auto-connect. Optionally...
create_parent_mappingbooleanfolder_pathstringgenerate_editor_rulesbooleanworkspace_idstringworkspace_namestringworkspace_bootstrapCreate a new workspace (user-provided name) and onboard the current folder as a project. This is useful when session_init returns status='requires_workspace_name' (no workspaces exist yet) or when you want to create a new workspace for a repo. Behavior: - Creates a workspace w...8 paramsCreate a new workspace (user-provided name) and onboard the current folder as a project. This is useful when session_init returns status='requires_workspace_name' (no workspaces exist yet) or when you want to create a new workspace for a repo. Behavior: - Creates a workspace w...
auto_indexbooleancontext_hintstringcreate_parent_mappingbooleandescriptionstringfolder_pathstringgenerate_editor_rulesbooleanvisibilitystringprivate · publicworkspace_namestringsession_captureAutomatically capture and store important context from the conversation. Use this to persist decisions, insights, preferences, or important information. Access: Free8 paramsAutomatically capture and store important context from the conversation. Use this to persist decisions, insights, preferences, or important information. Access: Free
contentstringevent_typestringconversation · decision · insight · preference · task · bugimportancestringlow · medium · high · criticalproject_idstringsession_idstringtagsarraytitlestringworkspace_idstringsession_capture_lessonCapture a lesson learned from a mistake or correction. Use this when the user corrects you, expresses frustration, or points out an error. These lessons are surfaced in future sessions to prevent repeating the same mistakes. Example triggers: - User says "No, you should..." or...9 paramsCapture a lesson learned from a mistake or correction. Use this when the user corrects you, expresses frustration, or points out an error. These lessons are surfaced in future sessions to prevent repeating the same mistakes. Example triggers: - User says "No, you should..." or...
categorystringworkflow · code_quality · verification · communication · project_specificimpactstringkeywordsarraypreventionstringproject_idstringseveritystringlow · medium · high · criticaldefault: mediumtitlestringtriggerstringworkspace_idstringsession_get_lessonsRetrieve lessons learned from past mistakes and corrections. Use this to check for relevant warnings before taking actions that have caused problems before. Returns lessons filtered by: - Query: semantic search for relevant lessons - Category: workflow, code_quality, verificat...6 paramsRetrieve lessons learned from past mistakes and corrections. Use this to check for relevant warnings before taking actions that have caused problems before. Returns lessons filtered by: - Query: semantic search for relevant lessons - Category: workflow, code_quality, verificat...
categorystringworkflow · code_quality · verification · communication · project_specificlimitnumberproject_idstringquerystringseveritystringlow · medium · high · criticalworkspace_idstringsession_smart_searchSearch memory with automatic context enrichment. Returns memory matches, relevant code, and related decisions in one call. Access: Free5 paramsSearch memory with automatic context enrichment. Returns memory matches, relevant code, and related decisions in one call. Access: Free
include_decisionsbooleaninclude_relatedbooleanproject_idstringquerystringworkspace_idstringsession_rememberQuick way to store something in memory. Use natural language. Example: "Remember that I prefer TypeScript strict mode" or "Remember we decided to use PostgreSQL" Access: Free5 paramsQuick way to store something in memory. Use natural language. Example: "Remember that I prefer TypeScript strict mode" or "Remember we decided to use PostgreSQL" Access: Free
await_indexingbooleancontentstringimportancestringlow · medium · highproject_idstringworkspace_idstringsession_recallQuick way to recall relevant context. Use natural language. Example: "What were the auth decisions?" or "What are my TypeScript preferences?" Access: Free3 paramsQuick way to recall relevant context. Use natural language. Example: "What were the auth decisions?" or "What are my TypeScript preferences?" Access: Free
project_idstringquerystringworkspace_idstringgenerate_editor_rulesGenerate AI rule files for editors (Windsurf, Cursor, Cline, Kilo Code, Roo Code, Claude Code, Aider). These rules instruct the AI to automatically use ContextStream for memory and context. Supported editors: codex, windsurf, cursor, cline, kilo, roo, claude, aider Access: Free8 paramsGenerate AI rule files for editors (Windsurf, Cursor, Cline, Kilo Code, Roo Code, Claude Code, Aider). These rules instruct the AI to automatically use ContextStream for memory and context. Supported editors: codex, windsurf, cursor, cline, kilo, roo, claude, aider Access: Free
additional_rulesstringdry_runbooleaneditorsarrayfolder_pathstringmodestringminimal · fullproject_namestringworkspace_idstringworkspace_namestringsession_summaryGet a compact, token-efficient summary of workspace context (~500 tokens). This is designed to replace loading full chat history in AI prompts. Returns: workspace/project info, top decisions (titles only), preferences, memory count. Use this at conversation start instead of lo...3 paramsGet a compact, token-efficient summary of workspace context (~500 tokens). This is designed to replace loading full chat history in AI prompts. Returns: workspace/project info, top decisions (titles only), preferences, memory count. Use this at conversation start instead of lo...
max_tokensnumberproject_idstringworkspace_idstringsession_compressExtract and store key information from chat history as memory events. This allows clearing chat history while preserving important context. Use at conversation end or when context window is getting full. Extracts: - Decisions made - User preferences learned - Insights discover...4 paramsExtract and store key information from chat history as memory events. This allows clearing chat history while preserving important context. Use at conversation end or when context window is getting full. Extracts: - Decisions made - User preferences learned - Insights discover...
chat_historystringextract_typesarrayproject_idstringworkspace_idstringsession_deltaGet new context added since a specific timestamp. Useful for efficient context synchronization without reloading everything. Returns: - Count of new decisions and memory events - List of new items with titles and timestamps Use case: AI can track what's new since last session_...4 paramsGet new context added since a specific timestamp. Useful for efficient context synchronization without reloading everything. Returns: - Count of new decisions and memory events - List of new items with titles and timestamps Use case: AI can track what's new since last session_...
limitnumberproject_idstringsincestringworkspace_idstringcontext_smart**CALL THIS BEFORE EVERY AI RESPONSE** to get relevant context. This is the KEY tool for token-efficient AI interactions. It: 1. Analyzes the user's message to understand what context is needed 2. Retrieves only relevant context in a minified, token-efficient format 3. Replace...5 params**CALL THIS BEFORE EVERY AI RESPONSE** to get relevant context. This is the KEY tool for token-efficient AI interactions. It: 1. Analyzes the user's message to understand what context is needed 2. Retrieves only relevant context in a minified, token-efficient format 3. Replace...
formatstringminified · readable · structuredmax_tokensnumberproject_idstringuser_messagestringworkspace_idstringreminders_listList all reminders for the current user. Returns: reminders with title, content, remind_at, priority, status, and keywords. Can filter by status (pending, completed, dismissed, snoozed) and priority (low, normal, high, urgent). Use this to see what reminders you have set. Acce...5 paramsList all reminders for the current user. Returns: reminders with title, content, remind_at, priority, status, and keywords. Can filter by status (pending, completed, dismissed, snoozed) and priority (low, normal, high, urgent). Use this to see what reminders you have set. Acce...
limitnumberprioritystringlow · normal · high · urgentproject_idstringstatusstringpending · completed · dismissed · snoozedworkspace_idstringreminders_activeGet active reminders that are pending, overdue, or due soon. Returns: reminders with urgency levels (overdue, due_soon, today, upcoming). Optionally provide context (e.g., current task description) to get contextually relevant reminders. Use this to see what reminders need att...4 paramsGet active reminders that are pending, overdue, or due soon. Returns: reminders with urgency levels (overdue, due_soon, today, upcoming). Optionally provide context (e.g., current task description) to get contextually relevant reminders. Use this to see what reminders need att...
contextstringlimitnumberproject_idstringworkspace_idstringreminders_createCreate a new reminder for a specific date/time. Set reminders to be notified about tasks, follow-ups, or important dates. Priority levels: low, normal, high, urgent Recurrence: daily, weekly, monthly (optional) Example: Create a reminder to "Review PR #123" for tomorrow at 10a...8 paramsCreate a new reminder for a specific date/time. Set reminders to be notified about tasks, follow-ups, or important dates. Priority levels: low, normal, high, urgent Recurrence: daily, weekly, monthly (optional) Example: Create a reminder to "Review PR #123" for tomorrow at 10a...
contentstringkeywordsarrayprioritystringlow · normal · high · urgentproject_idstringrecurrencestringdaily · weekly · monthlyremind_atstringtitlestringworkspace_idstringreminders_snoozeSnooze a reminder until a later time. Use this to postpone a reminder without dismissing it. Common snooze durations: - 1 hour: add 1 hour to current time - 4 hours: add 4 hours - Tomorrow: next day at 9am - Next week: 7 days from now Access: Free2 paramsSnooze a reminder until a later time. Use this to postpone a reminder without dismissing it. Common snooze durations: - 1 hour: add 1 hour to current time - 4 hours: add 4 hours - Tomorrow: next day at 9am - Next week: 7 days from now Access: Free
reminder_idstringuntilstringreminders_completeMark a reminder as completed. Use this when the task or action associated with the reminder is done. Access: Free1 paramsMark a reminder as completed. Use this when the task or action associated with the reminder is done. Access: Free
reminder_idstringreminders_dismissDismiss a reminder without completing it. Use this to remove a reminder that is no longer relevant. Access: Free1 paramsDismiss a reminder without completing it. Use this to remove a reminder that is no longer relevant. Access: Free
reminder_idstring
Persistent memory. Millisecond code search.
Connect your code, docs, and conversations so your agents can find the right files, recall saved decisions, and build on past work across sessions and tools.
10,000 monthly credits. No credit card required.
Works with Claude Code, Cursor, Codex, GitHub Copilot, Gemini CLI, Qwen Code, Kimi Code, Muse Code, ZCode, Zed, and more MCP clients, on Claude, GPT, Gemini, Kimi, GLM, Qwen, and other models. Create your account or sign in during MCP onboarding. No separate website signup needed.
macOS and Linux
curl -fsSL https://contextstream.io/scripts/mcp.sh | bash
Windows PowerShell
irm https://contextstream.io/scripts/mcp.ps1 | iex
Paste the command into your terminal and follow onboarding to connect your project and supported editor. Restart your editor after setup.
What gets installed and indexed? · Supported clients · Setup guide · Prefer to start on the web?
Ask your connected agent:
Use ContextStream to find the files relevant to my next change. Cite the sources and retrieve any saved project decisions that should guide the work.
Then ask it to save a real decision and its reason. Start a new session and retrieve that decision without explaining it again. Indexing supplies code context; it cannot recover every undocumented decision.
95 ms median code search in our published benchmark. This is the measured successful-response median for the disclosed configuration, not a latency guarantee. See results, methodology, and limitations.
Scoped access. Traceable sources. Configurable capture. Indexing sends eligible source contents to ContextStream for hosted search. Transcript saving and local Git metadata capture are on by default and can be turned off. Review data handling and controls before connecting sensitive projects.
npx -y @contextstream/mcp-server@latest setup
The npm launcher downloads the native Rust binary for your platform and verifies its SHA-256 checksum. Pin an exact package version for production automation.
For clients supporting Streamable HTTP and OAuth, the hosted endpoint is:
https://mcp.contextstream.io/mcp?default_context_mode=fast
Supported clients lists one-line add commands for Claude Code, Codex, Gemini CLI, Qwen Code, Copilot CLI, and Droid, and one-click install for VS Code. Use the MCP documentation for other clients and stdio alternatives. A hosted connection alone does not sync your local checkout.
contextstream-mcp setup --dry-run
contextstream-mcp doctor --scope=all --only-configured
For automation, wrap the install in pipefail so it fails when the download
fails, instead of reporting success after installing nothing:
bash -o pipefail -c 'curl -fsSL https://contextstream.io/scripts/mcp.sh | bash'
setup --yes reads the key from CONTEXTSTREAM_API_KEY or saved credentials,
and needs --workspace-id when the account has more than one workspace:
export CONTEXTSTREAM_API_KEY=... # or: printf %s "$KEY" | contextstream-mcp configure --api-key-stdin
contextstream-mcp setup --yes --editors=claude --workspace-id=<UUID> --project-path=.
This repository contains the MIT-licensed Rust MCP server, client, editor setup, and release tooling. The hosted backend is separate and is not included here. See the architecture, release integrity, and latest release.
cargo build --locked -p mcp-server --bin contextstream-mcp
cargo test --locked --workspace
Use the pinned Rust toolchain. For contribution checks and commit sign-off, read CONTRIBUTING.md. Report vulnerabilities using SECURITY.md. See LICENSE, NOTICE, and GOVERNANCE.md for licensing, trademarks, and project governance.
Let humans be human.
Docs · Pricing · Integrations · Benchmarks
Deep project learning starts off for new accounts. Plain contextstream-mcp setup --yes
preserves your current choice. To review consent, run
contextstream-mcp configure --account-learning on and confirm on the signed-in
privacy page. To withdraw, run contextstream-mcp configure --account-learning off.
Agents cannot consent for you. Doctor and init show status only. See
data handling and controls.