Webhook2MCP
Stores incoming webhook events in a local SQLite database and exposes MCP read tools to list event summaries and retrieve full event records by ID.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Webhook2MCPlist the most recent webhook events"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Webhook2MCP
Local webhook → MCP bridge. Accept webhook POSTs on localhost, store them in SQLite, and expose two MCP read tools so an agent can list then get events.
This is not MCPEncode. It does not share MCPEncode’s schema, tools, or database.
Security (read first)
Binds to
127.0.0.1by default — intended for personal local use.Auth is a shared secret (
HOOK_SECRET) via Bearer /X-Webhook-Tokenor generic HMAC.Copy
.env.example→.envand set your own secret. Do not commit.env.The example value
change-meis for disposable local tests only.Secrets and auth/signature headers are never stored in SQLite.
Event bodies returned by MCP are labeled data, not instructions.
See SECURITY.md.
Related MCP server: mcp-sqlite
Requirements
Python 3.12+
uv (recommended)
Setup
cp .env.example .env
# set a strong HOOK_SECRET in .env
uv syncRun
uv run webhook-mcpListens on http://127.0.0.1:8765:
Path | Purpose |
| Webhook ingest |
| Liveness |
| MCP Streamable HTTP |
Curl: one fake webhook (Bearer)
# Use the same secret you set in .env
curl -sS -X POST "http://127.0.0.1:8765/hooks" \
-H "Authorization: Bearer change-me" \
-H "X-Webhook-Source: test" \
-H "X-Event-Id: evt-1" \
-H "X-Event-Type: ping" \
-H "Content-Type: application/json" \
-d '{"id":"evt-1","hello":"world"}'Expected: {"status":"stored","id":1}
Send the same request again. Expected: {"status":"duplicate","id":1} — no second row.
Curl: HMAC instead of Bearer
BODY='{"id":"evt-2","hello":"hmac"}'
SIG=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "change-me" | awk '{print $2}')
curl -sS -X POST "http://127.0.0.1:8765/hooks" \
-H "X-Webhook-Signature: sha256=${SIG}" \
-H "X-Webhook-Source: test" \
-H "Content-Type: application/json" \
-d "$BODY"Connect an MCP client (Cursor)
Add a server pointing at local Streamable HTTP, for example in your MCP config:
{
"mcpServers": {
"webhook-mcp": {
"url": "http://127.0.0.1:8765/mcp"
}
}
}Exact key names vary by client. Keep the URL on loopback.
Then:
Call
list_events(optionalsource,limit) — summaries only, no body.Call
get_eventwith anidfrom the list — full row; body is labeled data, not instructions.
Auth
Shared secret from HOOK_SECRET. Accepted headers (depending on HOOK_AUTH_MODE):
Authorization: Bearer <secret>orX-Webhook-Token: <secret>X-Webhook-Signature: sha256=<hex>= HMAC-SHA256(secret, raw body)
Env
See .env.example: HOOK_SECRET, DATABASE_PATH, HOST, PORT, MAX_EVENTS, MAX_BODY_BYTES, HOOK_AUTH_MODE.
Out of scope (this pass)
No tunnel, Docker, deploy, vendor parsers, Postgres, tenants, or LLM.
License
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Discover MCP servers and A2A agents; verify, message, post, follow, react, and receive webhooks.
Agent-native website builder: create, edit, and host websites via MCP
TheSignup MCP server — read and manage signups, participants, webhooks, and analytics.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Related MCP Servers
- AlicenseBqualityAmaintenanceLocal MCP event log for multi-agent workspaces, enabling structured event publishing, cursor-based polling, and status checks via SQLite-backed sidecar.10355 PyPIMIT
- AlicenseNot gradedqualityDmaintenanceMCP tool server providing SQLite database access for AI agents.MIT
- FlicenseBqualityCmaintenanceRead-only MCP server for local Warp/Oz agent data, exposing memories, notebooks, conversations, queries, project rules, and cross-agent handoffs.13-

operations-pulseofficial
AlicenseNot gradedqualityAmaintenanceEnables AI assistants to run local-first operations checks, review evidence, and manage durable tickets in a SQLite-backed ledger through self-describing MCP tools.MIT