Back to Browse

Impri MCP Server

Developer ToolsLow Risk9.7MCP RegistryLocal
Free

Server data from the Official MCP Registry

Impri MCP server — human-in-the-loop approval inbox for AI agents

About

Impri MCP server — human-in-the-loop approval inbox for AI agents

Security Report

9.7
Low Risk9.7Low Risk

Valid MCP server (2 strong, 2 medium validity signals). No known CVEs in dependencies. ⚠️ Package registry links to a different repository than scanned source. Imported from the Official MCP Registry. 1 finding(s) downgraded by scanner intelligence.

15 files analyzed · 1 issue found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

env_vars

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

Impri API key (im_...). Get one at impri.dev or from your self-hosted server's first-run logs.Required

Environment variable: IMPRI_API_KEY

Base URL of a self-hosted Impri server (e.g. http://localhost:8484). Defaults to the hosted cloud.Optional

Environment variable: IMPRI_BASE_URL

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-sekera-radim-impri": {
      "env": {
        "IMPRI_API_KEY": "your-impri-api-key-here",
        "IMPRI_BASE_URL": "your-impri-base-url-here"
      },
      "args": [
        "-y",
        "@impri/mcp"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

Impri — Approval Inbox for AI Agents

The imprimatur for your AI agents. Watchers watch the world, the Approval Inbox holds the agent's hands until a human says yes.

Quickstart

Two ways to run Impri — pick one. Both give you an API key and an inbox URL in under 5 minutes.

Cloud (no install)

curl -s -X POST https://api.impri.dev/v1/signup \
  -H "Content-Type: application/json" \
  -d '{"name": "my-agent"}'
# → { "key": "im_...", "project_id": "proj_...", ... }

Or skip curl and click Create an API key at app.impri.dev — same result. Your inbox is at app.impri.dev, the API base URL is https://api.impri.dev/v1. It's early beta but is the fastest way to try Impri with no Docker required.

Docker Compose (self-host, < 5 minutes)

git clone https://gitlab.com/sekera.radim/impri.git
cd impri
docker compose up

Open http://localhost:8080 in your browser.

On first start the server prints the bootstrap Admin API key to the logs:

╔══════════════════════════════════════════════════════╗
║            IMPRI — FIRST RUN BOOTSTRAP               ║
╠══════════════════════════════════════════════════════╣
║  Admin API Key: im_...                               ║
║  Project ID:    proj_...                             ║
║  Store this key securely — it will not be shown again.║
╚══════════════════════════════════════════════════════╝

Copy the key, paste it into the login screen, and you're in.

Dev mode (hot-reload, self-host)

Terminal 1 — server:

cd server
npm install
npm run dev
# Server starts on http://localhost:8484

Terminal 2 — UI:

cd ui
npm install
npm run dev
# UI starts on http://localhost:5173
# /v1 requests are proxied to localhost:8484

API at a glance

Base URL: https://api.impri.dev/v1 (cloud) or http://localhost:8484/v1 (self-host)
Auth: Authorization: Bearer im_<key>

MethodPathDescription
POST/v1/actionsPush a new action for approval
GET/v1/actionsList actions (?status=pending&q=…&kind=…&since=…)
GET/v1/actions/:idGet action detail + decision
POST/v1/actions/:id/decisionApprove or reject (single)
POST/v1/actions/bulk-decisionApprove or reject up to 50 actions at once
POST/v1/actions/:id/resultReport execution result
GET/v1/openapi.jsonOpenAPI spec

Push an action (curl example)

curl -X POST https://api.impri.dev/v1/actions \
  -H "Authorization: Bearer im_..." \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "reddit.comment",
    "title": "Reply to: Why is resume advice so conflicting?",
    "preview": {
      "format": "markdown",
      "body": "The advice conflicts because..."
    },
    "target_url": "https://reddit.com/r/jobs/comments/...",
    "expires_in": 86400,
    "editable": ["preview.body"]
  }'

Self-hosting instead? Swap the URL for http://localhost:8484/v1/actions.

MCP server (Claude Code / agents)

npx @impri/mcp
# cloud:      IMPRI_API_KEY=im_...  IMPRI_BASE_URL=https://api.impri.dev
# self-host:  IMPRI_API_KEY=im_...  IMPRI_BASE_URL=http://localhost:8484

Project structure

server/   TypeScript + Fastify + SQLite — REST API (port 8484)
mcp/      MCP server (stdio) — thin wrapper over the REST API
ui/       Vue 3 + Vuetify — web inbox (port 5173 dev / 8080 Docker)
docker/   Dockerfiles (server.Dockerfile)
docs/     Research, ADRs

CLI

The impri CLI lets humans manage the inbox from a terminal — approve, reject, tail pending actions, add watchers, and manage keys — without writing any code.

# Build and install (local, pre-npm)
cd sdk/typescript && npm install && npm run build
cd ../cli && npm install && npm run build
npm install -g ./cli

# Connect to your instance
impri init --cloud --signup   # or: impri init (self-hosted)

# Common commands
impri inbox                   # pending actions
impri tail                    # live-tail new actions
impri approve act_abc123
impri watch add github-releases --param owner=fastify --param repo=fastify

SDKs & integrations

v0.1, pre-release — both cloud and self-host work today; expect rough edges either way.

PackageLocationLanguage
CLIcli/Node 18+
Python SDKsdk/python/Python 3.10+
TypeScript SDKsdk/typescript/Node 18+ (native fetch)
MCP servermcp/ / npx @impri/mcpAny MCP client
pip install -e sdk/python          # Python SDK (local, pre-PyPI)
npm install ./sdk/typescript       # TS SDK (local, pre-npm)
npx @impri/mcp                     # MCP server (published)

Documentation

  • Web docs: https://impri.dev/docs
  • CLI reference — install, impri init, every command with examples, config + env precedence
  • Quickstart — signup → first approved action in < 5 min
  • Example agent — a complete, dependency-free agent that proposes an action, waits for approval, then acts and reports back
  • How to add human approval to an AI agent
  • Self-hosting — Docker, env vars, backups, reverse proxy
  • Webhooks — HMAC verification, retries, polling fallback
  • Inbox UX & Bulk API — keyboard shortcuts, bulk approve/reject, search/filter parameters, POST /v1/actions/bulk-decision reference
  • Watcher presets — 18 ready-to-use templates (HN, Reddit, GitHub, npm, arXiv, …); REST + SDK + MCP usage
  • Notification channels — Slack, Discord, Telegram, ntfy, email, and generic webhook; digest window, auto-disable, SSRF protection
  • Telegram Approval Bot — in-chat Approve / Reject buttons; setup, security model, troubleshooting
  • Audit log — event types, query API (GET /v1/audit), export (NDJSON/CSV), retention, and security model
  • llms.txt — machine-readable index for AI assistants

Self-hosting notes

  • SQLite data is persisted in a Docker volume (impri-data).
  • Set WEBHOOK_SECRET env var to a random string for HMAC webhook signing.
  • BASE_URL should match the public URL of your deployment (used in inbox_url links).

License

MIT — see LICENSE. Self-host the full core freely; the hosted cloud and team features are the paid offering (see MONETIZATION.md).

Reviews

No reviews yet

Be the first to review this server!