
Security News
Another Round of TEA Protocol Spam Floods npm, But It’s Not a Worm
Recent coverage mislabels the latest TEA protocol spam as a worm. Here’s what’s actually happening.
pingera-mcp-server
Advanced tools
Model Context Protocol (MCP) server for Pingera monitoring service integration
A Model Context Protocol (MCP) server for the Pingera monitoring service, providing seamless integration between AI models and monitoring data.
# Install dependencies
uv sync
# Set up your API key (required)
# Add PINGERA_API_KEY to your environment
# Run the server
python -m pingera_mcp
The server will start in read-only mode by default and connect to the Pingera API.
The Pingera MCP Server supports two transport modes:
Used for local integration with Claude Desktop and other stdio-based MCP clients. Authentication is configured via environment variables.
# Run in stdio mode (default)
python -m pingera_mcp
Enables web-based access through HTTP with Server-Sent Events. Perfect for remote clients, web applications, and programmatic access.
# Configure SSE mode
export PINGERA_TRANSPORT_MODE=sse
export PINGERA_HTTP_HOST=0.0.0.0
export PINGERA_HTTP_PORT=5000
# Run in SSE mode
python -m pingera_mcp
The server will be accessible at http://0.0.0.0:5000/mcp/
SSE mode supports two authentication methods via the Authorization header:
API Key Authentication (recommended for testing):
Authorization: YOUR_API_KEY
JWT Bearer Token Authentication:
Authorization: Bearer YOUR_JWT_TOKEN
import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
async def main():
client = MultiServerMCPClient({
"pingera": {
"url": "http://0.0.0.0:5000/mcp/",
"transport": "streamable_http",
"headers": {
"Authorization": "YOUR_API_KEY", # or "Bearer YOUR_JWT_TOKEN"
}
}
})
# Get available tools
tools = await client.get_tools()
print(f"Available tools: {len(tools)}")
asyncio.run(main())
PINGERA_TRANSPORT_MODE - Set to sse to enable HTTP/SSE mode (default: stdio)PINGERA_HTTP_HOST - Host to bind to (default: 0.0.0.0)PINGERA_HTTP_PORT - Port to listen on (default: 5000)PINGERA_REQUIRE_AUTH_HEADER - Require Authorization header (default: false)Note: In SSE mode, you can either:
When REQUIRE_AUTH_HEADER=true, the server will only accept requests with valid Authorization headers.
To use this MCP server with Claude Desktop, you need to configure it in your Claude Desktop settings.
First, install the package globally using UV:
uv tool install pingera-mcp-server
Open the Claude Desktop configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%/Claude/claude_desktop_config.jsonAdd the following configuration:
{
"mcpServers": {
"pingera": {
"command": "uv",
"args": [
"run",
"--with",
"pingera-mcp-server",
"--python",
"3.10",
"python",
"-m",
"pingera_mcp"
],
"env": {
"PINGERA_API_KEY": "your_api_key_here",
"PINGERA_MODE": "read_only",
"PINGERA_BASE_URL": "https://api.pingera.ru/v1",
"PINGERA_TIMEOUT": "30",
"PINGERA_MAX_RETRIES": "3",
"PINGERA_DEBUG": "false",
"PINGERA_SERVER_NAME": "Pingera MCP Server"
}
}
}
}
PINGERA_API_KEY - Your Pingera API key (required)PINGERA_MODE - Operation mode: read_only (default) or read_writePINGERA_BASE_URL - API endpoint (default: https://api.pingera.ru/v1)PINGERA_TIMEOUT - Request timeout in seconds (default: 30)PINGERA_MAX_RETRIES - Maximum retry attempts (default: 3)PINGERA_DEBUG - Enable debug logging (default: false)PINGERA_SERVER_NAME - Server display name (default: Pingera MCP Server)After updating the configuration file, restart Claude Desktop to load the new MCP server. You should now be able to access your Pingera monitoring data directly through Claude's interface.
Once configured, you can ask Claude to:
Configure the server using environment variables:
# Required (for stdio mode or as fallback in SSE mode)
PINGERA_API_KEY=your_api_key_here
# OR
PINGERA_JWT_TOKEN=your_jwt_token_here
# Transport Mode
PINGERA_TRANSPORT_MODE=stdio # stdio (default) or sse
# SSE Mode Configuration (only used when TRANSPORT_MODE=sse)
PINGERA_HTTP_HOST=0.0.0.0 # Host to bind to
PINGERA_HTTP_PORT=5000 # Port to listen on
PINGERA_REQUIRE_AUTH_HEADER=false # Require Authorization header
# Optional
PINGERA_MODE=read_only # read_only or read_write
PINGERA_BASE_URL=https://api.pingera.ru/v1
PINGERA_TIMEOUT=30
PINGERA_MAX_RETRIES=3
PINGERA_DEBUG=false
PINGERA_SERVER_NAME=Pingera MCP Server
Available tools for AI agents:
list_pages - Get paginated list of monitored pages
page, per_page, statusget_page_details - Get detailed information about a specific page
page_idlist_component_groups - List all component groups for monitoring organizationget_component_details - Get detailed information about a specific component
component_idlist_checks - List all monitoring checks (HTTP, TCP, ping, etc.)
page, page_size, status, check_typeget_check_details - Get detailed information about a specific check
check_idlist_alert_rules - List all alert rules and their trigger conditionslist_heartbeats - List all heartbeat monitors for cron jobs and scheduled tasks
page, page_size, statuslist_incidents - List all incidents and their current status
page, page_size, statustest_pingera_connection - Test API connectivityAvailable only in read-write mode (PINGERA_MODE=read_write):
create_page - Create a new status page
name (required), subdomain, domain, url, languageupdate_page - Update existing status page configuration
page_id (required), name, subdomain, domain, url, language, additional kwargspatch_page - Partially update specific page fields
page_id (required), kwargs for specific fieldsdelete_page - Permanently delete a status page
page_id (required)create_component - Create new component or component group
page_id (required), name (required), description, group, group_id, only_show_if_degraded, position, showcase, statusupdate_component - Update existing component configuration
page_id (required), component_id (required), name, description, group, group_id, only_show_if_degraded, position, showcase, status, additional kwargspatch_component - Partially update specific component fields
page_id (required), component_id (required), kwargs for specific fieldsdelete_component - Delete a component permanently
page_id (required), component_id (required)create_check - Create new monitoring check
check_data (dict with check configuration)update_check - Update existing monitoring check
check_id (required), check_data (dict with updated configuration)delete_check - Delete monitoring check permanently
check_id (required)pause_check - Temporarily pause monitoring check
check_id (required)resume_check - Resume paused monitoring check
check_id (required)create_alert - Create new alert rule
alert_data (dict with alert configuration)update_alert - Update existing alert rule
alert_id (required), alert_data (dict with updated configuration)delete_alert - Delete alert rule permanently
alert_id (required)create_heartbeat - Create new heartbeat monitor
heartbeat_data (dict with heartbeat configuration)update_heartbeat - Update existing heartbeat monitor
heartbeat_id (required), heartbeat_data (dict with updated configuration)delete_heartbeat - Delete heartbeat monitor permanently
heartbeat_id (required)send_heartbeat_ping - Manually send ping to heartbeat
heartbeat_id (required)create_incident - Create new incident on status page
page_id (required), incident_data (dict with incident details)update_incident - Update existing incident details
page_id (required), incident_id (required), incident_data (dict with updated details)delete_incident - Delete incident permanently
page_id (required), incident_id (required)add_incident_update - Add status update to incident
page_id (required), incident_id (required), update_data (dict with update details)update_incident_update - Edit existing incident update
page_id (required), incident_id (required), update_id (required), update_data (dict with updated content)delete_incident_update - Delete specific incident update
page_id (required), incident_id (required), update_id (required)The server supports two levels of access control:
Set PINGERA_MODE=read_write to enable write operations.
Note: Access control mode is independent of transport mode. You can run the server in read-write mode with either stdio or SSE transport.
Located in pingera/, this modular library provides:
Run all tests:
uv run pytest
Run tests with verbose output:
uv run pytest -v
Run specific test files:
uv run pytest tests/test_models.py
uv run pytest tests/test_config.py
uv run pytest tests/test_mcp_server.py
Run tests with coverage:
uv run pytest --cov=pingera --cov=config --cov=mcp_server
The test suite includes:
The MCP Inspector is an official debugging tool that provides a web interface to test MCP servers interactively. It allows you to explore available resources, execute tools, and inspect the server's responses in real-time.
mcp.json configuration file:{
"mcpServers": {
"pingera": {
"command": "uv",
"args": [
"run",
"--with",
"pingera-mcp-server",
"--python",
"3.10",
"python",
"-m",
"pingera_mcp"
],
"env": {
"PINGERA_API_KEY": "your_pingera_api_key",
"PINGERA_MODE": "read_only",
"PINGERA_BASE_URL": "https://api.pingera.ru/v1",
"PINGERA_TIMEOUT": "30",
"PINGERA_MAX_RETRIES": "3",
"PINGERA_DEBUG": "false"
}
}
}
}
npx @modelcontextprotocol/inspector --config mcp.json
http://localhost:6274)The inspector provides:
list_pages, get_page_details, etc.This is the recommended way to test your MCP server integration before deploying with Claude Desktop or other MCP clients.
mcp_client.pymcp_client.py uses Gemini models and integrates with the MCP server to execute various tools. It is just an example and can be easly modified to use any other Large Language Model.
python mcp_client.py "Show me my status pages"
The system includes comprehensive error handling:
PingeraError: Base exception for all client errorsPingeraAPIError: API response errors with status codesPingeraAuthError: Authentication failuresPingeraConnectionError: Network connectivity issuesPingeraTimeoutError: Request timeout handlingFAQs
Model Context Protocol (MCP) server for Pingera monitoring service integration
We found that pingera-mcp-server demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Recent coverage mislabels the latest TEA protocol spam as a worm. Here’s what’s actually happening.

Security News
PyPI adds Trusted Publishing support for GitLab Self-Managed as adoption reaches 25% of uploads

Research
/Security News
A malicious Chrome extension posing as an Ethereum wallet steals seed phrases by encoding them into Sui transactions, enabling full wallet takeover.