claude server
Provides sophisticated context management for Claude, enabling persistent context across sessions, project-specific organization, and conversation continuity.
Provides sophisticated context management for Claude, enabling persistent context across sessions, project-specific organization, and conversation continuity.
⚠️ IMPORTANT: Project Status ⚠️
This project is in early development (v0.1.0) and is NOT READY FOR PRODUCTION USE. It is currently undergoing a significant rewrite to address several critical issues. Please check the Issues page for current limitations and planned improvements.
We recommend waiting for a stable release (v0.2.0+) before using this in any critical workflows.
A Model Context Protocol (MCP) server that provides sophisticated context management capabilities for Claude, enabling persistent context across sessions, project-specific context organization, and conversation continuity.
This project is actively being improved. Key upcoming enhancements include:
For a more detailed roadmap, see our Comprehensive Analysis branch.
Project-specific metadata
Conversation Continuity
Flexible tagging system
Efficient Storage
The server is automatically configured in your Claude desktop app's MCP settings. All contexts are stored in ~/.claude/
for better organization:
~/.claude/
├── contexts/ # General conversation contexts
├── projects/ # Project-specific contexts
└── context-index.json # Quick lookup index
// Save project context
use_mcp_tool({
server_name: "claude-server",
tool_name: "save_project_context",
arguments: {
id: "feature-design-v1",
projectId: "my-project",
content: "Design discussion...",
parentContextId: "requirements-v1",
references: ["api-spec-v1"],
tags: ["design"],
metadata: { status: "in-progress" }
}
});
// Save conversation context
use_mcp_tool({
server_name: "claude-server",
tool_name: "save_conversation_context",
arguments: {
id: "chat-2024-01-01",
sessionId: "session-123",
content: "Discussion content...",
continuationOf: "previous-chat-id",
tags: ["meeting"]
}
});
// Get context
use_mcp_tool({
server_name: "claude-server",
tool_name: "get_context",
arguments: {
id: "feature-design-v1",
projectId: "my-project"
}
});
// List contexts
use_mcp_tool({
server_name: "claude-server",
tool_name: "list_contexts",
arguments: {
projectId: "my-project",
tag: "design",
type: "project"
}
});
npm install
npm run build
build/index.js
The server is configured through the Claude desktop app's configuration file at:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"claude-server": {
"command": "node",
"args": ["/path/to/claude-server/build/index.js"]
}
}
}
Contributions are welcome! Please feel free to submit issues and pull requests.
MIT
[
{
"description": "Save project-specific context with relationships",
"inputSchema": {
"properties": {
"content": {
"description": "Context content to save",
"type": "string"
},
"id": {
"description": "Unique identifier for the context",
"type": "string"
},
"metadata": {
"description": "Optional additional metadata",
"type": "object"
},
"parentContextId": {
"description": "Optional ID of parent context",
"type": "string"
},
"projectId": {
"description": "Project identifier",
"type": "string"
},
"references": {
"description": "Optional related context IDs",
"items": {
"type": "string"
},
"type": "array"
},
"tags": {
"description": "Optional tags for categorizing",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"id",
"projectId",
"content"
],
"type": "object"
},
"name": "save_project_context"
},
{
"description": "Save conversation context with continuation support",
"inputSchema": {
"properties": {
"content": {
"description": "Context content to save",
"type": "string"
},
"continuationOf": {
"description": "Optional ID of previous context",
"type": "string"
},
"id": {
"description": "Unique identifier for the context",
"type": "string"
},
"metadata": {
"description": "Optional additional metadata",
"type": "object"
},
"sessionId": {
"description": "Conversation session identifier",
"type": "string"
},
"tags": {
"description": "Optional tags for categorizing",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"id",
"sessionId",
"content"
],
"type": "object"
},
"name": "save_conversation_context"
},
{
"description": "Retrieve context by ID and optional project ID",
"inputSchema": {
"properties": {
"id": {
"description": "ID of the context to retrieve",
"type": "string"
},
"projectId": {
"description": "Optional project ID for project contexts",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "get_context"
},
{
"description": "List contexts with filtering options",
"inputSchema": {
"properties": {
"projectId": {
"description": "Optional project ID to filter by",
"type": "string"
},
"tag": {
"description": "Optional tag to filter by",
"type": "string"
},
"type": {
"description": "Optional type to filter by",
"enum": [
"project",
"conversation"
],
"type": "string"
}
},
"type": "object"
},
"name": "list_contexts"
}
]