Token导航 LogoToken导航TokenDH.com
nordstemmen-AI logo
搜索检索未说明官方级别未说明来源级核验

nordstemmen-AI

MCP Server

通过AI技术支持搜索Nordstemmen市所有公开文档,提供语义和关键词混合搜索功能。

工具数

4

提示词数

0

GitHub Stars

6

资源数

0
搜索TypeScriptClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

levino

提供方

levino

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

北欧声音透明

通过人工智能搜索Nordstemmen社区的所有公共文件 - 直接在Claude中!

立即使用

您可以使用此搜索引擎 立即免费使用无需安装任何东西:

关于Claude

  1. 进入https://claude.ai
  2. 点击您的个人资料(左下角) → 设置 -> 连接器
  3. 点击 添加自定义连接器
  4. 输入 :

- 名字北方之声社区 - 统一资源定位符: https://nordstemmen-mcp.levinkeller.de/mcp

  1. 保存

完成!你可以问克劳德:

  • *“北斯特门的新游泳池要多少钱?”*
  • *“向我展示有关Escherder Straße建筑工地的所有决定”*
  • *“2024年预算何时通过?”*

自2007年以来,Claude自动搜索所有文件,并为您提供理事会信息系统中原始文件的链接。

关于ChatGPT

您需要一个付费账户(例如 Plus),并且必须在https://chatgpt.com/登录。

  1. 点击您的个人资料(左下角) → 设置 -> 应用程序和连接器.
  2. 扩展设置 洞穴 开发者模式 启用(如果尚未启用)。之后在 返回 点击。
  3. 右上角 创建 点击并输入以下内容:

- 名字北方之声社区 - MCP服务器的URL: https://nordstemmen-mcp.levinkeller.de/mcp - 验证无身份验证

  1. 我理解,我想继续。单击复选框,然后按 创建 点击。

连接器已设置并准备使用。打开一个 新聊天 然后选择这个 +在输入框左侧的图标 → … 更多北方之声社区 出来。

首次调用操作时,出于安全原因,您需要确认操作。您可以选择 记住此对话 启用以减少查询次数。

______________________________________________________________________

这是达斯吗?

该项目允许语义搜索 所有公共文件 北方之声社区信息系统:

  • 会议记录(市议会、地方议会、委员会)
  • 决议草案和决定
  • 预算和财务报告
  • 施工计划和规划文件
  • 公告和招标

时间 : 2007年至今的所有文档(~5800 个 PDF,自动更新)

语义人工智能搜索可以找到相关信息,即使确切的搜索词不在文本中。

技术概述(面向开发人员)

该项目包括三个组成部分:

  1. OParl刮板机 — 从理事会信息系统下载PDF文件和元数据
  2. 文档管道 — 完整的PDF处理: Gemini OCR → Jina Embeddings + Sparse Vectors → Qdrant
  3. MCP服务器 — 通过Claude/ChatGPT进行混合搜索的Cloudflare页面功能(语义+关键字)

此外,还有一个 CI管道 (GitHub Actions Cronjob),每小时同步新文档。

建筑

graph TB
    User[Claude / ChatGPT
User]
    MCP[MCP Server
Cloudflare Pages]
    Qdrant[(Qdrant
Vector Store
Self-hosted VPS)]
    Pipeline[Document Pipeline
TypeScript]
    Docs[Documents
PDF Files]
    Scraper[OParl Scraper
TypeScript]
    Jina[Jina AI API]
    Gemini[Gemini 2.5 Flash]
    CI[GitHub Actions
Hourly Cron]

    User -->|MCP Protocol
Connector| MCP
    MCP -->|Query Embeddings
+ Sparse Vector| Jina
    MCP -->|Hybrid Search
Dense + Sparse RRF| Qdrant
    MCP -->|Fulltext| MCP
    CI -->|Hourly| Scraper
    CI -->|Hourly| Pipeline
    Scraper -->|Download PDFs
+ Metadata| Docs
    Docs -->|Read PDFs| Pipeline
    Pipeline -->|OCR| Gemini
    Pipeline -->|Jina v3 Dense
+ BM25 Sparse| Qdrant

    style User fill:#e1f5ff
    style MCP fill:#fff4e1
    style Qdrant fill:#e8f5e9
    style Pipeline fill:#f3e5f5
    style Docs fill:#fce4ec
    style Scraper fill:#e0f2f1
    style Jina fill:#fff9c4
    style Gemini fill:#fff9c4
    style CI fill:#f0f0f0

组件概述

组件技术目的
OParl刮板机TypeScript + Effect从 OParl API 下载 PDF + 元数据
文档管道TypeScript,异步/等待PDF→ Gemini OCR→ Jina嵌入+稀疏向量→ Qdrant
MCP服务器Cloudflare Pages Functions混合搜索(密集+稀缺 RRF),全文检索
矢量数据库Qdrant(自托管)命名向量:密集(Jina 1024D)+稀疏(BM25-TF)
光学字符识别Gemini 2.5 FlashPDF→ 文本(seitenweise)
嵌入 女性AI v3(1024D)+局部BM25-TF→密集+稀疏矢量
全文Cloudflare 静态资产全文 .txtMCP服务器上的文件。

Warum混合搜索?

搜索结合了两种方法 互易秩融合(RRF):

  • 密集向量 (Jina v3, 1024D):语义搜索 — 理解含义,在“室内游泳池”中找到“游泳池”
  • 稀疏向量 (BM25-TF,本地计算):关键字搜索 — 查找确切名称(“Müller”)、编号(“DS 101/2024”)、街道名称(“Escherder Straße”)

稀疏向量werden 本地 从文本中计算(FNV-1a哈希,德语停词,不需要API)。同样的令牌在Pipeline和MCP服务器中运行。

AI 模型决策

OCR——双子座2.5闪光灯 与GPT-4o和GPT-4o-mini相比:

  • 双子座最便宜的选项(~$0.0001/页),无幻觉,也可以正确处理旋转的PDF
  • GPT-4o翻译而不是转录 - 用自己的话重写内容并伪造其含义
  • GPT-4o-mini拒绝旋转的PDF,跳过发件人块,几乎和GPT-4o一样昂贵

嵌入-Jina v3(1024D)多语种模式,具有良好的德语支持。特定任务LoRA适配器(retrieval.passage 为了索引, retrieval.query 寻找)。

存储库结构

nordstemmen-ai/
├── .github/workflows/
│   ├── data-sync.yml      # Stündlicher CI-Cronjob für Datenaktualisierung
│   └── claude.yml         # Claude Code Action
├── documents/              # Heruntergeladene PDFs und Metadaten (Git LFS)
│   ├── papers/            # Drucksachen (~1578 Verzeichnisse)
│   └── meetings/          # Sitzungen (~1087 Verzeichnisse)
├── scraper/               # OParl Scraper (TypeScript + Effect)
│   ├── src/
│   │   ├── index.ts       # CLI Entry Point
│   │   ├── scraper.ts     # OParl Scraper Logic
│   │   ├── client.ts      # HTTP Client
│   │   └── schema.ts      # OParl Type Definitions
│   └── package.json
├── pipeline/              # Document Pipeline (TypeScript)
│   ├── src/
│   │   ├── index.ts       # CLI Entry Point
│   │   ├── pipeline.ts    # Orchestrator
│   │   ├── ocr.ts         # Gemini OCR
│   │   ├── jina.ts        # Jina Embeddings (mit Semaphore)
│   │   ├── sparse.ts      # BM25-TF Sparse Vectors (lokal)
│   │   ├── qdrant.ts      # Qdrant Upload (Named Vectors: dense + sparse)
│   │   ├── cache.ts       # Cache + .completed Tracking
│   │   ├── rebuild-qdrant.ts  # Qdrant aus Cache neu aufbauen
│   │   └── migrate-sparse.ts  # Einmalige Migration (danach löschen)
│   └── package.json
├── mcp-server/            # MCP Server (Cloudflare Pages)
│   ├── functions/
│   │   └── mcp.js         # MCP Protocol Handler + 4 Tools
│   └── package.json
├── docs/
│   └── github-secrets.md  # CI Secret-Dokumentation
├── .env.example
└── README.md

设置

条件

  • Node.js 22+ (所有组件)
  • Qdrant Instanz (自主或云端)
  • Google API密钥 (Gemini OCR)
  • Jina AI API密钥 (对于Embeddings,https://jina.ai)
  • 克劳德账户 (用于 MCP 集成的 Web 或桌面应用程序)

1.知识库klonen

git clone https://github.com/levino/nordstemmen-ai.git
cd nordstemmen-ai
npm install

# PDFs herunterladen (Git LFS) — optional, nur wenn lokal verarbeitet werden soll
git lfs pull

重要 : PDF文档通过Git LFS进行管理。存储库使用自己的 LFS 服务器(不是 GitHub LFS)。克隆后,必须 git lfs pull 下载实际的文件。

2. 设置环境变量

cp .env.example .env

编辑 .env 请输入您的凭据:

# Qdrant Configuration
QDRANT_URL=https://qdrant.levinkeller.de
QDRANT_API_KEY=your-qdrant-api-key
QDRANT_PORT=443
QDRANT_COLLECTION=nordstemmen

# Pipeline: Gemini OCR
GOOGLE_API_KEY=your-google-api-key

# Pipeline + MCP Server: Jina Embeddings
JINA_API_KEY=your-jina-api-key

我在哪里可以得到钥匙?

  • Qdrant: https://cloud.qdrant.io或者自己主办
  • Google API密钥: https://console.cloud.google.com(生成语言API aktiveren)
  • 名称 AI: https://jina.ai

3.OParl刮板

cd scraper
npm run scrape

下载新的/修改过的 PDF 文档和 OParl 元数据。

4.文件管道

# Alle unverarbeiteten Dokumente verarbeiten
npm run pipeline

# Nur 10 Dokumente (zum Testen)
npm run pipeline -- --limit 10

# Nur auflisten, nichts tun
npm run pipeline -- --dry-run

专业PDF:Gemini OCR→ Jina嵌入件→ Qdrant上传。死 .completed只有当所有步骤都成功时才会写入文件。如果取消,下次运行时只会处理丢失的文件。

5.MCP服务器部署(Cloudflare页面)

MCP服务器是一个Cloudflare Pages功能,有四个工具:

  • search_documents --混合Suche(密集型+稀疏型RRF)
  • get_paper_by_reference — 使用 DS 号查询打印件
  • search_papers 结构化过滤器搜索
  • get_document_text — 使用 SHA256 哈希检索全文

部署: 推送时自动通过 Cloudflare Pages main.

环境变量 (Cloudflare仪表板):

QDRANT_URL, QDRANT_API_KEY, QDRANT_PORT, QDRANT_COLLECTION, JINA_API_KEY

本地测试 :

cd mcp-server
npm run dev    # Dev Server starten
npm test       # Tests ausführen

自动数据更新(CI)

数据将 每小时自动 通过 GitHub Actions 更新:

  1. 爬虫 从OParl API加载新文档
  2. 管道 处理新的PDF文件(Gemini OCR → Jina Embeddings → Qdrant)
  3. 提交 保存新文件(用于 PDF/嵌入的 LFS)

手动触发 : GitHub操作>数据同步>运行工作流

必要的秘密: 查看

MCP工具

search_documents

混合搜索(语义+关键字)所有文档。通过相互排名融合 (RRF) 结合密度向量 (Jina v3) 和稀疏向量 (BM25-TF)。即使没有准确的关键字,也可靠地查找相关结果,并提供准确的名称/数字。

{"query": "Schwimmbad Kosten", "limit": 5}

get_paper_by_reference

按号码打印。支持格式:“DS 101/2012”,“101/2012”,“101-2012”。

{"reference": "101/2012"}

search_papers

结构化的打印过滤器搜索(标题,类型,日期,编号模式)。

{"name_contains": "Haushalt", "date_from": "2024-01-01"}

get_document_text

通过SHA256哈希检索文档的全文。可选单页。

{"file_hash": "abc123...", "page": 3}

Kosten&性能

Gemini OCR(管道)

  • ~$0.0001 每页 (~$2.50每25000页)
  • 初始处理总额(~5800 个 PDF):~$3-5

Jina AI API(管道+MCP)

  • 免费等级:1M代币/Monat
  • 管道~$0.02 / 100万代币(初始处理~5-10万代币)
  • MCP查询每个查询 ~50 个令牌 → ~20000 个查询免费/月

Qdrant

  • VPS上自托管
  • ~6000个1024D矢量文档

Cloudflare页面

  • 免费等级100000 个请求/天 → 有效免费

数据保护和透明度

  • 无用户跟踪MCP 服务器不保存查询
  • 公共数据: 只有来自理事会信息系统的已公开文件
  • 开源MIT许可证,GitHub上的完整代码
  • 独立项目没有官方社区申请

状态

该项目是高效和可行的!

  • OParl刮刀(TypeScript+效果)
  • 文档管道(TypeScript):Gemini OCR→ Jina嵌入+稀疏向量→ Qdrant
  • MCP Server 现场https://nordstemmen-mcp.levinkeller.de/mcp
  • 4 MCP工具:语义搜索,DS查找,过滤器搜索,全文检索
  • ~5800个PDF已被索引(2007年至今)
  • 每小时自动数据更新(GitHub Actions CI)
  • 全文包装为 Cloudflare 静态资产

支持与贡献

问题: https://github.com/levino/nordstemmen-ai/issues

Pull Requests 欢迎!

许可证

麻省理工学院执照 许可证

______________________________________________________________________

注释: 这是一个独立的透明度工具,不是Nordstemmen社区的官方应用程序。

开发于: 克劳德代码

目录标签

目录标签

搜索TypeScriptClaude语义搜索本地部署市政文档AI搜索公开数据文档管理

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP