Skip to main content
Glama
KarandeepSinghSodhi

Langfuse Trace Fetcher

README.md
# Langfuse Trace Fetcher — MCP Server for VS Code

> **Version 0.1.0** · Fetch Langfuse observability traces directly into your coding agent's context.

## What It Does

This is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that connects your VS Code coding agent (Gemini Code Assist) to a [Langfuse](https://langfuse.com) instance. It exposes three tools:

| Tool | Description |
|------|-------------|
| `fetch_langfuse_traces` | Fetch a filtered, paginated list of traces |
| `get_langfuse_trace_detail` | Fetch full detail for a single trace (including observations, scores) |
| `list_langfuse_trace_filters` | Show available filter fields and usage examples |

## Installation

### From PyPI (Recommended)

```bash
pip install langfuse-traces-mcp
```

### From Source

```bash
# Clone the repository
git clone https://github.com/yourusername/langfuse-traces-mcp.git
cd langfuse-traces-mcp

# Install in development mode (includes test dependencies)
pip install -e ".[dev]"
```

## Prerequisites

- **Python 3.10+**
- **VS Code** with Gemini Code Assist extension (Agent Mode enabled)
- **Langfuse instance** — cloud ([cloud.langfuse.com](https://cloud.langfuse.com)) or self-hosted

## VS Code Setup

1. Install the package: `pip install langfuse-traces-mcp`

2. Add the MCP server configuration to your VS Code settings. Open VS Code settings (Ctrl/Cmd + ,) and search for "Gemini Code Assist". In the settings JSON, add:

```json
{
  "mcpServers": {
    "langfuse-traces": {
      "command": "langfuse-traces-mcp"
    }
  }
}
```

3. **Reload VS Code** after configuration.
4. Open Gemini Code Assist chat and **toggle Agent Mode ON**.
5. The `langfuse-traces` tools should now be available.

## Usage

Once configured, you can ask your coding agent questions like:

- "Show me traces from production in the last hour"
- "Get details for trace ID abc-123-xyz"
- "List traces with errors tagged as 'critical'"
- "Show me traces from user 'john.doe' in the staging environment"

The agent will fetch and display formatted trace data directly in the conversation.

## Available Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `name` | string | — | Filter by trace name |
| `user_id` | string | — | Filter by user ID |
| `session_id` | string | — | Filter by session ID |
| `tags` | list | — | Filter by tags |
| `version` | string | — | Filter by app version |
| `release` | string | — | Filter by release |
| `environment` | string | — | Filter by environment |
| `from_timestamp` | string | — | ISO 8601 start time |
| `to_timestamp` | string | — | ISO 8601 end time |
| `limit` | int | 20 | Max traces (1–100) |
| `page` | int | 1 | Page number |

## Example Chat Usage

In VS Code Gemini Code Assist chat (with Agent Mode on):

```
Fetch the last 5 production traces from my Langfuse instance:
- Public key: pk-lf-abc123
- Secret key: sk-lf-xyz789
- Host: https://cloud.langfuse.com
- Environment: production
- Limit: 5
```

The agent will call `fetch_langfuse_traces` with those parameters and return formatted trace data.

## Running Tests

```bash
# Install dev dependencies (if not already)
pip install -e ".[dev]"

# Run all tests
pytest tests/ -v

# Run a specific test file
pytest tests/test_models.py -v
pytest tests/test_client.py -v
pytest tests/test_server.py -v
```

## Project Structure

```
├── pyproject.toml                  # Project metadata & dependencies (v0.1.0)
├── README.md                       # This file
├── .gemini/
│   └── settings.json               # MCP server registration for VS Code
├── src/
│   └── langfuse_traces_mcp/
│       ├── __init__.py              # Version export
│       ├── server.py                # FastMCP server + 3 tool definitions
│       ├── client.py                # Async HTTP client for Langfuse API
│       └── models.py                # Pydantic models (filters, credentials)
└── tests/
    ├── conftest.py                  # Shared test fixtures & mock data
    ├── test_models.py               # Filter & credential validation tests
    ├── test_client.py               # REST client tests (mocked HTTP)
    └── test_server.py               # MCP tool integration tests
```

## Versioning

This project follows [Semantic Versioning 2.0](https://semver.org/):

- **PATCH** (0.1.x) — Bug fixes
- **MINOR** (0.x.0) — New filters, tools, or features
- **MAJOR** (x.0.0) — Breaking changes

## License

MIT

TDQS

A4.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool serves a distinct purpose: fetching a filtered list of traces, retrieving full detail for a specific trace, and listing available filter fields. There is no functional overlap.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (fetch_langfuse_traces, get_langfuse_trace_detail, list_langfuse_trace_filters) with snake_case, making the naming predictable and clear.

Tool Count5/5

With 3 tools, the set is well-scoped for a trace fetching server: listing with filters, getting detail, and a reference tool for filters. No extraneous or missing tools.

Completeness5/5

For a 'Trace Fetcher', the tools cover the core workflow: querying traces with filters, retrieving individual details, and discovering available filters. No essential operations are missing.

Maintenance

ActivityInactive
ResponsivenessNo issues