npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

mcp-depot

v1.0.3

Published

Self-hosted MCP server — connect AI assistants to your APIs and platforms

Downloads

38

Readme

MCP Depot

Connect your integrations to any AI assistant via Model Context Protocol (MCP)

MCP Depot is a self-hosted MCP server that exposes your integrations (Jira, GitHub, Confluence, Jenkins, custom APIs) as MCP tools. Connect once, use from Claude Code, Cursor, Windsurf, and more.

npm version Docker License: AGPL-3.0 GitHub Stars

Website · Live Demo · Documentation


Features

  • Unified API Gateway — Connect Jira, GitHub, Confluence, Jenkins, REST APIs, and more
  • MCP Tool Server — Exposes integrations as MCP tools for AI assistants
  • OpenAPI Import — Auto-generate tools from OpenAPI specs
  • Composite Tools — Chain multiple API calls into single AI-invokable tools
  • Response Field Selector — Pick exactly which JSON fields to return per tool
  • Response Line Filter — Regex-based line filtering for large text responses (logs, diffs)
  • Per-Integration SSL — Toggle self-signed certificate support per integration
  • User Management — Admin UI for creating and managing users
  • OAuth Login — Secure authentication with Google, GitHub, and custom OIDC
  • Tags — Organize and filter integrations and skills with tags
  • Session Contexts — Share AI working context across sessions and teammates
  • Session Channels — Append-only logs shared across parallel AI sessions
  • CLI Profiles — Support multiple MCP Depot instances via named profiles
  • Workflow Automation — Chain tools into automated workflows
  • Monitoring — Track tool usage, response times, and errors
  • Encryption — Sensitive credentials encrypted at rest
  • Secret Store — Optional integration with Infisical for enterprise secrets management

Quick Start

Option 1 — npm (zero config)

npx mcp-depot

Opens the admin UI at http://localhost:3000. Data stored in ~/.mcp-depot/data.db (SQLite). No database setup, no Docker required.

Admin credentials are printed to the console on first run. Look for the startup log block:

DEFAULT ADMIN USER CREATED
Email:    [email protected]
Password: <generated>
API Key:  <generated>

Option 2 — Docker Compose (recommended for teams)

git clone https://github.com/mcp-depot/mcp-depot
cd mcp-depot
docker compose up -d

# Get admin credentials from logs
docker compose logs server | grep -E "Email:|Password:|API Key:"

# Login at http://localhost:5173

Option 3 — Kubernetes (Helm)

git clone https://github.com/mcp-depot/mcp-depot
cd mcp-depot

# Install using published images
helm install mcp-depot ./helm/mcp-depot \
  --namespace mcp-depot \
  --create-namespace \
  --set server.image=ghcr.io/mcp-depot/mcp-depot-server:latest \
  --set client.image=ghcr.io/mcp-depot/mcp-depot-client:latest

# Access via port-forward
kubectl port-forward -n mcp-depot svc/mcp-depot-client 8080:80
# Open http://localhost:8080

See docs/KUBERNETES.md for ingress setup, production values, and full configuration reference.

Running more than one replica (Compose or Kubernetes)? See docs/HA-SCALING.md - rate limiting, the circuit breaker, and session notifications need a shared Redis to stay correct across replicas.


Connecting to Claude Code

stdio (recommended for npm installs)

  1. Install and authenticate:
npm install -g mcp-depot
mcp-depot --login

Follow the prompts to enter your server URL and API key.

  1. Register with Claude Code:
claude mcp add mcp-depot -- mcp-depot --mcp

Then use /mcp inside Claude Code to verify the connection.

HTTP (Docker / server with MCP_ENABLED=true)

{
  "mcpServers": {
    "mcp-depot": {
      "type": "http",
      "url": "http://localhost:3000/api/mcp"
    }
  }
}

See docs/connect/claude-code.md for full setup guide.


CLI Flags

| Command | What it does | |---------|-------------| | mcp-depot | Full stack — server + admin UI + SQLite | | mcp-depot --server | Server only, no UI | | mcp-depot --port 8080 | Run on a custom port | | mcp-depot --login | Save server URL and API key for stdio transport | | mcp-depot --login --profile work | Save credentials under a named profile | | mcp-depot --mcp | MCP stdio wrapper (used by AI clients) | | mcp-depot --mcp --profile work | MCP stdio using a specific profile |


Environment Variables

| Variable | Default | Description | |----------|---------|-------------| | DATABASE_URL | (not set) | PostgreSQL connection string. When set, SQLite is not used. | | SQLITE_PATH | ~/.mcp-depot/data.db | Override SQLite file location. Ignored if DATABASE_URL is set. | | PORT | 3000 | Port the server listens on. | | SERVE_CLIENT | true | Set to false to disable frontend (API-only mode). | | NODE_ENV | development | Set to production for production deployments. | | JWT_SECRET | (required) | Secret for signing auth tokens. Set this in production. | | JWT_REFRESH_SECRET | (required) | Secret for refresh tokens. | | JWT_EXPIRE | 15m | JWT access token expiration. | | JWT_REFRESH_EXPIRE | 7d | JWT refresh token expiration. | | ENCRYPTION_KEY | (required) | 32-byte key for encrypting sensitive data. | | LOG_LEVEL | info | Logging level: trace, debug, info, warn, error, fatal. | | ALLOWED_ORIGINS | (not set) | CORS allowed origins (comma-separated). | | ALLOW_REGISTRATION | true | Set to false to disable user self-registration. | | ALLOW_SELF_SIGNED_CERTS | false | Set to true to allow self-signed SSL certificates globally. | | ADMIN_EMAIL | [email protected] | Admin account email created on first run. | | ADMIN_PASSWORD | (auto-generated) | Admin password. Leave blank to auto-generate. | | MCP_ENABLED | false | Set to true to enable HTTP MCP transport at /api/mcp. | | MCP_TRANSPORT | http | MCP transport type: http or stdio. | | API_BASE_URL | (not set) | Public URL for MCP server (used in tool schemas). | | TOOLS_CACHE_ENABLED | false | Set to true to enable tools caching. | | TOOLS_CACHE_TTL | 300000 | Tools cache TTL in milliseconds. | | RATE_LIMIT_DEFAULT_RPM | 60 | Default requests per minute for integrations. | | RATE_LIMIT_DEFAULT_RPH | 1000 | Default requests per hour for integrations. | | GOOGLE_CLIENT_ID | (not set) | OAuth Google client ID. | | GOOGLE_CLIENT_SECRET | (not set) | OAuth Google client secret. | | GITHUB_CLIENT_ID | (not set) | OAuth GitHub client ID. | | GITHUB_CLIENT_SECRET | (not set) | OAuth GitHub client secret. | | CLIENT_URL | http://localhost:5173 | Public URL of the MCP Depot UI. Required for OIDC — used to build the redirect_uri sent to the identity provider. Must match the redirect URI configured in your OIDC provider. | | OIDC_ENABLED | false | Enable custom OIDC (Keycloak, Okta, Auth0). | | OIDC_ISSUER_URL | (not set) | OIDC issuer URL (server-side, used for token exchange and discovery). | | OIDC_ISSUER_PUBLIC_URL | (not set) | Public-facing issuer URL (browser redirect). Defaults to OIDC_ISSUER_URL. Set this when internal and public hostnames differ (e.g. Docker/k8s). | | OIDC_CLIENT_ID | (not set) | OIDC client ID. | | OIDC_CLIENT_SECRET | (not set) | OIDC client secret. | | OIDC_DISPLAY_NAME | Login with SSO | OIDC button label. | | ENABLED_FEATURES | all | Comma-separated features to enable: integrations,tools,skills,sessions,channels,users. | | SECRET_STORE_ENABLED | false | Enable Infisical secret store integration. | | SECRET_STORE_SITE_URL | (not set) | Infisical site URL. | | SECRET_STORE_CLIENT_ID | (not set) | Infisical client ID. | | SECRET_STORE_CLIENT_SECRET | (not set) | Infisical client secret. | | SECRET_STORE_WORKSPACE_ID | (not set) | Infisical workspace ID. | | SECRET_STORE_ENVIRONMENT | dev | Infisical environment name. |


Using MCP Depot Without the UI

MCP Depot can run as a headless API server without the frontend UI.

Enable API-Only Mode

SERVE_CLIENT=false docker compose up -d

Or set in .env:

SERVE_CLIENT=false

API Reference

The REST API is available at http://localhost:3000/api/v1:

| Endpoint | Description | |----------|-------------| | POST /auth/login | Login with email/password | | POST /auth/refresh | Refresh access token | | GET /integrations | List all integrations | | POST /integrations | Create new integration | | GET /integrations/:id | Get integration details | | PUT /integrations/:id | Update integration | | DELETE /integrations/:id | Delete integration | | POST /integrations/:id/test | Test integration connection | | GET /tools | List all MCP tools | | GET /skills | List all skills | | GET /skills/:id | Get skill details |

Authentication

  1. Login to get access + refresh tokens:
curl -X POST http://localhost:3000/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"your-password"}'
  1. Use access token in subsequent requests:
curl http://localhost:3000/api/v1/integrations \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Connect to AI Clients

See docs/connect/README.md for detailed guides:

| Client | Guide | |--------|-------| | Claude Code | docs/connect/claude-code.md | | Cursor | docs/connect/cursor.md | | Windsurf | docs/connect/windsurf.md | | Zed | docs/connect/zed.md | | Open WebUI | docs/connect/open-webui.md |


Architecture

┌─────────────┐     ┌─────────────┐     ┌──────────────────┐
│  AI Client  │────▶│  mcp-depot  │────▶│   Integration    │
│(Claude Code)│     │   Server    │     │(Jira, GitHub ...) │
└─────────────┘     │   :3000     │     └──────────────────┘
                    └─────────────┘
                          │
               ┌──────────┴──────────┐
               │                     │
        ┌──────────────┐    ┌─────────────────┐
        │  PostgreSQL  │    │  SQLite          │
        │  (Docker /   │    │  (npx / local)   │
        │   teams)     │    └─────────────────┘
        └──────────────┘

Tech Stack

  • Backend: Node.js, Express, Sequelize
  • Database: PostgreSQL (teams/Docker) or SQLite (local/npm)
  • Frontend: React, Vite
  • Protocol: Model Context Protocol (MCP)
  • Logging: Pino
  • Metrics: Prometheus

License

AGPL-3.0 — see LICENSE


Contributing

See CONTRIBUTING.md for development setup and contribution guidelines. See GOVERNANCE.md for project governance and maintainer process.