A Model Context Protocol (MCP) server that provides prompt storage and retrieval functionality. Store, version, and manage your prompts with rich metadata and caching for optimal performance.
- Prompt Storage: Store prompts as individual JSON files with rich metadata
- Version Management: Automatic versioning with history preservation
- Caching: In-memory LRU cache for performance optimization
- Rich Metadata: Tags, descriptions, timestamps, and version tracking
- MCP Integration: Full compatibility with MCP-enabled applications
- Dual Transport Support: Both stdio and SSE (Server-Sent Events) transports
- Cloud Deployment: Ready for deployment to Vercel, Netlify, and other cloud platforms
The server comes with a set of pre-populated prompts ready for immediate use. You can retrieve them using the getPrompt
tool with the following task names:
assistant
code-review
documentation
summarise-paper
to-flash-cards
# Using pnpm (recommended)
pnpm add -g promptdb-mcp-server
# Using npm
npm install -g promptdb-mcp-server
# Clone and install dependencies
git clone <repository-url>
cd promptdb-mcp-server
pnpm install
# Build the project
pnpm build
# Start the server
pnpm start
The PromptDB MCP Server supports two transport methods:
For local development and MCP clients that support process communication:
# Default stdio transport
promptdb-mcp-server
# or explicitly
promptdb-mcp-server --transport stdio
For web applications and cloud deployment:
# SSE transport on port 3000
promptdb-mcp-server --transport sse --port 3000
# Using environment variables
export TRANSPORT_TYPE=sse
export PORT=3000
promptdb-mcp-server
Add to your MCP client configuration:
{
"mcpServers": {
"promptdb": {
"command": "promptdb-mcp-server",
"args": []
}
}
}
For MCP clients that support HTTP/SSE transport:
{
"mcpServers": {
"promptdb": {
"transport": "sse",
"url": "http://localhost:3000/sse"
}
}
}
# Build and deploy
pnpm build
vercel deploy
# Set environment variables in Vercel dashboard:
# TRANSPORT_TYPE=sse
# PORT=3000
# Build and deploy
pnpm build
netlify deploy --prod --dir=dist
# Set TRANSPORT_TYPE=sse in Netlify dashboard
When running in SSE mode, the server provides:
- SSE Endpoint:
http://localhost:3000/sse
- MCP communication - Health Check:
http://localhost:3000/health
- Server status - Server Info:
http://localhost:3000/
- Server metadata
List all available prompts with their content and versions.
Parameters: None
Returns: Array of prompts with taskname, content, and version
Retrieve a specific prompt by task name.
Parameters:
taskname
(required): The task name identifierversion
(optional): Specific version (defaults to latest)
Returns: Full prompt metadata including content, timestamps, tags, and description
Create or update a prompt for a task.
Parameters:
taskname
(required): The task name identifiercontent
(required): The prompt contentdescription
(optional): Human-readable descriptiontags
(optional): Array of searchable tags
Returns: Confirmation with version information
interface PromptMetadata {
content: string; // The prompt content
created: string; // ISO timestamp of creation
updated: string; // ISO timestamp of last update
version: string; // Semantic version (1.0, 1.1, etc.)
tags: string[]; // Searchable tags
description: string; // Human-readable description
}
- Latest version:
prompts/{taskname}.json
- Historical versions:
prompts/{taskname}_v{version}.json
- Automatic archiving of previous versions
- New prompts start at version
1.0
- Content updates increment minor version (
1.0
→1.1
→1.2
) - Previous versions are automatically archived
- Latest version is always accessible without specifying version
{
"tool": "setPrompt",
"arguments": {
"taskname": "code-review",
"content": "Review this code for best practices, security issues, and performance optimizations...",
"description": "Comprehensive code review prompt",
"tags": ["code", "review", "security", "performance"]
}
}
{
"tool": "getPrompt",
"arguments": {
"taskname": "code-review"
}
}
{
"tool": "listPrompts",
"arguments": {}
}
promptdb-mcp-server/
├── src/
│ ├── index.ts # Main entry point
│ ├── server.ts # MCP server setup
│ ├── tools/ # Tool implementations
│ ├── storage/ # File system operations
│ ├── cache/ # In-memory caching
│ └── utils/ # Validation helpers
├── prompts/ # Prompt storage directory
├── package.json
├── tsconfig.json
└── vite.config.ts
# Install dependencies
pnpm install
# Build project
pnpm build
# Development with watch mode
pnpm dev
# Start server (stdio transport)
pnpm start
# Start with SSE transport
pnpm start:sse
# Development with SSE transport
pnpm dev:sse
# Clean build artifacts
pnpm clean
Use the MCP Inspector or any MCP-compatible client to test the server:
- Start the server:
pnpm start
- Connect via MCP Inspector
- Test the available tools
- Cache Hit: Immediate return from memory
- Cache Miss: Load from file system, cache result
- Cache Invalidation: Automatic on prompt updates
- Memory Management: LRU eviction at 100 items
- Asynchronous file operations throughout
- On-demand directory creation
- Robust error handling
- Concurrent access safety
The server handles various error conditions gracefully:
- File system permission errors
- Invalid JSON parsing
- Concurrent access conflicts
- Cache consistency issues
- Input validation errors
- Server not starting: Check Node.js version (18+) and dependencies
- Tool not found: Verify server is properly connected to MCP client
- Directory creation errors:
- Error:
ENOENT: no such file or directory, mkdir '/prompts'
- Solution: The server creates a
prompts
directory in the current working directory. Ensure the MCP client has write permissions to the directory where it's running. - Alternative: The server will automatically create the directory with proper permissions
- Error:
- File permissions: Ensure write access to prompts directory
- JSON parsing errors: Validate prompt file format
-
Port already in use:
# Find process using port lsof -i :3000 # Kill process kill -9 <PID>
-
CORS errors: The server includes CORS headers by default for cross-origin requests
-
Connection timeout: Check firewall settings and ensure the port is accessible
-
Build errors: Ensure all dependencies are installed with
pnpm install
-
Cloud deployment issues:
- Verify environment variables are set correctly
- Check build logs for errors
- Ensure
dist/
directory is included in deployment
# Test health endpoint
curl http://localhost:3000/health
# Test server info
curl http://localhost:3000/
# Test SSE connection
curl -N http://localhost:3000/sse
The server creates prompts in the current working directory by default:
- When run locally:
./prompts/
in the project directory - When installed globally:
./prompts/
in the directory where the MCP client runs - The server automatically creates the directory if it doesn't exist
- Task names must be alphanumeric with hyphens/underscores only
- Content cannot be empty
- Version format must be X.Y (e.g., 1.0, 2.1)
MIT License - see LICENSE file for details
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
For issues and questions:
- Create an issue on GitHub
- Check the documentation
- Review the implementation plan