π€ A simple MCP server for AI task tracking and webhook notifications
Track when AI starts and completes tasks, with real-time webhook notifications for all activities.
task-started
- Tool to call when starting any taskauto-task-tracker
- Automatic tracking for long-running taskstask-completed
- Tool to call when completing any task- Webhook Notifications - Real-time webhook delivery for all tool calls
- Environment Variable Configuration - Dynamic webhook URL management
# Global installation
npm install -g agentify-mcp
# Or run with npx
npx agentify-mcp
- Visit webhook.site
- Copy the auto-generated unique URL
- Set it up using one of the methods below
export AGENTIFY_WEBHOOK_URL="https://webhook.site/your-unique-id"
# or
export WEBHOOK_URL="https://webhook.site/your-unique-id"
agentify-mcp
Claude Desktop's claude_desktop_config.json
:
{
"mcpServers": {
"agentify": {
"command": "agentify-mcp",
"env": {
"AGENTIFY_WEBHOOK_URL": "https://webhook.site/your-unique-id",
"LOG_LEVEL": "info"
}
}
}
}
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%/Claude/claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
AI will automatically call tools like this:
// When starting a task
task_started({
taskDescription: 'Starting React component refactoring',
});
// When completing a task
task_completed({
taskDescription: 'Completed React component refactoring',
outcome: 'success',
details: '20% performance improvement',
});
When the server starts, you can see the status:
π Agentify MCP Server
π Webhook: β
Enabled # When URL is configured
π Log Level: info
Or:
π Webhook: β Disabled # When URL is not configured
All tool calls send webhooks in this format:
{
"timestamp": "2024-01-01T12:00:00.000Z",
"event": "tool_called",
"toolName": "task-started",
"arguments": {
"taskDescription": "Starting React component refactoring"
}
}
{
"timestamp": "2024-01-01T12:00:00.000Z",
"event": "tool_completed",
"toolName": "task-completed",
"arguments": {
"taskDescription": "Completed React component refactoring",
"outcome": "success"
},
"result": {
"content": [{ "type": "text", "text": "β
Task Completed..." }]
},
"duration": 150
}
import { AgentifyMCPServer } from 'agentify-mcp';
const server = new AgentifyMCPServer({
webhookUrl: 'https://webhook.site/your-unique-id',
logLevel: 'info',
});
await server.start();
const server = new AgentifyMCPServer();
// Set webhook URL later
server.setWebhookUrl('https://webhook.site/your-unique-id');
// Check webhook status
console.log(server.isWebhookEnabled()); // true/false
git clone https://github.com/agentify/agentify-mcp.git
cd agentify-mcp
npm install
# Run in development mode
npm run dev
# Build
npm run build
# Run tests
npm test
# Type checking
npm run typecheck
# Linting
npm run lint
-
Check Environment Variables
echo $AGENTIFY_WEBHOOK_URL
-
Restart Claude Desktop
- Completely restart Claude Desktop after environment variable changes
-
Test with Webhook.site
- Check if requests are received in real-time
- Check configuration file path
- Verify JSON syntax
- Confirm command path (
agentify-mcp
ornpx agentify-mcp
)
- Webhook URLs are masked in logs
- Secure management of sensitive information via environment variables
- Runtime URL changes supported
# Run without webhook
agentify-mcp
# Run with webhook
AGENTIFY_WEBHOOK_URL="https://webhook.site/abc123" agentify-mcp
- Generate URL from Webhook.site
- Add configuration to
claude_desktop_config.json
- Restart Claude Desktop
- Receive real-time notifications whenever AI performs tasks
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Generate coverage report
npm run test:coverage
interface ServerConfig {
webhookUrl?: string;
logLevel?: 'debug' | 'info' | 'warn' | 'error';
}
start(): Promise<void>
- Start the MCP serverstop(): Promise<void>
- Stop the MCP serversetWebhookUrl(url: string): void
- Set or update webhook URLgetWebhookUrl(): string | undefined
- Get current webhook URL statusisWebhookEnabled(): boolean
- Check if webhook is enabled
- Description: Call when starting any task or work
- Parameters:
taskDescription
(string): Brief description of what was started
- Description: Automatically monitors long-running task progress
- Parameters:
taskThresholdSeconds
(number, optional): Auto-trigger threshold in seconds (default: 30)
- Description: Call when finishing any task or work
- Parameters:
taskDescription
(string): Brief description of what was completedoutcome
('success' | 'partial' | 'failed'): Task completion outcomedetails
(string, optional): Additional completion details
MIT License - see the LICENSE file for details.