廊坊MCP服务器——Java/Spring AI
一个生产级MCP服务器,将任何兼容MCP的AI代理连接到您的Langfuse可观察性数据。\ 查询跟踪、调试错误、检查会话、管理提示、运行评估、注释数据和配置模型——所有这些都是通过自然语言完成的。
运输: 端口8080上的流式HTTP,与Cursor、Claude Desktop、VS Code/GitHub Copilot以及任何支持HTTP传输的MCP客户端兼容。
______________________________________________________________________
为什么是这个服务器?
| 能力 | 此服务器 | Langfuse MCP官方 |
|---|---|---|
| 痕迹和观察 | ✅ | ❌ |
| 会话和用户 | ✅ | ❌ |
| 异常跟踪 | ✅ | ❌ |
| 提示管理(读+写) | ✅ | ✅ 只读 |
| 数据集和运行管理 | ✅ | ❌ |
| 分数和分数配置 | ✅ | ❌ |
| 注释队列 | ✅ | ❌ |
| 评论 | ✅ | ❌ |
| 模型定义 | ✅ | ❌ |
| LLM连接 | ✅ | ❌ |
| 项目反思 | ✅ | ❌ |
| 模式自省 | ✅ | ❌ |
| Java/Spring人工智能✅ | ❌ python |
______________________________________________________________________
先决条件
- Java 21 或更高版本
- Maven 3.9+ (或使用Docker构建——不需要本地Maven)
- A. 廊坊 具有API密钥对的帐户(
public-key+secret-key)
______________________________________________________________________
快速开始
# 1. Build
mvn clean package -DskipTests
# 2. Set credentials
export LANGFUSE_PUBLIC_KEY=pk-lf-...
export LANGFUSE_SECRET_KEY=sk-lf-...
export LANGFUSE_HOST=https://cloud.langfuse.com
# 3. Run (Streamable HTTP transport — port 8080)
java -jar target/langfuse-mcp-1.0.0.jar
# 4. Verify
curl http://localhost:8080/actuator/health
# 5. Inspect all tools
npx @modelcontextprotocol/inspector http://localhost:8080/mcp从获取凭据 朗富士云 → 设置→ API密钥。\ 自助式廊坊?集 LANGFUSE_HOST 到您的实例URL。
______________________________________________________________________
配置
所有配置均由环境变量驱动(或 application.yml 用于本地覆盖)。
| 属性 | 环境变量 | 必需 | 默认值 | 描述 |
|---|---|---|---|---|
langfuse.public-key | LANGFUSE_PUBLIC_KEY | ✅ | — | 廊坊项目公钥 |
langfuse.secret-key | LANGFUSE_SECRET_KEY | ✅ | — | Langfuse项目密钥 |
langfuse.host | LANGFUSE_HOST | ✅ | — | Langfuse基本URL,例如。 https://cloud.langfuse.com |
langfuse.timeout | LANGFUSE_TIMEOUT | ❌ | 30s | HTTP请求超时——Spring持续时间格式,例如。 30s, 1m, 90s |
langfuse.read-only | — | ❌ | true | 信息标志;写操作可以通过特定的工具进行 |
尾随斜线处理
LANGFUSE_HOST 可以指定带有或不带有尾随斜线——服务器会自动对其进行标准化。
______________________________________________________________________
客户端配置
光标(.cursor/mcp.json)
{
"mcpServers": {
"langfuse": {
"url": "http://localhost:8080/mcp"
}
}
}克劳德桌面(claude_desktop_config.json)
{
"mcpServers": {
"langfuse": {
"url": "http://localhost:8080/mcp"
}
}
}在macOS上: ~/Library/Application Support/Claude/claude_desktop_config.json
VS代码/GitHub副本
URL模式:
{
"github.copilot.chat.mcp.servers": {
"langfuse": {
"url": "http://localhost:8080/mcp"
}
}
}命令模式 (仅限stdio客户端):
{
"github.copilot.chat.mcp.servers": {
"langfuse": {
"command": "java",
"args": ["-jar", "/absolute/path/to/langfuse-mcp-1.0.0.jar"],
"env": {
"LANGFUSE_PUBLIC_KEY": "pk-lf-...",
"LANGFUSE_SECRET_KEY": "sk-lf-...",
"LANGFUSE_HOST": "https://cloud.langfuse.com"
}
}
}
}注: MCP端点为/mcp(可流式传输HTTP)。传统的苏格兰和南方能源公司/sse此服务器未使用终结点。
______________________________________________________________________
码头工人
这 Dockerfile 是一个多阶段构建:它在Docker中编译Spring Boot jar,并在端口上运行MCP服务器 8080不需要本地安装Maven。
# Build image (compiles inside Docker)
docker build -t langfuse-mcp:latest .
# Run
docker run --rm -p 8080:8080 \
-e LANGFUSE_PUBLIC_KEY=pk-lf-... \
-e LANGFUSE_SECRET_KEY=sk-lf-... \
-e LANGFUSE_HOST=https://cloud.langfuse.com \
langfuse-mcp:latest容器启动后:
| 端点 | URL |
|---|---|
| 健康检查 | http://localhost:8080/actuator/health |
| Ping | http://localhost:8080/ping |
| MCP端点 | http://localhost:8080/mcp |
Langfuse在同一主机上的另一个容器中运行:
-e LANGFUSE_HOST=http://host.docker.internal:3000______________________________________________________________________
工具参考(共55个)
每个工具都返回一致的 ApiResponse 信封:
{ "success": true, "data": { ... }, "timestamp": "2025-01-15T10:30:00Z" }
{ "success": false, "errorCode": "TRACE_NOT_FOUND", "errorMessage": "...", "timestamp": "..." }分页列表响应将其项目包装在一个 PagedResponse:
{
"data": [ ... ],
"meta": { "page": 1, "limit": 20, "totalItems": 142, "totalPages": 8 }
}分页是基于1的(page 默认为 1). limit 默认为 20 并且上限为 100 如有注明。要浏览结果,请递增 page 同时保持 limit 固定的。
______________________________________________________________________
痕迹(8个工具)
| 工具 | 说明 |
|---|---|
fetch_traces | 分页的痕迹列表。筛选依据 userId, name, sessionId, tags, fromTimestamp, toTimestamp. |
fetch_trace | 单个跟踪的完整细节,包括嵌套观察、输入/输出、元数据、延迟和令牌使用。需要 traceId. |
find_exceptions | 痕迹谁 level 等于 ERROR.支持时间范围和分页。 |
find_exceptions_in_file | 元数据包含给定文件名子字符串的错误级别跟踪。需要 fileName. |
get_exception_details | 单个错误跟踪的完整细节。需要 traceId. |
get_error_count | 计数 ERROR-时间范围内的电平跟踪(扫描多达500条跟踪)。 |
delete_trace | 按ID永久删除单个跟踪。 不可逆转。 |
delete_traces | 永久删除多个痕迹。传递一个以逗号分隔的跟踪ID列表。 不可逆转。 |
______________________________________________________________________
会话(3个工具)
| 工具 | 说明 |
|---|---|
fetch_sessions | 带有可选时间范围过滤器的分页会话列表。 |
get_session_details | 完整的会话细节,包括其所有痕迹。需要 sessionId. |
get_user_sessions | 具有分页的特定用户的所有会话。需要 userId. |
______________________________________________________________________
提示(5个工具)
| 工具 | 说明 |
|---|---|
list_prompts | 项目中所有提示的分页列表。 |
get_prompt | 按名称获取提示。可选地固定到 version 数字或a label (例如。 production, staging). |
create_prompt | 创建新提示或将新版本附加到现有提示。 type 是 text (纯字符串)或 chat (JSON数组 {role, content} 消息)。支持逗号分隔 labels 和 tags. |
delete_prompt | 按名称删除提示版本。特定范围 label 或 version;省略两者以删除所有版本。 不可逆转。 |
update_prompt_labels | 替换特定提示版本上的完整标签集。提供一个空字符串以删除所有标签。这 latest 标签由Langfuse保留。 |
______________________________________________________________________
数据集(7个工具)
| 工具 | 说明 |
|---|---|
list_datasets | 所有评估数据集的分页列表。 |
get_dataset | 按确切名称获取数据集。 |
create_dataset | 创建新数据集。可选供应 description, metadataJson, inputSchemaJson,以及 expectedOutputSchemaJson (全部为JSON字符串)。 |
list_dataset_items | 数据集中的分页项目列表。需要 datasetName. |
get_dataset_item | 按ID获取单个数据集项 |
create_dataset_item | 创建或追加销售数据集项。可选链接到 sourceTraceId 或 sourceObservationId.支持 itemId 用于扰乱语义。 |
delete_dataset_item | 按ID永久删除数据集项。 不可逆转。 |
______________________________________________________________________
数据集运行(5个工具)
| 工具 | 说明 |
|---|---|
list_dataset_runs | 数据集的实验运行分页列表。需要 datasetName. |
get_dataset_run | 完整的跑步细节,包括所有跑步项目。需要 datasetName 和 runName. |
delete_dataset_run | 删除跑步记录及其所有项目。 不可逆转。 需要 datasetName 和 runName. |
list_dataset_run_items | 跑步中项目的分页列表。需要 datasetId 和 runName. |
create_dataset_run_item | 创建一个运行项,将数据集项链接到跟踪/观察。如果运行尚不存在,则自动创建运行。 |
______________________________________________________________________
指标(1个工具)
| 工具 | 说明 |
|---|---|
get_cost_metrics | 通过Metrics API v1查询Langfuse成本、令牌、延迟和使用分析。镜像:GET/api/public/metrics?查询=。将完整查询作为JSON字符串传递。所有聚合都是服务器端的。 |
此工具接受单个必需参数 query 其必须是与度量API模式匹配的JSON串行化字符串。示例(将这些作为单个JSON字符串传递):
- 过去7天的总成本:
{“视图”:“跟踪”,“指标”:\[{“度量”:“总成本”,“聚合”:“总和”}\],“来自时间戳”:“2026-03-18T00:00:00Z”,“到时间戳”:“2026-03-25T23:59:59Z”}
- 本周每日成本趋势:
{“视图”:“跟踪”,“指标”:\[{“度量”:“总成本”,“聚合”:“总和”},{“度量值”:“计数”,“聚集”:“计数值”}\],“时间维度”:{“粒度”:“天”},“从时间戳”:“2026-03-18T00:00:00Z”,“到时间戳”:“2026-03-25T23:59:59Z”}
- 按型号列出的成本:
{“view”:“observation”,“dimensions”:\[{“field”:“providedModelName”}\],“metrics”:\[{“measures”:“totalCost”,“aggregation”:“sum”},{“measure”:“totalTokens”,“聚合”:“summ”}\]
- 特定用户的成本:
{“view”:“traces”,“metrics”:\[{“measure”:“totalCost”,“aggregation”:“sum”\],“filters”:\](https://opensource.org/licenses/MIT)
