Installation
This guide will help you install and run MCPulse. Choose the method that best fits your needs.
Prerequisites
Before you begin, ensure you have:
- Docker & Docker Compose (recommended) - Version 20.10+
- OR for manual installation:
- Go 1.21 or higher
- TimescaleDB 16+
Docker Image (Recommended)
The fastest way to get MCPulse running is using the pre-built Docker images. MCPulse images are available on:
- GitHub Container Registry:
ghcr.io/sirrobot01/mcpulse
- Docker Hub:
cy01/mcpulse
Step 1: Pull the Docker Image
Choose either GitHub Container Registry or Docker Hub:
# From GitHub Container Registry (recommended)
docker pull ghcr.io/sirrobot01/mcpulse:latest
# Or from Docker Hub
docker pull cy01/mcpulse:latest
Step 2: Create Docker Compose Configuration
Create a docker-compose.yml
file:
version: '3.8'
services:
timescaledb:
image: timescale/timescaledb:latest-pg16
environment:
POSTGRES_DB: mcp_analytics
POSTGRES_USER: mcp_user
POSTGRES_PASSWORD: changeme # Change this!
ports:
- "5432:5432"
volumes:
- mcpulse-data:/var/lib/postgresql/data
mcpulse:
image: ghcr.io/sirrobot01/mcpulse:latest # or cy01/mcpulse:latest
container_name: mcpulse-server
volumes:
- ./config.yaml:/app/config.yaml
ports:
- "8080:8080" # Web UI and API
- "9090:9090" # gRPC endpoint
environment:
DATABASE_URL: postgres://mcp_user:changeme@timescaledb:5432/mcp_analytics?sslmode=disable
JWT_SECRET: your_jwt_secret_here_at_least_32_chars # Change this!
depends_on:
- timescaledb
volumes:
mcpulse-data:
Important: Change the POSTGRES_PASSWORD
and JWT_SECRET
values before running!
Step 3: Start Services
docker compose up -d
This will start:
- MCPulse Server: http://localhost:8080
- GRPC Endpoint: localhost:9090
- Prometheus Metrics: http://localhost:8081/metrics
- TimescaleDB: localhost:5432
Step 4: Verify Installation
Check that all services are running:
docker compose ps
You should see:
NAME COMMAND STATUS
mcpulse-server "/app/mcpulse" Up
mcpulse-timescale "docker-entrypoint..." Up
Step 5: Create an API Key
- Visit http://localhost:8080
- Create an account or log in
- Go to API Keys
- Click Create API Key
- Copy the generated key (you'll need it for SDK integration)
Building from Source
If you want to build MCPulse from source for development or customization:
Step 1: Clone the Repository
git clone https://github.com/sirrobot01/mcpulse.git
cd mcpulse
Step 2: Configure Environment
Create environment files from templates:
cp .env.example .env
cp config.yaml.example config.yaml
Edit .env
and set your passwords:
# Database
POSTGRES_PASSWORD=your_secure_password_here
# MCPulse JWT Secret (for authentication)
JWT_SECRET=your_jwt_secret_here_at_least_32_chars
Step 3: Build and Start Services
docker compose up -d
This will build the MCPulse image from source and start all services.
Manual Installation
For development or custom deployments without Docker, you can install MCPulse manually.
Step 1: Install TimescaleDB
Using Docker
docker run -d \
--name mcpulse-timescale \
-e POSTGRES_DB=mcp_analytics \
-e POSTGRES_USER=mcp_user \
-e POSTGRES_PASSWORD=changeme \
-p 5432:5432 \
timescale/timescaledb:latest-pg16
Using Package Manager
macOS (Homebrew):
brew install timescaledb
Ubuntu/Debian:
sudo apt-get install postgresql-16-timescaledb
Step 2: Setup Frontend
cd web
npm install
npm run build # This will build the frontend into the correct directory
Step 3: Build MCPulse Server
# Clone the repository
git clone https://github.com/sirrobot01/mcpulse.git
cd mcpulse
# Build the server
go build -o mcpulse ./cmd/mcpulse
# Create configuration
cp config.yaml.example config.yaml
# Edit config.yaml with your database credentials
Step 4: Run the Server
./mcpulse --config config.yaml
The server will start on http://localhost:8080 (default).
Verification
Health Check
Check if the server is healthy:
curl http://localhost:8080/health
Expected response:
{
"status": "healthy",
"database": "connected",
"version": "1.0.0"
}
Prometheus Metrics
View Prometheus metrics:
curl http://localhost:8081/metrics
Test Ingestion
Send a test metric:
curl -X POST http://localhost:8080/api/v1/ingest \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"metrics": [{
"id": "test-1",
"timestamp": "'$(date -u +%Y-%m-%dT%H:%M:%SZ)'",
"server_id": "test-server",
"tool_name": "test_tool",
"duration_ms": 42,
"status": "success"
}]
}'
Expected response:
{
"accepted": 1,
"rejected": 0
}
Next Steps
Now that MCPulse is running:
- Integrate an SDK - Choose your language and add MCPulse to your MCP server
- Configure - Customize MCPulse for your needs
Troubleshooting
Database Connection Failed
If you see database connection errors:
-
Verify TimescaleDB is running:
docker ps | grep timescale
# or
pg_isready -h localhost -p 5432 -
Check credentials in
config.yaml
or.env
-
Verify network connectivity:
psql -h localhost -U mcp_user -d mcp_analytics
Port Already in Use
If port 8080 is already in use:
- Docker Compose: Edit
docker compose.yml
and change the port mapping - Manual: Edit
config.yaml
and set a different port:server:
port: 9000