A collection of Model Context Protocol (MCP) servers to enhance AI models with persistent context across work sessions throughout the project lifecycle.
Context for each project is stored in a domain-specific knowledge graph handled by the domain's server. All domain servers can be managed through a central Context Manager that provides unified access.
Each domain server is also a standalone MCP Server that you can use on its own without the Context Manager.
buildcontext
, loadcontext
, and deletecontext
as you progress from idea to production/publication/completionstartsession
tool to get an overview of what you've been working on in past sessionsendsession
tool to analyze the entire session and update knowledge graph for future sessionsTo free up the context window (performance), and minimize token cost (efficiency).
The contextmanager orchestrates several domain-specific MCP servers:
Developer MCP Server: software development context with entities like projects, components, and tasks. Includes status tracking (inactive, active, complete), priority management (high, low), and task sequencing through precedes relations.
Project MCP Server: project management context with entities like projects, tasks, and resources. Features status management (inactive, active, complete), priority assignment (high, low), and task sequencing capabilities.
Student MCP Server: educational context with entities like courses, assignments, and exams. Supports tracking status (active, completed, pending, abandoned), prioritizing assignments (high, low), and creating learning sequences.
Qualitative Research MCP Server: qualitative research context with entities like studies, participants, and interviews. Includes research activity status tracking (active, completed, pending, abandoned), priority management (high, low), and analysis sequencing.
Quantitative Research MCP Server: quantitative research context with entities like datasets, variables, and analyses. Features status management (active, completed, pending, abandoned), priority assignment (high, low), and sequential process management.
For detailed documentation on each domain server, see the README files in their respective directories:
The Context Manager provides:
The Context Manager uses the MCP Client SDK to communicate with domain-specific MCP servers. It:
The Context Manager uses absolute paths constructed at runtime to locate domain servers. If you need to modify paths to domain servers, update the domains
array in main/index.ts
.
You can use the MCP Context Manager in several ways:
Run directly with npx:
npx github:tejpalvirk/contextmanager
Install globally to make all servers available as commands:
npm install -g github:tejpalvirk/contextmanager
Then run:
mcp-server-contextmanager
Or run a specific domain server directly:
contextmanager-developer
contextmanager-project
contextmanager-student
contextmanager-qualitativeresearch
contextmanager-quantitativeresearch
For development or customization:
git clone https://github.com/tejpalvirk/contextmanager.git
cd contextmanager
npm install
npm run build
Then run:
node main/index.js
The Context Manager and domain servers accept the following command-line arguments:
# Run on a specific port (default: 3000)
npx github:tejpalvirk/contextmanager --port 3001
# Enable debug logging
npx github:tejpalvirk/contextmanager --debug
# Specify a config file
npx github:tejpalvirk/contextmanager --config ./my-config.json
# Run only specific domain servers
npx github:tejpalvirk/contextmanager --domains developer,project
Each domain server supports the following environment variables to customize where data is stored:
MEMORY_FILE_PATH: Path where the knowledge graph data will be stored
<domain_directory>/memory.json
SESSIONS_FILE_PATH: Path where session data will be stored
<domain_directory>/sessions.json
Example usage:
# Store data in the current directory
MEMORY_FILE_PATH="./my-dev-memory.json" SESSIONS_FILE_PATH="./my-dev-sessions.json" npx github:tejpalvirk/contextmanager
# Store data in a specific location (absolute path)
MEMORY_FILE_PATH="/path/to/data/developer-memory.json" npx github:tejpalvirk/contextmanager
# Store data in user's home directory
MEMORY_FILE_PATH="$HOME/contextmanager/memory.json" npx github:tejpalvirk/contextmanager
Use the setActiveDomain
tool to select which domain you want to work with:
setActiveDomain(domain="developer")
Start a new session for the active domain:
startsession(domain="developer")
End a session when you're done:
endsession(sessionId="session_id_here", stage="assembly", stageNumber=6, totalStages=6, nextStageNeeded=false)
Build context for the active domain:
buildcontext(type="entities", data={...})
Load context for a specific entity:
loadcontext(entityName="MyProject", entityType="project")
Delete context:
deletecontext(type="entities", data={...})
Assign status to entities:
buildcontext(type="relations", data=[
{ from: "LoginFeature", to: "active", relationType: "has_status" }
])
Set entity priorities:
buildcontext(type="relations", data=[
{ from: "BugFix", to: "high", relationType: "has_priority" }
])
Define sequential relationships:
buildcontext(type="relations", data=[
{ from: "DataModel", to: "UserInterface", relationType: "precedes" }
])
// Set the active domain to developer
setActiveDomain(domain="developer")
// Start a new session
startsession(domain="developer")
// Create a new project entity
buildcontext(type="entities", data={
"entityType": "project",
"name": "MyProject",
"description": "A sample project",
"language": "TypeScript",
"framework": "React"
})
// Load context for the project
loadcontext(entityName="MyProject", entityType="project")
// Create a component for the project and set its status to active
buildcontext(type="entities", data={
"entityType": "component",
"name": "AuthService",
"project": "MyProject",
"description": "Authentication service component",
"dependencies": ["UserService"]
})
buildcontext(type="relations", data=[
{ from: "AuthService", to: "active", relationType: "has_status" },
{ from: "AuthService", to: "high", relationType: "has_priority" }
])
Create relationships between entities in different domains:
relateCrossDomain(fromDomain="developer", fromEntity="ProjectX", toDomain="project", toEntity="ProjectX", relationType="manages")
// Create relationship between developer project and project management task
relateCrossDomain(
fromDomain="developer",
fromEntity="MyProject",
toDomain="project",
toEntity="ProjectX",
relationType="manages"
)
In Claude Desktop, configure the Context Manager in settings:
{
"mcpServers": {
"contextmanager": {
"command": "npx",
"args": [
"-y",
"github:tejpalvirk/contextmanager"
],
"options": {
"port": 3000,
"domains": ["developer", "project", "student"]
}
}
}
}
Port Already in Use:
Error: listen EADDRINUSE: address already in use :::3000
Solution: Use the --port
option to specify a different port.
Connection Refused:
Error: connect ECONNREFUSED 127.0.0.1:3000
Solution: Ensure the server is running and accessible at the specified address.
Domain Server Not Found:
Error: Domain server 'developer' not found
Solution: Check that the domain name is correct and the server is registered in the Context Manager.
Path Resolution Errors:
Error: Cannot find module '...'
Solution: Ensure all paths in the domains
array in main/index.ts
are correctly specified.
Method Not Found:
Error: Method 'buildcontext' not found in domain 'developer'
Solution: Verify the method name and ensure it is supported by the domain server.
Invalid Status or Priority Value:
Error: Invalid status value 'in_progress'. Valid values are: inactive, active, complete
Solution: Ensure you're using the correct status values for the specific domain.
This package follows Semantic Versioning:
Current version: 1.0.0
Contributions are welcome! Please follow these steps:
git checkout -b feature/amazing-feature
)git commit -m 'Add some amazing feature'
)git push origin feature/amazing-feature
)npm install
npm run build
npm test
MIT
This project builds on the Model Context Protocol created by Anthropic for Claude.
Seamless access to top MCP servers powering the future of AI integration.