Token导航 LogoToken导航TokenDH.com
Bundestag MCP logo
搜索检索stdio官方级别未说明来源级核验

Bundestag MCP

MCP Server

一个基于Model Context Protocol (MCP)的服务器,提供对德国联邦议院议会文档系统(DIP API)的访问,支持文档搜索、语义搜索和自然语言处理分析。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
JavaScriptClaude搜索ClaudeCursor

安装说明

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

作者 / 组织

Movm

提供方

Movm

最后核验

2026/5/17 20:21

运行时

Docker

快速接入

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

命令预览

docker run -p 3000:3000 \

详细介绍

联邦议院MCP服务器

![CI](https://github.com/Movm/bundestag-mcp/actions/workflows/ci.yml) ![License: MIT](https://opensource.org/licenses/MIT) ](https://nodejs.org)

生产准备就绪 模型上下文协议(MCP) 提供访问德国联邦议院议会文件系统(DIP API)的服务器。

公共实例

公共实例可在以下网址获得:

https://bundestagapi.moritz-waechter.de/mcp

您可以直接在MCP客户端配置中使用它,而无需运行自己的服务器。

目录

特性

核心能力

  • 搜索印刷品 -查找法案、动议、质询和其他印刷文件
  • 搜索Plenarprotokolle -查找全体会议记录
  • 搜索Vorgaenge -通过议会跟踪立法程序
  • 搜索人员 -查找议员及其信息
  • 搜索Aktivitaeten -查找议会活动(演讲、提问)
  • 全文检索 -获取完整的文档文本
  • 语义搜索 -使用Qdrant+Mistral嵌入的人工智能搜索
  • 语音搜索 -使用混合向量/关键字搜索在辩论中查找具体陈述
  • 文档部分搜索 -在文档部分(文章、问题等)内搜索
  • NLP分析 -提取演讲内容,分析语调,分类话题,比较各方

生产准备就绪

  • 优雅地关闭 -SIGTERM/SIGINT上的干净会话终止
  • 使用回退重试 -具有指数回退和抖动的自动重试
  • 速率限制 -令牌桶速率限制器保护上游API
  • 断路器 -快速故障模式,防止级联故障
  • 响应缓存 -三层缓存(API、实体、元数据)

可观测性

  • 普罗米修斯指标 - /metrics/prometheus 监控端点
  • 深度健康检查 - /health/deep 验证DIP API连接
  • 结构化日志记录 -带类别和级别的JSON日志

MCP协议

  • 33工具 -搜索、检索、语义搜索、语音搜索和NLP分析
  • 8提示 -常见研究任务的指导工作流程
  • 12资源 -静态和动态资源模板
  • 双模式 -支持有状态(Claude、Cursor)和无状态(ChatGPT)客户端

快速开始

先决条件

  • Node.js 18+
  • DIP API密钥(提供公共测试密钥)

安装

git clone https://github.com/Movm/bundestag-mcp.git
cd bundestag-mcp
npm install

配置

创建 .env 文件(或副本 .env.example):

# Public test key valid until 05/2026
DIP_API_KEY=OSOegLs.PR2lwJ1dwCeje9vTj7FPOt3hvpYKtwKkhw

# Optional
PORT=3000
PUBLIC_URL=
LOG_LEVEL=INFO
注: 对于生产,请从以下位置请求您自己的API密钥: parlamentsdokumentation@bundestag.de

# Production
npm start

# Development (auto-reload)
npm run dev

服务器将在以下时间启动 http://localhost:3000.

MCP工具

文档工具

工具说明
bundestag_search_drucksachenSearch printed documents (法案、申请、请求)
bundestag_get_drucksache按ID获取特定文档(可选全文)
bundestag_search_drucksachen_text文档内容中的全文搜索

协议工具

工具说明
bundestag_search_plenarprotokolle搜索全体会议记录
bundestag_get_plenarprotokoll通过ID获取特定协议(可选全文)
bundestag_search_plenarprotokolle_text成绩单内容中的全文搜索

程序工具

工具说明
bundestag_search_vorgaenge搜索议会程序
bundestag_get_vorgang按ID获取具体程序
bundestag_search_vorgangspositionen搜索进行位置/步骤(跟踪账单进度)

人员和活动工具

工具说明
bundestag_search_personen搜索议员和其他人
bundestag_get_person按ID获取人员详细信息
bundestag_search_aktivitaeten搜索议会活动
bundestag_get_aktivitaet按ID获取特定活动

语义搜索工具

工具说明
bundestag_semantic_search基于人工智能的所有文档语义搜索
bundestag_semantic_search_status显示语义搜索系统状态
bundestag_trigger_indexing手动触发文档索引

语音搜索工具

工具说明
bundestag_search_speeches通过议会演讲进行语义/混合搜索
bundestag_trigger_protocol_indexing触发器协议分块和索引
bundestag_reindex_protocols强制对所有协议进行全面重新索引
bundestag_protocol_search_status显示协议搜索系统状态

文档部分搜索工具

工具说明
bundestag_search_document_sections通过文档部分进行语义搜索
bundestag_trigger_document_indexing触发文档块索引
bundestag_document_search_status显示文档块搜索状态

NLP分析工具

这些工具使用Python FastAPI服务和spaCy的德语模型进行自然语言处理。

工具说明
bundestag_extract_speeches将协议文本解析为包含演讲者、政党和类型的个人演讲
bundestag_analyze_text分析德语文本中的词频(名词、形容词、动词)
bundestag_analyze_tone沟通风格分析(攻击性、协作性、解决方案重点)
bundestag_classify_topics按政治主题(移民、气候、经济等)对文本进行分类
bundestag_analysis_health检查NLP分析服务是否可用
bundestag_speaker_profile根据演讲者的演讲为其生成全面的个人资料
bundestag_compare_parties根据议会演讲比较政党

实用工具

工具说明
bundestag_estimate_size在获取以管理上下文窗口之前检查文档/协议大小
bundestag_cache_stats显示缓存统计信息
get_client_config生成MCP客户端配置

通用参数

参数说明
query标题全文搜索
wahlperiode选举期(例如,2021-2025年为20年)
datum_start / datum_end日期范围筛选器(YYYY-MM-DD)
limit每页结果数(1-100,默认值10)
cursor来自上一个响应的分页光标
includeFullText获取完整文档文本
useCache是否使用缓存结果(默认值:true)

MCP提示

议会共同研究任务的指导工作流程:

提示描述
search-legislation使用语义搜索和回退策略引导搜索法案和立法
track-proceeding使用立法术语表和时间表跟踪议会程序
mp-activity-report综合MP报告,通过修辞分析 bundestag_speaker_profile
analyze-debate通过党派比较分析全会辩论 bundestag_compare_parties
compare-factions使用跨党派分析比较某一主题的党派修辞
find-statements从具有后备策略的政客那里找到具体的引语/声明
topic-trends分析主题讨论如何随时间演变(跨越Wahlperioden/年)
speaker-deep-dive政治家的全面修辞与政策分析

MCP资源

静态资源

URI描述
bundestag://system-promptAI使用说明,包括工具选择指南和上下文管理
bundestag://info服务器功能和工具列表
bundestag://wahlperioden 选举期(Electoral Period)
bundestag://drucksachetypen文件类型(法案、申请等)
bundestag://factions有正式名称、别名、肤色和职位的议会派系

资源模板

URI模式描述
bundestag://drucksache/{id}按ID获取文档
bundestag://drucksache/{id}/text获取文档全文
bundestag://plenarprotokoll/{id}按ID获取协议
bundestag://plenarprotokoll/{id}/text获取协议全文
bundestag://vorgang/{id}按ID获取进程
bundestag://person/{id}按ID取人
bundestag://aktivitaet/{id}按ID获取活动

客户端配置

提示: 使用公共实例 https://bundestagapi.moritz-waechter.de/mcp 或者自己跑步 http://localhost:3000/mcp

克劳德桌面版

添加 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "bundestag": {
      "url": "https://bundestagapi.moritz-waechter.de/mcp"
    }
  }
}

光标

添加 .cursor/mcp.json:

{
  "mcpServers": {
    "bundestag": {
      "url": "https://bundestagapi.moritz-waechter.de/mcp"
    }
  }
}

VS代码(GitHub副本)

添加到设置:

{
  "mcp.servers": {
    "bundestag": {
      "type": "http",
      "url": "https://bundestagapi.moritz-waechter.de/mcp"
    }
  }
}

ChatGPT

服务器作为连接器与ChatGPT完全兼容。使用公共实例或部署自己的实例。

  1. 启用开发人员模式 在ChatGPT中:

- 首选 设置→ 应用程序和连接器→ 高级设置 - 启用开发人员模式

  1. 添加连接器:

- 首选 设置→ 连接器→ 创建 - 使用URL: https://bundestagapi.moritz-waechter.de/mcp - 将其命名为“联邦议院”并提供描述

  1. 在聊天中使用:

- 点击 + 新聊天中的按钮 - 从中选择连接器 更多 菜单 - 询问德国议会文件!

API终点

端点描述
POST /mcpMCP协议端点
GET /mcp会话的SSE流
DELETE /mcp结束会话
GET /health基本健康检查
GET /health/deep深度健康检查(验证DIP API)
GET /metricsJSON统计
GET /metrics/prometheusPrometheus格式度量
GET /.well-known/mcp.json自动发现
GET /config/:client客户端特定配置
GET /info服务器信息

码头工人

# Build
docker build -t bundestag-mcp .

# Run
docker run -p 3000:3000 \
  -e DIP_API_KEY=your-api-key \
  bundestag-mcp

Docker Compose

version: '3.8'
services:
  bundestag-mcp:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DIP_API_KEY=${DIP_API_KEY}
      - LOG_LEVEL=INFO
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
      interval: 30s
      timeout: 10s
      retries: 3

发展

运行测试

# Run tests
npm test

# Run tests in watch mode
npm run test:watch

# Run tests with coverage
npm run test:coverage

项目结构

src/
├── index.js              # Express server, MCP setup, endpoints
├── config.js             # Environment configuration
├── api/
│   └── bundestag.js      # DIP API client with retry logic
├── jobs/
│   └── indexer.js        # Background document/protocol indexer
├── services/
│   ├── analysisService.js    # HTTP client for Python NLP service
│   ├── embeddingService.js   # Mistral embeddings
│   ├── qdrantService.js      # Vector database operations
│   ├── protokollParser.js    # Protocol speech extraction
│   └── drucksacheParser.js   # Document section parsing
├── tools/
│   ├── search.js         # 15 search/entity tools (incl. estimate_size)
│   ├── analysis.js       # 7 NLP analysis tools
│   ├── semanticSearch.js # 10 semantic search tools
│   └── clientConfig.js   # Client configuration tool
├── prompts/
│   └── index.js          # MCP Prompts
├── resources/
│   ├── info.js           # Static resources
│   └── templates.js      # Resource templates
└── utils/
    ├── cache.js          # Three-layer caching
    ├── logger.js         # Structured logging
    ├── retry.js          # Exponential backoff
    ├── rateLimiter.js    # Token bucket rate limiter
    ├── circuitBreaker.js # Circuit breaker pattern
    ├── metrics.js        # Prometheus metrics
    └── textNormalization.js # German text handling

建筑

弹性模式

Request → Rate Limiter → Circuit Breaker → Retry Logic → DIP API
              ↓               ↓                ↓
         (throttle)      (fast-fail)      (backoff)
  • 速率限制器:代币桶算法防止了DIP API的泛滥
  • 断路器:在连续故障后打开,在停机期间快速故障
  • 重试逻辑:瞬态故障时具有抖动的指数回退

缓存策略

TTL最大条目用例
API响应5分钟500搜索结果
实体15分钟200单个文档
元数据24小时50小时Wahlperioden,文档类型

语义搜索

该服务器支持使用Qdrant向量数据库和Mistral嵌入的人工智能语义搜索。这使得即使在确切的关键字不匹配的情况下,也能找到概念上相关的文档。

运作原理

  1. 文献检索:后台索引器从DIP API获取文档,并使用Mistral AI生成嵌入
  2. 向量存储:嵌入内容存储在Qdrant中,具有丰富的元数据用于过滤
  3. 语义查询:用户查询被嵌入,并使用余弦相似度与文档向量进行匹配

三个搜索集合

收藏描述
bundestag-docsDocument-level search (印刷品、活动、人员)
bundestag-protocol-chunks从Plenarprotokolle进行语音水平搜索
bundestag-document-chunksDrucksachen的部门级搜索(文章、问题等)

特性

  • 多语言:用英语搜索,查找德语文档(例如“可再生能源”→ “能源”)
  • 混合搜索:将向量相似性与关键字增强相结合,以提高精度
  • 丰富的过滤:按文档类型、实体类型、Wahlperiode、Sachgebiet、倡议、派系、日期范围过滤
  • 语音搜索:按演讲者、政党、演讲类型或政府官员查找具体陈述
  • 文档部分搜索:在文档中查找特定段落、问题或文章
  • 增量索引:用途 f.aktualisiert.start 用于初始索引后的高效更新

配置

添加到您的 .env 文件:

# Semantic Search (Qdrant + Mistral)
QDRANT_ENABLED=true
QDRANT_URL=http://qdrant:6333
QDRANT_API_KEY=your-qdrant-api-key      # Optional: API key for Qdrant authentication
MISTRAL_API_KEY=your-mistral-api-key

# Background Indexer
INDEXER_ENABLED=true
INDEXER_INTERVAL_MINUTES=15
INDEXER_WAHLPERIODEN=19,20
小贴士:使用生成安全的API密钥 openssl rand -hex 32

使用Qdrant编写Docker

services:
  bundestag-mcp:
    build: .
    environment:
      - QDRANT_ENABLED=true
      - QDRANT_URL=http://qdrant:6333
      - QDRANT_API_KEY=${QDRANT_API_KEY}
      - MISTRAL_API_KEY=${MISTRAL_API_KEY}
      - INDEXER_ENABLED=true
    depends_on:
      - qdrant

  qdrant:
    image: qdrant/qdrant:latest
    ports:
      - "6333:6333"
    volumes:
      - qdrant_data:/qdrant/storage
    environment:
      - QDRANT__SERVICE__API_KEY=${QDRANT_API_KEY}

volumes:
  qdrant_data:

语义搜索参数

参数说明
query自然语言搜索查询
limit最大结果(1-50)
docTypes筛选器: drucksache, vorgang, aktivitaet, person
entityTypes筛选器: Gesetzentwurf, Kleine Anfrage, Rede等等。
wahlperiode选举期(19、20)
sachgebiet主题领域
initiative发起派系(基民盟/基社盟、社民党等)
fraktion议会小组
dateFrom / dateTo日期范围(YYYY-MM-DD)
scoreThreshold最小相似度(0-1,默认0.3)

语音搜索参数

参数说明
query自然语言搜索查询
limit最大结果(1-50)
speaker按说话者姓名筛选(例如“Friedrich Merz”)
speakerParty按党派筛选(例如“CDU/CSU”、“SPD”)
speakerState按州筛选Bundesrat(例如“拜仁”)
top按议程项目筛选(例如,“TOP 1”)
wahlperiode选举期
herausgeber出版商: BT (联邦议院)或 BR (联邦参议院)
speechType类型: rede, befragung, fragestunde_antwort, kurzbeitrag
isGovernment筛选政府官员(部长、国务秘书)
category类别: rede (正式发言)或 wortbeitrag (捐款)
searchModesemantic (纯矢量)或 hybrid (矢量+关键字增强)
keywordBoost混合模式下关键字匹配的增强因子(0-2,默认值0.5)
requiredKeywords必须出现在文本中的关键字
excludeKeywords不得出现在文本中的关键字

文档节搜索参数

参数说明
query自然语言搜索查询
limit最大结果(1-50)
drucksachetyp筛选器: Gesetzentwurf, Kleine Anfrage, Antrag等等。
chunkType截面类型: problem, loesung, artikel, question等等。
wahlperiode选举期
urheber作者/发起人(例如“联邦执政党”、“基民盟/基社盟”)
dateFrom / dateTo日期范围(YYYY-MM-DD)
scoreThreshold最小相似度(0-1,默认0.3)

NLP分析服务

该服务器包括可选的NLP分析功能,由使用spaCy德语模型的Python FastAPI服务提供支持。

特性

  • 语音提取:将Plenarprotokolle解析为带有演讲者、政党和类型的个人演讲
  • 分析:提取名词、形容词和动词,并用频率计数进行词形变化
  • 音调分析:12个沟通风格指标,包括攻击性、协作性和解决方案重点
  • 主题分类:检测13个政策领域(移民、气候、经济等)的重点
  • 讲者简介:生成包含统计数据、词汇和沟通风格的综合档案
  • 政党比较:根据演讲的语调排名和主题焦点对各方进行比较

音调指标

度量描述
affirmative阳性形容词与批判性形容词之比(0-100)
aggression攻击性语言强度(0-100)
labeling“其他”语言用法(0-100)
solution_focus解决方案与问题导向动词(0-100)
collaboration协作与对抗(0-100)
demand_intensity要求性语言 (0-100)
authority义务与可能性模型(0-100)
future_orientation向前看与向后看(0-100)

主题类别

移民, 气候, 经济, 社会政策, 安全, 健康, 欧洲, 数字, 教育, 金融,Justice(司法)、Labor(工作)、Mobility(流动性)

配置

分析服务作为单独的Python容器运行。添加到您的 .env:

ANALYSIS_SERVICE_URL=http://analysis:8000

Docker编写与分析

services:
  bundestag-mcp:
    build: .
    environment:
      - ANALYSIS_SERVICE_URL=http://analysis:8000
    depends_on:
      - analysis

  analysis:
    image: ghcr.io/movm/bundestag-analysis:latest
    expose:
      - "8000"
备注:spaCy型号的分析服务需要~1GB RAM,需要~30秒才能启动。

DIP API

此服务器使用德国联邦议院官方DIP API:

  • 文档: https://dip.bundestag.de/
  • API文件: https://dip.bundestag.api.bund.dev/
  • GitHub: https://github.com/bundesAPI/dip-bundestag-api

贡献

欢迎投稿!请随时提交拉取请求。

  1. 克隆该仓库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 运行测试(npm test)
  4. 提交您的更改(git commit -m 'feat: Add amazing feature')
  5. 推到分支(git push origin feature/amazing-feature)
  6. 打开拉取请求

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

目录标签

目录标签

JavaScriptClaude搜索议会文档本地部署语义搜索自然语言处理立法分析政治研究

支持客户端

ClaudeCursor

接入字段

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

stdio

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

api-key

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdioapi-key部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP