MCP Project Context Server
Tracks Docker as part of the technology stack for projects, allowing it to be specified during project creation and maintained in the project context
Supports Next.js as a frontend technology option, allowing it to be specified during project creation and maintained in the project context
Supports Node.js as a backend technology option, allowing it to be specified during project creation and maintained in the project context
Supports PostgreSQL as a database technology option, allowing it to be specified during project creation and maintained in the project context
Supports recording architectural decisions about using Prisma as an ORM, tracking it as part of the technology choices
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Project Context Serverwhat's the current status of my e-commerce project and what should I work on next?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Project Context Server
A Model Context Protocol (MCP) server that provides persistent project context and planning state between Claude Code sessions. This eliminates the need to re-explain project details, current status, and development context every time you start a new coding session.
What It Does
The MCP Project Context Server acts as a persistent memory layer for your development projects, maintaining:
Project Information: Name, description, current phase, and status
Technology Stack: Frontend, backend, database, infrastructure, and tooling choices
Task Management: Development tasks with priorities, status tracking, and dependencies
Decision History: Architectural and technical decisions with reasoning
Session Continuity: Goals, achievements, and blockers from previous sessions
Development Notes: Important observations and insights
Related MCP server: agent-mem0
How It Works
The server implements the Model Context Protocol to provide Claude Code with tools for managing project context:
Project Creation: Initialize new projects with tech stack and current phase
Context Retrieval: Get comprehensive project state and history
Task Management: Create, update, and track development tasks
Decision Recording: Document important technical and architectural decisions
Session Tracking: Maintain continuity between development sessions
Note Taking: Capture important insights and observations
Data is stored as JSON files in a local data directory, making it easy to backup, version control, or inspect manually.
Key Features
Persistent Context: Project state survives between Claude Code sessions
Technology Stack Awareness: Tracks your preferred technologies and tools
Task Prioritization: Organize work with priority levels and status tracking
Decision Documentation: Maintain architectural decision records (ADRs)
Session Goals: Track what you planned vs what you achieved
File-Based Storage: Simple JSON storage that's easy to understand and backup
Prerequisites
Node.js 18 or higher
pnpm package manager
Claude Code CLI tool
Installation
Clone and setup the project:
git clone <repository-url>
cd mcp-project-context
pnpm installBuild the server:
pnpm run buildMake the server executable:
chmod +x dist/index.jsConfiguration
Claude Code Setup
Create or edit the Claude Code MCP configuration file:
mkdir -p ~/.claudeAdd your server configuration to `~/.claude.json:
{
"mcpServers": {
"mcp-project-context": {
"type": "stdio",
"command": "/path/to/mcp-project-context/dist/index.js",
"args": [],
"env": {}
}
}
}Replace /absolute/path/to/your/mcp-project-context with the actual path to your project directory.
Verify the configuration:
cat ~/.claude/mcp.jsonUsage
Once configured, Claude Code will automatically start and connect to your MCP server. You can then use natural language to interact with your project context:
Example Commands
Create a new project:
"Create a new project called 'E-commerce Platform' for building a modern online store using Next.js, Node.js, PostgreSQL, and Docker"Get current project status:
"What's the current status of my project? Where did we leave off?"Add development tasks:
"Add a high-priority task to implement user authentication with OAuth"Record architectural decisions:
"Record that we decided to use Prisma as our ORM because it provides better TypeScript support and easier migrations"Update task status:
"Mark the authentication task as completed"Add project notes:
"Add a note that the API rate limiting is causing issues in development"Available Tools
The server provides these tools to Claude Code:
create_project- Initialize a new project with tech stack and descriptionget_project_context- Retrieve comprehensive project state and historylist_projects- Show all projects ordered by last accessadd_task- Create new development tasks with prioritiesupdate_task- Modify task status, priority, or detailsadd_note- Capture important observations and insightsrecord_decision- Document architectural and technical decisionsstart_session- Begin a development session with specific goals
Data Storage
Project data is stored in the data directory:
data/
├── projects/
│ ├── project-uuid-1.json
│ ├── project-uuid-2.json
│ └── project-uuid-3.json
└── sessions/
├── session-uuid-1.json
├── session-uuid-2.json
└── session-uuid-3.jsonEach file contains structured JSON data that you can inspect or backup as needed.
Development
Project Structure
mcp-project-context/
├── src/
│ ├── index.ts # Entry point
│ ├── server.ts # MCP server implementation
│ ├── storage/
│ │ ├── project-store.ts # File-based storage layer
│ │ └── context-manager.ts # Context management logic
│ └── types/
│ └── project-types.ts # TypeScript type definitions
├── data/ # Project data storage
├── package.json
├── tsconfig.json
└── README.mdAvailable Scripts
pnpm run build- Compile TypeScript to JavaScriptpnpm run start- Run the compiled serverpnpm run dev- Run in development mode with auto-reload
Testing the Server
You can test the server manually:
# Start the server directly
node dist/index.js
# The server will wait for MCP protocol messages via stdinFor interactive testing, use the MCP Inspector:
npx @modelcontextprotocol/inspector node dist/index.jsTroubleshooting
Server Connection Issues
Verify the server builds successfully:
pnpm run buildCheck that the executable bit is set:
ls -la dist/index.js
chmod +x dist/index.jsTest the server manually:
node dist/index.jsVerify Claude Code configuration:
cat ~/.claude/mcp.jsonData Directory Issues
If you encounter permission errors, ensure the data directory exists and is writable:
mkdir -p data/projects data/sessions
chmod -R 755 data/Claude Code Logs
Check Claude Code logs for connection issues:
# The server logs errors to stderr, which Claude Code captures
# Check your terminal output when starting Claude CodePrivacy and Data
All project data is stored locally on your machine
No data is transmitted to external services
JSON files can be easily backed up or version controlled
Each developer/machine maintains separate project contexts
Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
License
MIT License - see LICENSE file for details
Support
For issues related to:
MCP Protocol: See Model Context Protocol documentation
Claude Code: See Claude Code documentation
READ THE DOCS: See official TS SDK for MCP
This Server: Open an issue in this repository
Available Tools
9 toolsadd_noteAdd NoteC
Add a note to the project
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project ID | |
| content | Yes | Note content | |
| category | No | Note category |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'Add a note' which implies a write operation, but doesn't disclose behavioral traits such as permissions required, whether notes are editable/deletable, rate limits, or what happens on success/failure. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like side effects, error handling, or return values, leaving significant gaps for an AI agent to understand how to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters (projectId, content, category) with basic descriptions. The description adds no additional meaning beyond what the schema provides, such as format examples or constraints, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add') and target ('note to the project'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'record_decision' or 'add_task', which might also involve adding content to projects, so it lacks sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'add_task', 'record_decision', and 'create_project', there's no indication of when a note is appropriate versus other types of project additions or updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_taskAdd TaskC
Add a new task to the project
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project ID | |
| title | Yes | Task title | |
| description | No | Task description | |
| priority | Yes | Task priority | |
| tags | No | Task tags |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is an 'Add' operation, implying a write/mutation, but doesn't address permissions, side effects, error conditions, or what happens on success (e.g., returns a task ID). For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose with zero wasted words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 5 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what the tool returns, error handling, authentication requirements, or how it differs from sibling tools. The combination of write operation complexity and lack of structured metadata requires more descriptive context than provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing clear documentation for all 5 parameters including types, required status, enums for priority, and defaults for tags. The description adds no parameter-specific information beyond what's in the schema, so it meets the baseline for high schema coverage without compensating with extra semantic context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add') and resource ('new task to the project'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'update_task' or 'create_project', which would require more specific language about what makes this tool unique for task creation versus project creation or task modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'update_task' or 'create_project'. There's no mention of prerequisites, context, or exclusions, leaving the agent to infer usage based solely on the tool name and basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectCreate ProjectC
Create a new project with initial context
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project name | |
| description | Yes | Project description | |
| techStack | No | ||
| currentPhase | Yes | Current project phase |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Create' implies a write operation, the description doesn't address permissions required, whether the operation is idempotent, what happens on duplicate names, or what the response contains. For a mutation tool with zero annotation coverage, this leaves significant behavioral questions unanswered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise at 6 words, front-loading the essential action. Every word earns its place: 'Create' (verb), 'new project' (resource), 'with initial context' (scope). There's no wasted language or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 4 parameters (including a complex nested object), no annotations, and no output schema, the description is insufficient. It doesn't explain what 'initial context' means, what happens after creation, or provide any behavioral context. The agent would need to guess about the tool's full behavior and output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 75% schema description coverage, the schema already documents most parameters well. The description adds minimal value beyond what's in the schema - 'initial context' vaguely relates to parameters but doesn't explain how 'techStack' or 'currentPhase' contribute to that context. The baseline of 3 is appropriate given the schema does substantial documentation work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create') and resource ('new project'), making the purpose immediately understandable. It distinguishes from siblings like 'list_projects' or 'get_project_context' by specifying creation rather than retrieval. However, it doesn't explicitly differentiate from potential similar creation tools that might exist in other contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, when this should be used instead of other project-related tools, or what constitutes 'initial context' that would trigger its use. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
end_sessionEnd SessionC
End current session with summary
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID | |
| achievements | No | Session achievements | |
| blockers | No | Blockers encountered | |
| nextSession | No | Plans for next session |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. 'End current session with summary' implies a mutation (ending something) but doesn't disclose behavioral traits like whether this is destructive, what happens to session data, if it requires specific permissions, or what the summary output looks like. It lacks details on side effects or system behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core action ('End current session') and adds a clarifying detail ('with summary'). Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a mutation tool (implied by 'End'), the description is incomplete. It doesn't explain what 'ending a session' means in this context, what the summary includes, or what the tool returns. For a tool with 4 parameters and potential side effects, more context is needed to guide the agent effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 4 parameters. The description adds no parameter semantics beyond what's in the schema—it doesn't explain how 'achievements', 'blockers', or 'nextSession' relate to the summary or session ending. Baseline 3 is appropriate as the schema handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'End current session with summary' states the verb ('End') and resource ('current session'), but it's vague about what 'with summary' entails. It doesn't clearly distinguish this tool from sibling tools like 'start_session' or explain what ending a session actually does beyond the summary aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., must have an active session), exclusions, or relationships to sibling tools like 'start_session' or 'add_note'. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_contextGet Project ContextC
Get comprehensive project context and current state
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'gets' information, implying a read-only operation, but doesn't clarify permissions, rate limits, or what 'comprehensive context' entails (e.g., includes tasks, notes, decisions). For a tool with no annotations, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence: 'Get comprehensive project context and current state'. It's front-loaded with the core purpose and avoids unnecessary words. However, it could be slightly more specific without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (retrieving project context), no annotations, no output schema, and a simple input schema, the description is minimally adequate. It states what the tool does but lacks details on return values, behavioral constraints, or usage context. It meets the bare minimum for a read operation but leaves the agent guessing about the output format and scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single parameter 'projectId' documented as 'Project ID'. The description doesn't add any parameter-specific details beyond what the schema provides, but with only one parameter and high schema coverage, the baseline is high. No additional value is added, but no compensation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's purpose as 'Get comprehensive project context and current state', which is clear but vague. It specifies the verb 'Get' and resource 'project context', but doesn't distinguish it from potential sibling tools like 'list_projects' or provide specifics about what 'comprehensive context' includes. This is adequate but lacks differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'list_projects' and 'create_project', there's no indication of when this retrieval tool is appropriate versus listing or creating projects. The agent must infer usage from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsList ProjectsB
List all projects ordered by last accessed
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the ordering behavior ('ordered by last accessed'), which is useful. However, it lacks critical details: whether it's paginated, what fields are returned, if it requires authentication, or any rate limits. For a list operation with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It front-loads the core action ('List all projects') and adds a useful constraint ('ordered by last accessed') without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain the return format, pagination, or authentication needs. For a list tool that likely returns multiple items, this leaves the agent with insufficient context to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description adds no parameter information, which is appropriate. Baseline is 4 for zero parameters, as the schema fully covers the absence of inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('projects') with a specific ordering constraint ('ordered by last accessed'). It distinguishes from siblings like 'create_project' by indicating retrieval rather than creation. However, it doesn't explicitly differentiate from potential other listing tools (though none are present in the sibling list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or compare with siblings like 'get_project_context' for specific project details. The agent must infer usage solely from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_decisionRecord DecisionC
Record an architectural or technical decision
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project ID | |
| decision | Yes | Decision made | |
| reasoning | Yes | Reasoning behind the decision | |
| impact | No | Expected impact of the decision |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Record' implies a write operation, but the description doesn't specify whether this creates a new record, updates an existing one, requires permissions, has side effects, or what the response looks like. It lacks details on persistence, error handling, or any behavioral traits beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse. Every part of the sentence contributes directly to understanding the tool's purpose, achieving optimal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a write operation with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like what happens after recording, error conditions, or return values. For a tool that likely mutates data, more context is needed to guide the agent effectively, leaving significant gaps in understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for all parameters (e.g., 'Decision made', 'Reasoning behind the decision'). The description adds no additional semantic context beyond what the schema provides, such as examples or usage notes. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, but there's no extra value from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'record' and the resource 'architectural or technical decision', making the purpose understandable. However, it doesn't differentiate this tool from sibling tools like 'add_note' or 'add_task', which might also record information but for different types of content. The description is specific about what kind of decision is being recorded.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context (e.g., during project planning), or exclusions. With siblings like 'add_note' and 'add_task', there's no indication of how this tool differs in usage, leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_sessionStart SessionC
Start a new development session
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project ID | |
| goals | Yes | Session goals |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the action without disclosing behavioral traits. It doesn't mention if this creates persistent resources, requires authentication, has side effects, or what happens upon success/failure, which is inadequate for a tool that likely initiates a stateful process.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded and appropriately sized for the tool's apparent complexity, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a tool that likely creates a stateful session, the description is incomplete. It doesn't explain what a session is, what it enables, or what the agent should expect after invocation, leaving significant gaps for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (projectId and goals). The description adds no meaning beyond this, such as explaining how goals influence the session or what projectId references. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Start a new development session' clearly states the action (start) and resource (session), but it's vague about what a 'development session' entails and doesn't distinguish from sibling tools like 'end_session' or 'create_project'. It's functional but lacks specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'create_project' or 'end_session'. The description implies initiation but doesn't specify prerequisites, timing, or exclusions, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskUpdate TaskC
Update task status or details
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project ID | |
| taskId | Yes | Task ID | |
| status | No | New task status | |
| title | No | New task title | |
| description | No | New task description | |
| priority | No | New task priority |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is an update operation (implying mutation) but doesn't mention required permissions, whether changes are reversible, error handling, or what happens to existing fields not specified. This leaves significant behavioral gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized and front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 6 parameters and no annotations or output schema, the description is inadequate. It doesn't explain what happens when only some fields are provided, whether updates are partial or complete, what the response looks like, or any error conditions. The description should provide more context given the complexity and lack of structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so all parameters are documented in the schema. The description mentions 'status or details' which aligns with the schema's parameters (status, title, description, priority), but adds no additional semantic context beyond what the schema already provides. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Update') and resource ('task') along with what can be updated ('status or details'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'add_task', but the 'update' vs 'add' distinction is implied through the naming convention.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'add_task' or 'record_decision', nor does it mention prerequisites or context for updating tasks. It simply states what the tool does without any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
9 tool updates
- First observed
add_note - First observed
add_task - First observed
create_project - First observed
end_session - First observed
get_project_context - First observed
list_projects - First observed
record_decision - First observed
start_session - First observed
update_task
TDQS
Each tool has a clearly distinct purpose targeting different project management functions: project creation/listing, session management, task/note/decision handling, and context retrieval. No tools overlap in functionality, making selection straightforward for an agent.
All tools follow a consistent verb_noun naming pattern (e.g., add_note, create_project, get_project_context) with clear, descriptive action-object pairs. There are no deviations in style or convention across the set.
With 9 tools, the server is well-scoped for project context management, covering core operations like project lifecycle, session handling, and task/note/decision tracking. Each tool earns its place without bloat or gaps.
The toolset provides strong coverage for project context workflows, including CRUD-like operations for projects, tasks, notes, and decisions, plus session management. A minor gap exists in updating or deleting notes/decisions, but agents can work around this with the available tools.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Persistent memory for Claude Code and Cursor. Stop re-explaining your project every session.
Persistent cross-session memory shared by Codex, Claude Code, ChatGPT, and other AI agents.
Persistent, governed institutional memory for Claude Code — specs, decisions, learnings.
Persistent context for Claude. Your AI always knows your projects and next actions across sessions.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA persistent memory server for Claude Code that captures session context and tool outputs to inject relevant history into future sessions. It enables long-term recall through semantic search and automatic context management, allowing for more consistent and context-aware coding interactions.10253ISC
- AlicenseNot gradedqualityDmaintenanceProvides persistent cross-session memory for Claude Code, enabling it to remember user preferences, decisions, and project context across new sessions.Apache 2.0
- AlicenseAqualityFmaintenancePersistent memory and automatic git snapshots for Claude Code, capturing decisions, patterns, and architecture across sessions.107698MIT
- AlicenseNot gradedqualityDmaintenancePersistent memory for Claude Code — a self-evolving knowledge layer that survives across sessions, grows from every conversation, and surfaces relevant context automatically.14MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/aaronfeingold/mcp-project-context'
If you have feedback or need assistance with the MCP directory API, please join our Discord server