langfuse-mcp
a typescript mcp to a langfuse MCP that enables you to see and connect agents to lanfuse data
README
langfuse-mcp
An MCP server that exposes the Langfuse REST API as tools, so Claude (or any MCP client) can query your traces, observations, sessions, scores, prompts, datasets, and metrics during a conversation.
Useful when you want to ask things like:
- "Why did trace
abc123fail? Walk me through its observations." - "List the 5 most recent traces with
level=ERRORfor useralice@x.com." - "Summarize today's generation cost broken down by model."
- "Show me the production version of prompt
customer-support-v2."
…without leaving your assistant.
Requirements
- Node.js 20 or newer (
node --version). - A Langfuse project with API keys (cloud.langfuse.com → Settings → API Keys on EU cloud, us.cloud.langfuse.com on US cloud, or your self-hosted instance).
Tools
All tools are read-only and call the Langfuse Public API over HTTPS using your project keys for Basic Auth.
Traces & observations
| Tool | Description |
|---|---|
listTraces |
List traces with filters. Returns summary metadata. |
getTrace |
Fetch a single trace by id including the full observation tree. |
listObservations |
List spans, generations, and events with filters. |
getObservation |
Fetch a single observation by id. |
Sessions
| Tool | Description |
|---|---|
listSessions |
List sessions within a time range. |
getSession |
Fetch a session by id, including its traces. |
Scores
| Tool | Description |
|---|---|
listScores |
List scores with filters. |
getScore |
Fetch a single score by id. |
listScoreConfigs |
List score configurations (definitions, ranges, categories). |
getScoreConfig |
Fetch a score configuration by id. |
Prompts
| Tool | Description |
|---|---|
listPrompts |
List prompt definitions, optionally filtered by name, label, or tag. |
getPrompt |
Fetch a prompt by name, optionally pinned to a specific version or label. |
Datasets
| Tool | Description |
|---|---|
listDatasets |
List datasets configured in Langfuse. |
getDataset |
Fetch a dataset by name. |
listDatasetItems |
List items in a dataset (inputs, expected outputs, metadata). |
getDatasetItem |
Fetch a single dataset item by id. |
listDatasetRuns |
List evaluation runs for a dataset. |
getDatasetRun |
Fetch a specific dataset run by name. |
Metrics, models & misc
| Tool | Description |
|---|---|
getMetrics |
Run a custom metrics query (counts, latency, cost, token usage). Pass a JSON query string. |
getDailyMetrics |
Daily aggregated usage / cost / count metrics. |
listModels |
List models known to Langfuse (for cost / token attribution). |
getModel |
Fetch a model definition by id. |
listProjects |
List projects accessible to the current API key. |
listComments |
List comments attached to traces, observations, sessions, or prompts. |
getComment |
Fetch a single comment by id. |
getMedia |
Fetch metadata for a media attachment (image, audio, file). |
getHealth |
Ping the Langfuse public health endpoint — useful for credential validation. |
Install
Zero install with npx:
npx -y langfuse-mcp
Or install globally:
npm i -g langfuse-mcp
langfuse-mcp --version
Configuration
The server reads three environment variables:
| Variable | Required | Description |
|---|---|---|
LANGFUSE_PUBLIC_KEY |
yes | Project public key (pk-lf-…). |
LANGFUSE_SECRET_KEY |
yes | Project secret key (sk-lf-…). |
LANGFUSE_BASE_URL |
yes | e.g. https://cloud.langfuse.com (EU) or https://us.cloud.langfuse.com (US) or your self-hosted URL. |
LANGFUSE_ENV_FILE |
no | Optional path to a .env file to load instead of ./.env. |
Where do I get my keys? In the Langfuse UI: Settings → API Keys → Create new API keys. Keys are scoped to a single project and a single region (EU vs US are separate accounts — match your
LANGFUSE_BASE_URLto the region you created the keys in).
If a .env file exists in the working directory it will be loaded automatically. See .env.example for a starter file.
Use with Claude Desktop
Edit claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"langfuse": {
"command": "npx",
"args": ["-y", "langfuse-mcp"],
"env": {
"LANGFUSE_PUBLIC_KEY": "pk-lf-…",
"LANGFUSE_SECRET_KEY": "sk-lf-…",
"LANGFUSE_BASE_URL": "https://cloud.langfuse.com"
}
}
}
}
Restart Claude Desktop after editing. The MCP server icon should appear in the chat input.
Use with Claude Code
Project-level (./.mcp.json):
{
"mcpServers": {
"langfuse": {
"command": "npx",
"args": ["-y", "langfuse-mcp"],
"env": {
"LANGFUSE_PUBLIC_KEY": "pk-lf-…",
"LANGFUSE_SECRET_KEY": "sk-lf-…",
"LANGFUSE_BASE_URL": "https://cloud.langfuse.com"
}
}
}
}
User-level config lives at ~/.claude.json and uses the same shape.
Use with Cursor
Project-level: .cursor/mcp.json. User-level: ~/.cursor/mcp.json.
{
"mcpServers": {
"langfuse": {
"command": "npx",
"args": ["-y", "langfuse-mcp"],
"env": {
"LANGFUSE_PUBLIC_KEY": "pk-lf-…",
"LANGFUSE_SECRET_KEY": "sk-lf-…",
"LANGFUSE_BASE_URL": "https://cloud.langfuse.com"
}
}
}
}
Use with Cline (VS Code)
In VS Code settings (settings.json):
{
"cline.mcpServers": {
"langfuse": {
"command": "npx",
"args": ["-y", "langfuse-mcp"],
"env": {
"LANGFUSE_PUBLIC_KEY": "pk-lf-…",
"LANGFUSE_SECRET_KEY": "sk-lf-…",
"LANGFUSE_BASE_URL": "https://cloud.langfuse.com"
}
}
}
}
Use with Continue
In ~/.continue/config.json:
{
"mcpServers": [
{
"name": "langfuse",
"command": "npx",
"args": ["-y", "langfuse-mcp"],
"env": {
"LANGFUSE_PUBLIC_KEY": "pk-lf-…",
"LANGFUSE_SECRET_KEY": "sk-lf-…",
"LANGFUSE_BASE_URL": "https://cloud.langfuse.com"
}
}
]
}
Use with Windsurf
In Windsurf's MCP settings, add:
{
"mcpServers": {
"langfuse": {
"command": "npx",
"args": ["-y", "langfuse-mcp"],
"env": {
"LANGFUSE_PUBLIC_KEY": "pk-lf-…",
"LANGFUSE_SECRET_KEY": "sk-lf-…",
"LANGFUSE_BASE_URL": "https://cloud.langfuse.com"
}
}
}
}
Use with any other MCP client
The server speaks MCP over stdio. Any MCP client can launch it as a subprocess:
LANGFUSE_PUBLIC_KEY=pk-lf-… \
LANGFUSE_SECRET_KEY=sk-lf-… \
LANGFUSE_BASE_URL=https://cloud.langfuse.com \
npx -y langfuse-mcp
Try it
Once wired up, ask your assistant things like:
- "Use the
getHealthtool to confirm langfuse-mcp is connected." - "List the 5 most recent traces with
level=ERROR." - "Show me trace
abc123with all its observations." - "What scores did user
alice@example.comreceive this week?" - "Get the production version of prompt
customer-support." - "List dataset runs for
eval-2026-q1and tell me which one had the highest accuracy score."
Troubleshooting
401 Unauthorized on the first call
- Wrong region: Langfuse Cloud EU and US are separate accounts. Make sure
LANGFUSE_BASE_URLmatches the region where you created the keys (https://cloud.langfuse.comfor EU,https://us.cloud.langfuse.comfor US). - Quoted keys in
.env: this server strips surrounding quotes, but a stray space can still break Basic Auth. Re-paste the key. - Use
getHealthfirst to confirm credentials before running other tools.
npx keeps using an old version
npx -y langfuse-mcp@latest
npx caches packages aggressively. The @latest suffix forces a refresh.
LANGFUSE_BASE_URL must be a full URL error
The most common cause is a missing scheme. Use https://cloud.langfuse.com, not cloud.langfuse.com.
Self-hosted Langfuse
Use the full base URL of your deployment without a trailing slash or path. Example: https://langfuse.mycompany.internal. The server normalizes a single trailing slash, but anything else (/api, /public) will break path joining.
MCP server icon doesn't appear in Claude Desktop
- Check the Claude Desktop log:
~/Library/Logs/Claude/mcp*.log(macOS) or%APPDATA%\Claude\Logs\(Windows). The server writes alangfuse-mcp v… connectedline to stderr on success. - Make sure Node 20+ is on your PATH (Claude Desktop uses your login shell PATH).
- Quit Claude Desktop fully (not just close the window) and relaunch.
Cryptic ERR_REQUIRE_ESM / Unexpected token on startup
Your Node version is too old. This package requires Node ≥ 20. Run node --version and upgrade if needed (e.g. via nvm).
Development
git clone https://github.com/hugoles/langfuse-mcp.git
cd langfuse-mcp
npm install
cp .env.example .env # macOS/Linux
copy .env.example .env # Windows cmd
npm run dev # tsx src/index.ts (no build step)
Other scripts:
| Script | What it does |
|---|---|
npm run build |
Compile TypeScript to dist/. |
npm start |
Run the built server. |
npm run typecheck |
tsc --noEmit. |
npm run lint |
ESLint. |
npm run format / npm run format:check |
Prettier write / check. |
npm test |
Vitest. |
Contributing
See CONTRIBUTING.md. Bug reports and PRs are welcome — please run npm run typecheck && npm run lint && npm test locally before opening one.
Security
Found a vulnerability? Please report it privately as described in SECURITY.md. Do not open a public issue.
License
MIT © Hugoles.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。