Skip to main content

Analytics Tool for MCP Servers - provides insights into MCP tool usage patterns

Project description

MCPCat Python SDK

Analytics tool for MCP (Model Context Protocol) servers that provides insights into tool usage patterns.

Features

  • Tool Usage Analytics: Tracks which tools are called and how frequently
  • Context Injection: Adds context parameters to tools to understand user intent
  • Session Tracking: Identifies and tracks user sessions
  • Report Missing Tools: Allows clients to report when needed tools are missing
  • PII Redaction: Automatically redacts sensitive information from logs
  • Non-invasive Integration: Simple one-line integration with existing MCP servers

Compatibility

MCPCat officially supports >=v1.2.0 of the Python SDK. Support for >=1.0.0 is experimental.

Installation

pip install mcpcat

Quick Start

from fastmcp import FastMCP
from mcpcat import track

# Create your MCP server
mcp = FastMCP("my-server")

# Add your tools
@mcp.tool()
def my_tool(arg: str) -> str:
    return f"Result: {arg}"

# Enable MCPCat tracking
track(mcp)

# Run the server
mcp.run()

Configuration

MCPCat can be configured with various options:

from mcpcat import track, MCPCatOptions

options = MCPCatOptions(
    enable_tool_context=True,   # Add context parameters to tools
    enable_tracing=True,           # Trace tool calls
    enable_report_missing=True,     # Add report_missing tool
    identify=my_identify_func     # Custom session identification
)

track(mcp, options)

How It Works

  1. MCPCat intercepts the MCP server's tool listing and calling mechanisms
  2. It injects a context parameter into each tool's schema
  3. When tools are called, it captures analytics data including timing, arguments, and results
  4. The report_missing tool allows LLMs to report when they need functionality that isn't available

Custom Session Identification

You can provide a custom function to identify users:

def identify_user(request_context):
    # Your logic to identify the user
    return {
        "sessionId": "session-123",
        "user_id": "user-456"
    }

options = MCPCatOptions(identify=identify_user)

Log Format

MCPCat logs are written in JSON format with the following structure:

{
  "timestamp": "2024-01-20T10:30:00Z",
  "event": "tool_call",
  "tool_name": "my_tool",
  "session_id": "session-123",
  "user_id": "user-456",
  "duration": 0.123,
  "result": "success",
  "context_provided": true
}

Development

To set up for development:

# Clone the repository
git clone https://github.com/yourusername/mcpcat-python-sdk.git
cd mcpcat-python-sdk

# Install dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run type checking
mypy src

# Run linting
ruff check src

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcpcat-0.1.0b5.tar.gz (46.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcpcat-0.1.0b5-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file mcpcat-0.1.0b5.tar.gz.

File metadata

  • Download URL: mcpcat-0.1.0b5.tar.gz
  • Upload date:
  • Size: 46.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.9

File hashes

Hashes for mcpcat-0.1.0b5.tar.gz
Algorithm Hash digest
SHA256 4a7d9c03eae2ae8d30809eccec8fedc15d9f11b67af45f857688d55b9c944a69
MD5 04d1543262d274afe0a35cc737cac59f
BLAKE2b-256 e070240245f7e30a90cd5964ff683418df9f4474a5e335995c83bcab2fc9c5c2

See more details on using hashes here.

File details

Details for the file mcpcat-0.1.0b5-py3-none-any.whl.

File metadata

  • Download URL: mcpcat-0.1.0b5-py3-none-any.whl
  • Upload date:
  • Size: 27.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.9

File hashes

Hashes for mcpcat-0.1.0b5-py3-none-any.whl
Algorithm Hash digest
SHA256 29a6cdd73f21772d37a0194d306a4a2c7e3df06f2a6a382ec9b0c07f57a4b9d6
MD5 14c19c4cffc6d0badc8fabea3fa1d0cf
BLAKE2b-256 9e75fb68c3c2469560d8c64d5eb495ae2a5bb23d431117b665b7bea3c5967d1f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page