Skip to main content
Glama

Service Health MCP Server

Service Health MCP Server

πŸš€ The first universal service health monitoring tool for Claude Desktop and MCP-compatible AI assistants

TypeScript MCP Compatible MIT License Security AI Built

A professional-grade MCP server that enables AI assistants to monitor web services, APIs, and HTTP endpoints with enterprise-level security. Perfect for DevOps, monitoring, and ensuring your services are running smoothly.


πŸŽ“ Transparency & Learning

πŸ€– Built with AI Assistance: This project was created by Natasha in collaboration with Claude Sonnet 4 as a learning exercise. No prior MCP server development experience was required!

πŸ“š Learning Goals Achieved:

  • βœ… MCP Protocol Implementation - From zero to working server

  • βœ… TypeScript Best Practices - Professional code structure

  • βœ… Security-First Development - Enterprise-grade SSRF protection

  • βœ… Open Source Standards - Community-ready documentation

  • βœ… Real-World Problem Solving - Filling a genuine gap in the MCP ecosystem

πŸ’‘ For Fellow Learners: If you're new to MCP development or curious about AI-assisted programming, this project demonstrates what's possible when learning with AI guidance. See our development process and contributing guidelines for insights!


Related MCP server: SEO AI Assistant

✨ Why This Exists

The Goal: While learning MCP development, I wanted to build something that would be genuinely useful for monitoring services through AI conversations. This MCP server provides a convenient way for Claude (and other AI assistants) to check service health naturally through chat.

What Makes It Useful:

  • πŸ” Conversational monitoring - Check services through natural language

  • πŸ›‘οΈ Security-first design with comprehensive SSRF protection

  • ⚑ Fast and reliable with detailed diagnostics

  • 🎯 Easy to use - works out of the box with Claude Desktop

  • πŸ“Š Professional output with actionable information


πŸš€ Quick Start

Step 1: Install

git clone https://github.com/natashanajdovski/service-health-mcp.git cd service-health-mcp npm install npm run build

Step 2: Configure Claude Desktop

Find your config file:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Add this configuration:

{ "mcpServers": { "service-health": { "command": "node", "args": ["C:\\path\\to\\service-health-mcp\\dist\\server.js"], "cwd": "C:\\path\\to\\service-health-mcp" } } }

Step 3: Restart & Test

  1. Completely close and reopen Claude Desktop

  2. Test with: "Check if google.com is healthy"

  3. See professional health reports instantly! πŸŽ‰


🎯 Usage Examples

Basic Health Monitoring

πŸ“ "Check if google.com is healthy" πŸ“ "Is api.github.com responding properly?" πŸ“ "Test if my-website.com is up"

Advanced Configurations

πŸ“ "Check if api.example.com/health is healthy with a 15 second timeout" πŸ“ "Test httpbin.org/post using POST method" πŸ“ "Check if my-api.com returns 201 status code"

DevOps & Monitoring

πŸ“ "Check if our production API is responding normally" πŸ“ "Test all our microservices for health" πŸ“ "Monitor our CDN endpoints"

πŸ“Š Sample Output

βœ… **Health Check Result** **URL:** https://api.github.com **Status:** HEALTHY **Response Time:** 127ms **HTTP Status:** 200 (OK) **Message:** Endpoint is healthy (200) - 127ms response time **Checked At:** 2024-07-24T21:30:00.000Z **Interpretation:** πŸŽ‰ The endpoint is working perfectly! No issues detected.

For unhealthy services:

❌ **Health Check Result** **URL:** https://down-service.com **Status:** UNHEALTHY **Response Time:** 5000ms **Message:** Network error: Connection timeout **Checked At:** 2024-07-24T21:30:00.000Z **Interpretation:** 🚨 The endpoint has issues and may be down or misconfigured. Investigation needed.

πŸ› οΈ Features

πŸ” Health Monitoring

  • βœ… HTTP/HTTPS endpoint testing

  • βœ… Response time measurement

  • βœ… Status code validation

  • βœ… Custom headers support

  • βœ… Multiple HTTP methods

  • βœ… Configurable timeouts (1-30s)

πŸ›‘οΈ Enterprise Security

  • βœ… SSRF attack prevention

  • βœ… Internal network blocking

  • βœ… Input validation & sanitization

  • βœ… Protocol restrictions (HTTP/HTTPS only)

  • βœ… Port filtering & safe defaults

  • βœ… Zero credential exposure

⚑ Performance

  • βœ… Sub-second response times

  • βœ… Efficient connection handling

  • βœ… Minimal resource usage

  • βœ… Non-blocking async operations

  • βœ… Optimized error handling

  • βœ… Smart retry logic

πŸ”§ Developer Experience

  • βœ… Full TypeScript support

  • βœ… Professional error messages

  • βœ… Comprehensive logging

  • βœ… Easy MCP integration

  • βœ… Hot reload development

  • βœ… Extensive documentation


πŸ›‘οΈ Security

This MCP server implements enterprise-grade security to prevent attacks:

🚨 SSRF (Server-Side Request Forgery) Protection

❌ BLOCKED: localhost, 127.0.0.1 ❌ BLOCKED: 192.168.x.x, 10.x.x.x, 172.16-31.x.x ❌ BLOCKED: 169.254.169.254 (cloud metadata) ❌ BLOCKED: Non-HTTP protocols (ftp, file, etc.) βœ… ALLOWED: Public HTTP/HTTPS endpoints only

πŸ”’ Input Validation

  • URL Format: RFC-compliant validation

  • Parameter Types: Strict type checking with Zod

  • Timeout Bounds: 1-30 second limits

  • Method Restrictions: GET, POST, PUT, DELETE only

  • Port Filtering: Standard web ports (80, 443, 8080, 8443)

πŸ›‘οΈ Safe Defaults

  • 10-second timeout (prevents hanging)

  • GET method (least intrusive)

  • No credential storage (stateless operation)

  • Minimal error details (no information leakage)


πŸ”§ Development

Prerequisites

  • Node.js 18+

  • TypeScript 5+

  • npm or yarn

Development Commands

npm run dev # πŸ”„ Hot reload development npm run build # πŸ—οΈ Production build npm run start # πŸš€ Run built version npm run clean # 🧹 Clean build files

Testing with MCP Inspector

npx @modelcontextprotocol/inspector src/server.ts

Project Structure

service-health-mcp/ β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ server.ts # 🎯 Main MCP server β”‚ β”œβ”€β”€ health/ β”‚ β”‚ └── http-checker.ts # πŸ” Core health logic β”‚ β”œβ”€β”€ security/ β”‚ β”‚ └── url-validator.ts # πŸ›‘οΈ SSRF protection β”‚ └── tools/ β”‚ └── check-http.ts # πŸ› οΈ MCP tool interface β”œβ”€β”€ dist/ # πŸ“¦ Compiled JavaScript β”œβ”€β”€ docs/ # πŸ“š Documentation └── package.json # πŸ“‹ Project config

πŸ“š API Reference

check_http_endpoint

Description: Check if an HTTP/HTTPS endpoint is healthy and responsive.

Parameters

Parameter

Type

Required

Default

Description

url

string

βœ… Yes

-

The URL to check (e.g.,

https://google.com

)

method

"GET" | "POST" | "PUT" | "DELETE"

❌ No

"GET"

HTTP method to use

timeout

number

❌ No

10000

Request timeout in milliseconds (1000-30000)

expectedStatus

number

❌ No

200

Expected HTTP status code (100-599)

headers

Record<string, string>

❌ No

{}

Optional HTTP headers

Example Request

{ "url": "https://api.example.com/health", "method": "GET", "timeout": 15000, "expectedStatus": 200, "headers": { "User-Agent": "Health-Checker/1.0", "Accept": "application/json" } }

Response Format

{ status: "healthy" | "unhealthy" | "warning"; responseTime: number; // milliseconds statusCode?: number; // HTTP status code message: string; // Human-readable description details: { url: string; timestamp: string; // ISO 8601 format error?: string; // Error details if applicable } }

πŸ”„ Troubleshooting

❓ Tool Not Appearing in Claude Desktop

Problem: Claude doesn't recognize the health check tool.

Solutions:

  1. Verify config syntax: Use a JSON validator

  2. Check file paths: Use absolute paths in config

  3. Restart completely: Close Claude Desktop entirely, then reopen

  4. Test build: Run npm run build and check for errors

  5. Check permissions: Ensure Node.js can read the files

🌐 Network Connection Issues

Problem: Getting network errors or timeouts.

❌ Network error: Client network socket disconnected

Solutions:

  • Service may be down: Try checking in browser first

  • HTTPS issues: Try HTTP version of the URL

  • Firewall: Check if your network blocks the service

  • DNS: Verify the domain resolves correctly

πŸ”’ Security Restriction Messages

Problem: URLs being blocked for security reasons.

❌ Access to internal networks and localhost is not allowed

This is intentional! The security system is working correctly:

  • For local testing: Use browser or curl directly

  • For monitoring: Use external, publicly accessible URLs only

  • For internal services: Deploy monitoring within your network

⚑ Performance Issues

Problem: Slow response times or timeouts.

Solutions:

  • Increase timeout: Use 15-30 second timeouts for slow services

  • Check network: Test connectivity to the target service

  • Reduce load: Avoid checking too many endpoints simultaneously


🀝 Contributing

We welcome contributors of all skill levels! This project was built by a learner with AI assistance, and we're excited to grow the community.

🌟 Ways to Contribute

  • πŸ› Bug Reports: Found an issue? Please report it!

  • ✨ Feature Requests: Ideas for new capabilities?

  • πŸ“– Documentation: Help improve our guides

  • πŸ”§ Code: Submit pull requests for enhancements

  • πŸŽ“ Learning: Share your experience using this project

πŸš€ Getting Started

  1. Fork the repository

  2. Clone your fork: git clone https://github.com/yourusername/service-health-mcp.git

  3. Create branch: git checkout -b feature/amazing-feature

  4. Make changes and test thoroughly

  5. Commit: git commit -m "Add amazing feature"

  6. Push: git push origin feature/amazing-feature

  7. Open Pull Request with detailed description

πŸ“‹ Contribution Guidelines

  • Code Style: Follow existing TypeScript patterns

  • Security: Maintain SSRF protection standards

  • Tests: Add tests for new features

  • Documentation: Update docs for any changes

  • Commit Messages: Use clear, descriptive commits

See CONTRIBUTING.md for detailed guidelines.


πŸ—ΊοΈ Roadmap

🎯 Phase 1: Core Stability (Current)

  • βœ… HTTP/HTTPS health checking

  • βœ… Enterprise security (SSRF protection)

  • βœ… Claude Desktop integration

  • βœ… Professional documentation

🎯 Phase 2: Database Support (Next)

  • πŸ”„ PostgreSQL health checking

  • πŸ”„ MySQL/MariaDB support

  • πŸ”„ Redis connectivity testing

  • πŸ”„ MongoDB health monitoring

🎯 Phase 3: Advanced Features

  • πŸ“Š Multi-service dashboards

  • πŸ“ˆ Health history tracking

  • πŸ”” Webhook notifications

  • ⏰ Scheduled monitoring

🎯 Phase 4: Enterprise

  • ☁️ Cloud integration (AWS, Azure, GCP)

  • 🐳 Docker containerization

  • πŸ” Authentication support

  • πŸ“Š Prometheus metrics export

πŸ’‘ Community Input Welcome! Open an issue to suggest features or vote on priorities.


πŸ“œ License

MIT License - see LICENSE file for details.

TL;DR: You can use, modify, and distribute this project freely. Just include the license notice.


πŸ™ Acknowledgments

  • πŸ€– Anthropic for Claude AI assistance and the MCP protocol

  • πŸ—οΈ MCP Community for pioneering this ecosystem

  • 🌟 Open Source Contributors who make projects like this possible

  • πŸ“š Learning Community for encouraging AI-assisted development


πŸ“ž Support & Community

πŸ“š Documentation

πŸ’¬ Get Help

  • πŸ› - Bug reports and feature requests

  • πŸ’­ - Community Q&A and ideas

πŸ”— Connect

  • πŸ‘©β€πŸ’» - Follow for updates


πŸš€ Built with ❀️, TypeScript, and Claude AI | Making service monitoring accessible to everyone

⭐ Star this repo if it helped you! ⭐

One-click Deploy
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/natashanajdovski/service-health-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server