granular-software/template-docker-oauth-postgresql
If you are the rightful owner of template-docker-oauth-postgresql and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
This template provides a production-ready MCP server with OAuth2.1 authentication and PostgreSQL database, containerized with Docker.
{{PROJECT_NAME}}
{{PROJECT_DESCRIPTION}}
Quick Start
-
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env # Edit .env with your configuration
-
Initialize the database
npm run db:init
This will create the PostgreSQL database with all necessary tables, functions, and indexes.
-
Start development server
npm run dev
-
Build for production
npm run build npm start
Database Setup
This template uses PostgreSQL for data storage. Before running the application, you need to initialize the database:
npm run db:init
Database Structure
The initialization script creates the following tables:
- users - User accounts with UUID primary keys
- sessions - OAuth sessions and tokens
- notes - User notes with author relationships
Database Features
- ā PostgreSQL with UUID primary keys - Scalable and secure
- ā Foreign key constraints - Maintains data integrity
- ā Optimized indexes - Fast lookups for common queries
- ā Automatic timestamps - Created/updated tracking with triggers
- ā OAuth integration - Session and token management
- ā Database functions and triggers - Automatic updated_at maintenance
Database Requirements
- PostgreSQL 12+ with UUID extension
- Connection string in
DATABASE_URL
environment variable - SSL support for production deployments
Features
- OAuth2.1 authentication with PostgreSQL
- User management and sessions
- Notes resource with author relationships
- TypeScript support
- Development and production builds
- Environment variable configuration
- Docker support with docker-compose
Project Structure
src/
āāā server.ts # Main server file
āāā resources/ # MCP resources
ā āāā users.ts # User management
ā āāā notes.ts # Notes with author relationships
āāā auth/ # OAuth configuration
āāā oauth.ts
Environment Variables
Variable | Description | Required | Default |
---|---|---|---|
PORT | Server port | No | 3000 |
SERVER_URL | Base URL of your server | Yes | - |
JWT_SECRET | Secret key for JWT tokens | Yes | - |
DATABASE_URL | PostgreSQL connection string | Yes | - |
NODE_ENV | Environment mode | No | development |
Development
npm run dev
- Start development server with hot reloadnpm run build
- Build for productionnpm run typecheck
- Type check without buildingnpm run db:init
- Initialize database tables, functions, and indexes
Docker Deployment
This template includes Docker support:
# Build and run with Docker Compose
docker-compose up --build
# Or build manually
npm run docker:build
npm run docker:run
License
MIT