Allows the server to monitor repository-specific activities and poll for updates on development workflows.
Enables real-time monitoring of CI runs, polling for status changes and surfacing test outcomes or deployment results back to the agent.
Supports receiving and processing deployment notifications from Vercel through a dedicated webhook listener.
LoopSense MCP Server

LoopSense is an open-source MCP server that closes the feedback loop for AI coding agents — giving them real-time visibility into CI results, deployments, test outcomes, and file system changes.
What it does
When an AI agent pushes code, runs tests, or triggers a deployment, LoopSense watches the downstream effects and surfaces them back to the agent. No more blind actions.
Supported sources:
GitHub Actions CI runs (polling)
Local processes (stdout/stderr capture, exit codes)
File system changes (via chokidar)
HTTP endpoints (polling, with status/body assertions)
Incoming webhooks (lightweight HTTP server)
Requirements
Node.js 18+
Installation
npm install -g @loopsense/mcpOr run directly with npx:
npx @loopsense/mcpMCP Configuration
Claude Code (one-liner):
claude mcp add loopsense -e GITHUB_TOKEN=ghp_yourtoken -- npx -y @loopsense/mcpOr add manually to your claude_desktop_config.json (or equivalent MCP host config):
{
"mcpServers": {
"loopsense": {
"command": "npx",
"args": ["-y", "@loopsense/mcp"],
"env": {
"GITHUB_TOKEN": "ghp_your_token_here"
}
}
}
}Or if installed globally:
{
"mcpServers": {
"loopsense": {
"command": "loopsense",
"env": {
"GITHUB_TOKEN": "ghp_your_token_here"
}
}
}
}Environment Variables
Variable | Description |
| GitHub personal access token for CI polling |
Tools
watch_ci
Watch a GitHub Actions workflow run. Polls every 30 seconds and emits events on status changes.
{
"owner": "acme",
"repo": "api",
"branch": "main",
"action_id": "deploy-2024-01"
}watch_process
Spawn a local process and capture its output and exit code.
{
"command": "npm",
"args": ["test"],
"cwd": "/path/to/project",
"action_id": "run-tests"
}watch_file
Watch a file or directory for changes.
{
"path": "/path/to/dir",
"pattern": "**/*.ts",
"action_id": "file-changes"
}watch_url
Poll an HTTP endpoint and detect status or body changes.
{
"url": "https://api.example.com/health",
"interval": 15,
"expect": {
"status": 200,
"body_contains": "\"status\":\"ok\""
}
}watch_webhook
Start a local HTTP server to receive webhook payloads.
{
"source_type": "vercel",
"port": 9876
}Configure your webhook sender to POST to http://localhost:9876.
check_consequences
Get events for a specific action or all recent events.
{
"action_id": "deploy-2024-01"
}list_watches
List all active watchers.
cancel_watch
Stop a watcher by ID.
{
"watch_id": "uuid-here"
}poll_events
Get events since a timestamp (fallback for clients without notification support).
{
"since": "2024-01-01T00:00:00.000Z"
}Resources
LoopSense exposes two MCP resources that update reactively:
loopsense://timeline/recent— last 100 events across all watchesloopsense://watches/active— all currently active watchesloopsense://consequences/{action_id}— events for a specific action
Usage Example
An agent workflow might look like:
Agent pushes code to a branch
Agent calls
watch_ciwithaction_id: "my-pr-123"LoopSense polls GitHub Actions every 30 seconds
When CI completes, agent calls
check_consequenceswithaction_id: "my-pr-123"Agent sees the test failures and fixes them
Data Storage
Events and watch records are persisted to ~/.loopsense/events.db (SQLite). Active watches are resumed automatically on server restart.
Development
git clone https://github.com/jarvisassistantux/loopsense
cd loopsense
npm install
npm run dev # run in dev mode (tsx)
npm run build # compile with tsup
npm run typecheck # TypeScript check
npm test # run testsLicense
MIT