搜索监控服务

一个用于搜索和监控丹麦上诉委员会门户的全面解决方案,具有查询日志记录和实时监控功能。

  • by KlingerSaw
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 KlingerSaw/nh-mcp-afgp

使用说明

Naevneneshus MCP服务器和监控仪表板

搜索和监控丹麦上诉委员会(naevneneshus.dk)门户的全面解决方案,内置查询日志和实时监控功能。

特性

MCP服务器(支持边缘功能)

  • 兼容OpenAPI 3.0 -完整的OpenAPI规范,便于集成
  • 多门户支持 -适用于任何 *.naevneneshus.dk 门户
  • 自动查询日志记录 -所有搜索记录到Supabase数据库
  • 误差跟踪 -捕获并记录失败的查询
  • 性能监控 -跟踪所有请求的执行时间
  • RESTful API -用于搜索、提要和发布检索的干净端点

Web仪表板

  • 实时监控 -通过Supabase订阅实时更新
  • 14天查询历史 -查看过去两周的所有查询
  • 自动警报 -突出显示0个结果或>50个结果的查询
  • 统计概述 -查询总数、空结果、大结果、错误
  • 交互式搜索 -直接从web界面测试MCP服务器

OpenWebUI集成

  • 简化工具 -易于与OpenWebUI集成
  • 所有复杂性均由MCP服务器处理 -查询构建、日志记录、错误处理
  • 干净的回应 -已格式化的结果已准备好供AI使用

建筑

┌─────────────┐
│  OpenWebUI  │
│   Function  │
└──────┬──────┘
       │
       │ HTTP POST
       ▼
┌──────────────────┐
│   MCP Server     │
│  (Edge Function) │
└──────┬───────────┘
       │
       ├─────────────┐
       │             │
       ▼             ▼
┌──────────────┐  ┌──────────────┐
│  Portal APIs │  │   Supabase   │
│ (*.naevnene- │  │   Database   │
│  shus.dk)    │  │ (query_logs) │
└──────────────┘  └──────────────┘
       │                  │
       │                  │
       └─────────┬────────┘
                 │
                 ▼
        ┌─────────────────┐
        │  Web Dashboard  │
        │   (React App)   │
        └─────────────────┘

安装说明

1.数据库设置

数据库架构已通过迁移创建。它包括:

  • query_logs 用于存储所有搜索查询的表
  • 用于高效查询的索引
  • 行级安全(RLS)策略

2.MCP服务器部署

MCP服务器作为Supabase边缘功能部署在:

https://YOUR_SUPABASE_URL/functions/v1/naevneneshus-mcp

终点:

  • POST /search -搜索出版物
  • POST /feed -获取最新出版物
  • POST /publication -按ID获取特定出版物
  • GET /portals -列出可用门户
  • GET /health -健康检查
  • GET /openapi.json -OpenAPI 3.0规范

3.Web仪表板设置

  1. 安装依赖项:

    npm install
    
  2. 环境变量已在中配置 .env

  3. 运行开发服务器:

    npm run dev
    
  4. 生产建设:

    npm run build
    

4.OpenWebUI集成

看 OPENWEBUI_INTEGRATION.md 详细说明。

快速设置:

  1. 从获取您的Supabase URL和匿名密钥 .env
  2. 从集成指南中复制Python工具代码
  3. 更新工具中的凭据
  4. 将该工具添加到OpenWebUI

支持的门户

  • mfkn.naevneneshus.dk 环境 和 食品 委员
  • aen.naevnenshus.dk -Ankestyrelsen
  • ekn.naevnenshus.dk 能源 法案 委员
  • pn.naevneneshus.dk 计划 上诉 委员
  • 任何其他 *.naevneneshus.dk 门户

API示例

搜索请求

curl -X POST https://YOUR_SUPABASE_URL/functions/v1/naevneneshus-mcp/search \\
  -H "Authorization: Bearer YOUR_ANON_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{
    "portal": "mfkn.naevneneshus.dk",
    "query": "jordforurening",
    "page": 1,
    "pageSize": 10,
    "filters": {
      "category": "ruling",
      "dateRange": {
        "start": "2024-01-01",
        "end": "2025-01-27"
      }
    }
  }'

订阅源请求

curl -X POST https://YOUR_SUPABASE_URL/functions/v1/naevneneshus-mcp/feed \\
  -H "Authorization: Bearer YOUR_ANON_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{
    "portal": "mfkn.naevneneshus.dk"
  }'

监控仪表板

web仪表板提供:

统计卡

  • 查询总数 -过去14天内的所有查询
  • 空结果 -查询返回0个结果(突出显示以供查看)
  • 大型结果 -返回>50个结果的查询(突出显示以供查看)
  • 错误 -查询失败

查询历史表

显示所有查询:

  • 时间戳
  • 门户
  • 查询字符串
  • 结果计数(颜色编码)
  • 执行时间
  • 状态(成功/错误)

实时更新

当通过Supabase实时订阅记录新查询时,仪表板会自动更新。

警报系统

系统会自动突出显示需要注意的查询:

  1. 空结果(黄色) -返回0个结果的查询

    • 可能表明搜索词需要改进
    • 可能表示数据可用性问题
  2. 大结果(橙色) -返回>50个结果的查询

    • 可能太宽泛了
    • 可能会影响性能
  3. 错误(红色) -查询失败

    • 网络问题
    • 无效参数
    • 门户不可用

益处

适用于OpenWebUI用户

  • 简化集成 -Python中没有复杂的查询构建
  • 自动记录 -自动跟踪所有查询
  • 更好的错误处理 -一致的错误消息
  • 多门户支持 -适用于所有门户的单一工具

对于管理员

  • 完全可视 -查看所有查询及其结果
  • 性能监控 -跟踪执行时间
  • 问题检测 -问题自动警报
  • 使用情况分析 -了解查询模式

对于开发者

  • 清洁API -记录良好的RESTful端点
  • 类型安全性 -TypeScript贯穿始终
  • 可扩展的 -基于Supabase基础设施构建
  • 可扩展 -易于添加新功能

技术栈

  • 前端:React、TypeScript、顺风CSS、Lucide图标
  • 后端:Supabase边缘函数(Deno)
  • 数据库:Supabase PostgreSQL
  • 实时:Supabase实时订阅
  • 构建:快
  • 部署:Supabase主机

发展

# Install dependencies
npm install

# Run development server
npm run dev

# Build for production
npm run build

# Run linter
npm run lint

# Type check
npm run typecheck

环境变量

创建一个 .env 文件包含:

VITE_SUPABASE_URL=your-supabase-url
VITE_SUPABASE_ANON_KEY=your-anon-key

许可证

麻省理工学院

支持

对于问题或疑问:

  1. 检查 集成指南
  2. 查看监控仪表板以了解查询问题
  3. 检查辅助数据库日志中的边缘函数错误