ClaudeCodeMod

All shelves / MCP servers

European Parliament Mcp Server

Hack23/European-Parliament-MCP-Server · 28 stars · TypeScript · Apache-2.0

MCP server European Parliament MCP Server - EU political intelligence for AI agents

Install

The repo has no one-line install. Follow its README.

Open the repo

Files

README.md

Hack23 Logo

🏛️ European Parliament MCP Server

Model Context Protocol Server for European Parliament Open Data
🇪🇺 EU parliamentary intelligence for AI agents · 🕵️ 15 OSINT analytics tools · 🏛️ Full EP API v2 coverage · 🛡️ ISMS-aligned · 🔒 GDPR-by-design · 📦 SLSA Level 3

The canonical TypeScript MCP bridge between the European Parliament Open Data Portal and any MCP-aware AI client — Claude Desktop, VS Code, Cursor, GitHub Copilot. Powers the EU Parliament Monitor AI newsroom and is a sister project to Riksdagsmonitor in the Hack23 political-intelligence portfolio.

European Parliament MCP Server npm version

Model Context Protocol Server for European Parliament Open Data — providing AI assistants with structured access to MEPs, plenary sessions, committees, legislative documents, and parliamentary questions through a secure, type-safe TypeScript implementation.

MEP influence scoring (5-dimension model), Coalition cohesion & stress analysis, Party defection & anomaly detection, Cross-group comparative analysis, MEP/committee legislative scoring, Pipeline status & bottleneck detection, Committee workload & engagement analysis, MEP attendance patterns & trends, Country delegation voting & composition, Parliament-wide political landscape

📂 Repository • ✨ Features • 📚 Documentation • 📦 npm

ISMS OpenSSF Best Practices Ask DeepWiki

📊 Quality Metrics & Documentation

npm version npm downloads MCP Tools MCP Resources MCP Prompts

Test Coverage Unit Test Results E2E Test Results API Documentation Documentation Portal

📋 Overview

The European Parliament MCP Server implements the Model Context Protocol (MCP) to provide AI assistants, IDEs, and other MCP clients with structured access to European Parliament open datasets. Access information about MEPs, plenary sessions, committees, legislative documents, and parliamentary questions through a secure, type-safe TypeScript/Node.js implementation.

🎯 Key Features

  • 🔌 Full MCP Implementation: 63 tools (9 core + 3 advanced + 15 OSINT + 8 Phase 4 + 15 Phase 5 + 13 feed), 9 Resources, and 7 Prompts
  • 🏛️ Complete EP API v2 Coverage: All European Parliament Open Data API endpoints covered
  • 🕵️ OSINT Intelligence: MEP influence scoring, coalition analysis, anomaly detection
  • 🔒 Security First: ISMS-compliant, GDPR-ready, SLSA Level 3 provenance
  • 🚀 High Performance: <200ms API responses, intelligent caching, rate limiting
  • 📊 Type Safety: TypeScript strict mode + Zod runtime validation
  • 🧪 Well-Tested: 80%+ code coverage, 1130+ unit tests, 71 E2E test cases
  • 📚 Complete Documentation: Architecture, TypeDoc API (HTML + Markdown), security guidelines

🔧 Current Stack

  • Runtime: Node.js 26.x
  • Primary compiler: TypeScript 7 RC via the typescript-7 alias (node_modules/typescript-7/bin/tsc)
  • Compatibility layer: @typescript/typescript6 remains available so existing 6.x-based tooling can continue using tsc6 and the TypeScript 6 API
  • Core platform: @modelcontextprotocol/sdk 1.29.0, zod 4.4.3, vitest 4.1.10

🌍 Hack23 Political Intelligence Ecosystem

This MCP server is the EU data backbone of Hack23's mission to disrupt parliamentary journalism with AI-generated political intelligence and real-time accountability analysis — increasing democratic transparency through structured open-source intelligence (OSINT) tradecraft applied to public legislative data.

🎯 Vision: AI-Powered Democratic Transparency

Hack23 AB builds open-source intelligence platforms that put rigorous, evidence-based political analysis in the hands of every citizen, journalist, researcher and policymaker. By combining MCP servers, agentic AI newsrooms, and open parliamentary data, we produce automated intelligence products — coalition analysis, voting-pattern decoding, MEP/MP influence scoring, legislative-pipeline forecasting — that previously required well-funded lobbying organisations or in-house policy units to generate.

"Democratising access to political intelligence — what used to require a team of analysts can now be done by any citizen with an AI assistant."

The portfolio is non-partisan, fully open-source (Apache-2.0), operated under the Hack23 ISMS with full ISO 27001:2022 / NIST CSF 2.0 / CIS Controls v8.1 alignment, GDPR-by-design, and architecturally engineered so it cannot be weaponised for partisan influence: equal treatment of all political groups, public-data only, no user accounts, no ads, no tracking.

🧭 The Ecosystem at a Glance

%%{init: {"theme":"base","themeVariables":{"primaryColor":"#6366f1","primaryTextColor":"#fff","primaryBorderColor":"#4f46e5","lineColor":"#94a3b8","secondaryColor":"#003399","tertiaryColor":"#00338d","background":"#0f172a"}}}%%
graph LR
    subgraph SOURCES["📡 Primary Open-Data Sources"]
        EP["🇪🇺 European Parliament<br/>Open Data Portal v2<br/><i>data.europarl.europa.eu</i>"]
        RD["🇸🇪 Riksdagen Open Data<br/><i>data.riksdagen.se</i>"]
        REG["🇸🇪 Regeringskansliet<br/><i>regeringen.se</i>"]
        IMF["💰 IMF / World Bank<br/><i>economic context</i>"]
    end

    subgraph MCP["🔌 MCP Servers"]
        EPMCP["<b>European-Parliament-<br/>MCP-Server</b><br/>63 tools · 9 resources<br/>7 prompts · TS strict<br/><i>(this repository)</i>"]
        RRMCP["riksdag-regering MCP<br/>32+ tools"]
    end

    subgraph PRODUCTS["📰 AI-Driven Public Platforms"]
        EUPM["🏛️ <b>EU Parliament Monitor</b><br/>euparliamentmonitor.com<br/>8 unified gh-aw workflows<br/>51-artifact analysis<br/>14 languages"]
        RM["🗳️ <b>Riksdagsmonitor</b><br/>riksdagsmonitor.com<br/>11 agentic workflows<br/>91 skills · 14 languages<br/>Tidö coalition tracker"]
        CIA["🕵️ <b>Citizen Intelligence<br/>Agency (CIA)</b><br/>Java/Spring backend<br/>15 subsystems · 1971–2024<br/>3.5M votes · 109K docs"]
    end

    subgraph CITIZENS["👥 Citizens · Journalists · Researchers · NGOs"]
        AUDIENCE["AI assistants · Dashboards · 14-language news · Intelligence briefings"]
    end

    EP --> EPMCP
    RD --> RRMCP
    REG --> RRMCP
    EPMCP --> EUPM
    RRMCP --> RM
    RM <-->|"15 CIA subsystems<br/>nightly sync"| CIA
    IMF -.->|"economic context"| EUPM
    IMF -.->|"economic context"| RM
    EUPM --> AUDIENCE
    RM --> AUDIENCE
    CIA --> AUDIENCE
    EPMCP -.->|"AI assistants<br/>Claude · Cursor · VS Code"| AUDIENCE

    style EPMCP fill:#6366f1,stroke:#4f46e5,color:#fff,stroke-width:3px
    style EP fill:#003399,stroke:#ffcc00,color:#fff
    style RD fill:#00338d,stroke:#fecc00,color:#fff
    style REG fill:#00338d,stroke:#fecc00,color:#fff
    style EUPM fill:#003399,stroke:#ffcc00,color:#fff
    style RM fill:#00338d,stroke:#fecc00,color:#fff
    style CIA fill:#1b5e20,stroke:#43a047,color:#fff
    style AUDIENCE fill:#7b1fa2,stroke:#9c27b0,color:#fff
Loading

This MCP server's role: the canonical, type-safe TypeScript bridge between the European Parliament Open Data Portal and any MCP-aware AI client (Claude Desktop, VS Code, Cursor, GitHub Copilot) — and the upstream data layer that powers the EU Parliament Monitor newsroom. Every tool is Zod-validated, audit-logged, GDPR-aware, and SLSA Level 3 attested.

🗂️ Portfolio Comparison Matrix

Project Scope Audience Links
🇪🇺 European-Parliament-MCP-Server
(this repo)
EU Parliament data layer for AI agents
62 MCP tools · 9 resources · 7 prompts · OSINT analytics
Source: data.europarl.europa.eu
Developers · AI assistants · Journalists · Researchers 📦 npm
💻 GitHub
🏛️ EU Parliament Monitor Daily AI-generated EP intelligence in 14 languages
8 unified gh-aw workflows · 51-artifact analysis pipeline
Source: this MCP server (60+ tools) + IMF + World Bank
Citizens · Journalists · NGOs across all 27 EU member states 🌐 euparliamentmonitor.com
🧠 Intelligence Hub
📚 API Reference
💻 GitHub
🗳️ Riksdagsmonitor Daily AI-generated Swedish parliamentary intelligence
11 agentic workflows · 91 skills · 50+ years of evidence (1971–2024) · Tidö coalition fragility tracker
Source: riksdag-regering MCP (32+ tools) + SCB + IMF + World Bank + CIA exports
Swedish citizens · Nordic journalists · Election researchers 🌐 riksdagsmonitor.com
🧠 Intelligence
📰 AI Newsroom
📊 Dashboard
💻 GitHub
🕵️ Citizen Intelligence Agency
(CIA)
15-subsystem Java/Spring political-analytics backend
349 current MPs · 2,494 historical politicians · 3.5M+ votes · 109k+ documents · 45-rule risk engine
Source: data.riksdagen.se direct + Valmyndigheten + ESV
Hack23 platform consumers (Riksdagsmonitor) · OSINT analysts 🌐 hack23.github.io/cia
💻 GitHub

🇪🇺 EU Parliament Monitor — euparliamentmonitor.com

European Parliament Political Intelligence Platform — 🧠 Political intelligence · 🔍 Radical transparency · 🗳️ Democratic accountability · 🤖 AI-generated news in 14 languages

EU Parliament Monitor Website Status Release

EU Parliament Monitor turns the EP's own open data into auditable political intelligence — and publishes it as readable news in 14 languages, every day, fully sourced. An AI-driven newsroom that monitors plenary sessions, committee work, motions, propositions, urgency files and the forward calendar; produces Economist-style analytical articles backed by 51 structured analysis artifacts per run; and exposes every methodology, template and analysis tree publicly so any reader, journalist or NGO can verify the analysis behind the prose.

Powered by this repository — consumes the European-Parliament-MCP-Server (60+ EP data tools) plus IMF + World Bank for economic context, with built-in fallback to the EP Open Data Portal /api/v2/decision endpoint when MCP returns empty voting payloads.

  • 📰 9 unified gh-aw (GitHub Agentic Workflows) pipelines — 8 article types (breaking, week-ahead, month-ahead, week-in-review, month-in-review, committee-reports, motions, propositions) running Stages A → E in a single 45-minute session, plus news-translate for 14-language flush translation
  • 📚 17 published methodologies + 52 analysis templates + 19 tradecraft references — ICD-203 Key Judgments · Admiralty source grades · WEP probability bands · ACH · 5-framework political-threat model · 6-dimension threat landscape · electoral domain methodology (361-seat threshold) · IMF/World Bank indicator mappings
  • 🌍 14 languages — EN · SV · DA · NO · FI · DE · FR · ES · NL · AR (RTL) · HE (RTL) · JA · KO · ZH — every page rendered with WCAG 2.1 AA accessibility, JSON-LD NewsArticle.isBasedOn provenance linking back to source artifacts, and hreflang alternates on every page
  • 🛡️ Deterministic aggregator — agents author analysis Markdown only; TypeScript renders HTML deterministically (no AI-authored HTML, no template-prose leakage, fully reproducible)
  • 📦 npm package euparliamentmonitor — published with npm provenance and SLSA Level 3 build attestations
🌐 Live News Site · 🧠 Political Intelligence Hub · 🗺️ Site Map (14 languages) · 📔 TypeDoc API · 📓 Coverage · 🎭 E2E Report · 📂 Repository · ✨ Features · 📚 Documentation

Live Site Political Intelligence Hub Site Map OpenSSF Scorecard OpenSSF Best Practices SLSA 3 License ISMS Ask DeepWiki News Generation CodeQL Test and Report E2E Tests Release

🗳️ Riksdagsmonitor — riksdagsmonitor.com

Swedish Political Intelligence Platform — 🕵️ Political intelligence · 🔍 Democratic transparency · 🤖 AI-generated news · 📊 50+ years of evidence

Riksdagsmonitor Website Status npm version

Riksdagsmonitor monitors Sweden's Riksdag (Parliament), the Government (Regeringskansliet) and public agencies (Myndigheter) with structured intelligence techniques — ACH, SWOT, PESTLE, STRIDE, political-risk scoring and OSINT/INTOP tradecraft — applied to 349 current MPs, 2,494 historical politicians (1971–2024), 3.5M+ votes and 109,000+ parliamentary documents.

An autonomous AI newsroom — 11 agentic workflows, Claude Opus, zero human editors — turns this evidence into publication-ready intelligence articles in 14 languages, every day. Front-loads the live Tidö Agreement coalition status (176/349 seats, fragility indicators, CIA risk alerts) and dives into 40 years of election-cycle intelligence (1994–2034), party performance (1990–2026, 8 parties), 15 committee networks, seasonal Z-score anomaly detection, ministry risk and a 45-rule × 349-MP live risk heat map.

  • 📰 11 agentic workflows — committee reports · propositions · motions · interpellations · week-ahead · month-ahead · real-time monitor · evening analysis · weekly review · monthly review · translate (Mon–Fri + weekend cycles, all on UTC schedules)
  • 🧠 91 skills across 12 categories + 24 Copilot agents (14 personas + 9 workflow specialists + shared developer instructions) — full catalog at SKILLS.md / AGENTS.md
  • 📚 11 published methodologies + 23 templates (8 core T1–T8 + 15 extended/Tier-C) — AI-Driven Analysis Guide · OSINT Tradecraft Standards · Political Risk · Political SWOT · Political Threat Framework · Electoral Domain · Synthesis · Strategic Extensions (scenario / wildcard / long-horizon) · Style Guide
  • 📊 5 flagship Chart.js / D3.js dashboards + CIA Intelligence Dashboard — Seasonal Activity (2002–2025 · Z-score anomaly) · 349-MP Politician Dashboard · Pre-Election Monitor · Party Performance (1990–2026) · Anomaly & Early Warning
  • 🌍 14 languages — EN · SV · DA · NO · FI · DE · FR · ES · NL · AR (RTL) · HE (RTL) · JA · KO · ZH — daily refresh at 03:00 CET, WCAG 2.1 AA, CSP-hardened with Subresource Integrity (SRI) on all bundled assets
  • 📦 npm package riksdagsmonitor — Theme System · Chart Factory · Resilient Data Loader · 12 dashboard modules · CIA intelligence modules — published with SLSA build provenance
  • 🛡️ OpenSSF Best Practices Project #12069 · Risk level 🟢 LOW (5.52 / 10.0 — 99.7 % risk reduction) · ISO 27001:2022 · NIST CSF 2.0 · CIS Controls v8.1 · GDPR Art. 9(2)(e/g) for political opinions
🌐 Live Platform · 🕵️ Political Intelligence · 📰 AI Newsroom · 📊 Intelligence Dashboard · 🗺️ Sitemap · 📂 Repository · ✨ Features · 📚 Documentation

OpenSSF Scorecard Quality Checks Dependency Review CodeQL JavaScript Testing Translation Validation Release OpenSSF Best Practices License ISMS ISO 27001 NIST CSF CIS Controls Ask DeepWiki

🕵️ Citizen Intelligence Agency (CIA)

Political transparency platform — Java/Spring data backbone behind Riksdagsmonitor's historical evidence layer

CIA Logo Release

The Citizen Intelligence Agency is the Java/Spring Boot political-analytics backend that supplies 15 CIA subsystems (anomaly · coalition · committee · distribution · election · election-cycle · ministry · parties · party · percentile · politician · pre-election · risk · seasonal · voting) consumed nightly by Riksdagsmonitor. It is the primary historical-evidence layer for Swedish political activity with 50+ years of voting records (1971–2024), 2,494 historical politicians, 349 current MPs, 3.5M+ votes, 109,000+ documents, 8,740 committee documents, and a 45-rule transparency engine tracking 2,308 identified rule violations across 8 Riksdag-represented parties.

📂 Repository · 🌐 GitHub Pages · 📊 JSON Export Specs · ✨ Features · 📚 Documentation

CII Best Practices OpenSSF Scorecard SLSA 3 Verify & Deploy Scorecard supply-chain security Quality Gate Status Security Rating Maintainability Rating Reliability Rating Ask DeepWiki

🌍 Shared Across the Portfolio

Dimension Coverage
🌐 Languages 14 — English · Swedish · Danish · Norwegian · Finnish · German · French · Spanish · Dutch · Arabic (RTL) · Hebrew (RTL) · Japanese · Korean · Chinese
♿ Accessibility WCAG 2.1 AA · keyboard navigable · screen-reader optimised · 4.5:1 contrast · responsive 320 px → 1440 px+
🔒 Compliance ISO 27001:2022 · NIST CSF 2.0 · CIS Controls v8.1 · GDPR · NIS2 · EU CRA
🛡️ Supply chain SHA-pinned GitHub Actions · step-security/harden-runner · Dependabot · CodeQL · Secret Scanning · SLSA Level 3 · SPDX SBOM
📜 License Apache License 2.0 across the entire portfolio
🏢 Operator Hack23 AB (Org.nr 559534-7807) — Swedish cybersecurity & open-source intelligence consultancy
🛡️ ISMS Hack23 ISMS-PUBLIC — fully documented information-security management system

🔗 Hack23 Portfolio Quick Links


Security Architecture Architecture Diagrams Workflows Documentation Performance Guide

🔐 Security & Compliance

OpenSSF Scorecard SLSA 3 SBOM SBOM Quality Build Attestations

ISO 27001 NIST CSF 2.0 CIS Controls GDPR


🚀 Quick Start

Run with npx (No Installation Required)

npx -y european-parliament-mcp-server

Prerequisites

  • Node.js 26.x or higher
  • npm 10.x or higher

Installation

Option 1: Install from npm (Recommended)

# Install the package globally
npm install -g european-parliament-mcp-server

# Or install as a dependency in your project
npm install european-parliament-mcp-server

Option 2: Install from source

# Clone the repository
git clone https://github.com/Hack23/European-Parliament-MCP-Server.git
cd European-Parliament-MCP-Server

# Install dependencies
npm install

# Build the project
npm run build

# Run tests
npm test

Usage with MCP Client

Claude Desktop Configuration (npm install)

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "european-parliament": {
      "command": "npx",
      "args": ["european-parliament-mcp-server"],
      "env": {
        "EP_API_KEY": "your-api-key-if-needed"
      }
    }
  }
}

Claude Desktop Configuration (source install)

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "european-parliament": {
      "command": "node",
      "args": ["/path/to/European-Parliament-MCP-Server/dist/index.js"],
      "env": {
        "EP_API_KEY": "your-api-key-if-needed"
      }
    }
  }
}

VS Code Extension

Configure in .vscode/mcp.json:

{
  "servers": {
    "european-parliament": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "european-parliament-mcp-server"]
    }
  }
}

Cursor IDE Configuration

Add to ~/.cursor/mcp.json (or project-level .cursor/mcp.json):

{
  "mcpServers": {
    "european-parliament": {
      "command": "npx",
      "args": ["european-parliament-mcp-server"],
      "env": {}
    }
  }
}

Custom Timeout Configuration

Use --timeout <ms> to override the default 60 s request timeout. This is especially useful in copilot-mcp.json or other contexts where the env field may not reliably propagate:

{
  "args": ["european-parliament-mcp-server", "--timeout", "90000"]
}

Precedence: --timeout CLI arg > EP_REQUEST_TIMEOUT_MS env var > default (60 000 ms).

Note: The procedures/feed and events/feed endpoints automatically use an extended 120 s timeout because these EP API endpoints are significantly slower than others. If you experience timeouts with one-month timeframes, consider using year-based queries (e.g., get_procedures({ year: 2026 })) as a faster alternative.


📚 Documentation

🌐 Documentation Portal

📖 Complete Documentation Site - Live documentation portal with:

  • 📖 API Reference (HTML) - TypeDoc generated API documentation with search, hierarchy navigation, and full type information
  • 📖 API Reference (Markdown) - SEO-friendly Markdown API documentation
  • 📊 Coverage Reports - Test coverage analysis
  • ✅ Test Reports - Unit and E2E test results
  • 🔐 Build Attestations - SLSA Level 3 provenance
  • 📦 SBOM - Software Bill of Materials
  • 🗺️ Sitemap - Auto-generated sitemap for search engines

💡 Note: Documentation is automatically generated and committed with each release via npm run docs:build

Generated API Documentation

The API documentation is generated using TypeDoc with the following plugins:

Plugin Purpose
typedoc Core HTML documentation generator
typedoc-plugin-markdown Generates SEO-friendly Markdown alongside HTML
typedoc-plugin-mdn-links Links TypeScript built-in types to MDN documentation
typedoc-plugin-zod Renders Zod schema definitions as readable type documentation

Generate documentation locally:

npm run docs          # HTML API docs → docs/api/
npm run docs:md       # Markdown API docs → docs/api-markdown/
npm run docs:build    # Full documentation build (HTML + MD + coverage + test reports)

Core Documentation

Additional Documentation


🏗️ Architecture Overview

graph TB
    Client[MCP Client<br/>Claude / VS Code / Cursor] -->|MCP Protocol stdio| Server[EP MCP Server<br/>TypeScript/Node.js]

    subgraph "MCP Server (src/)"
        direction TB
        Tools["🔧 61 Tools<br/>getMEPs · analyzeCoalition<br/>assessMepInfluence · …"]
        Resources["📦 9 Resources<br/>ep://meps/\{mepId\}<br/>ep://procedures/\{procedureId\} · …"]
        Prompts["💬 7 Prompts<br/>mep_briefing<br/>coalition_analysis · …"]
    end

    Server --> Tools
    Server --> Resources
    Server --> Prompts

    subgraph "Infrastructure"
        Cache["LRU Cache<br/>500 entries · 15 min TTL"]
        RateLimiter[Rate Limiter<br/>100 req/min]
        AuditLog[Audit Logger<br/>GDPR Article 30]
    end

    Tools --> EPClient["EuropeanParliamentClient<br/>Facade → 8 sub-clients"]
    Resources --> EPClient
    EPClient --> Cache
    EPClient --> RateLimiter
    EPClient --> AuditLog
    EPClient -->|HTTPS/TLS 1.3| EPAPI[European Parliament<br/>Open Data API v2<br/>data.europarl.europa.eu]

    style Server fill:#4caf50,stroke:#2e7d32,color:#fff
    style EPClient fill:#2196f3,stroke:#1565c0,color:#fff
    style EPAPI fill:#9c27b0,stroke:#6a1b9a,color:#fff
    style Cache fill:#ff9800,stroke:#e65100,color:#fff
    style RateLimiter fill:#f44336,stroke:#b71c1c,color:#fff
    style AuditLog fill:#607d8b,stroke:#37474f,color:#fff
Loading

Data flow: MCP client sends a tool call → server validates input (Zod) → EP client checks cache → on miss, fetches from EP API (rate-limited) → response cached and returned as structured JSON. All personal data access is audit-logged per GDPR Article 30.


🔌 MCP Tools (63 Total)

63 tools organized by capability — OSINT intelligence first, then analytical, data access, feed endpoints, and reference tools. Every tool includes Zod input validation, caching, and rate limiting.

🗺️ Political Intelligence Coverage Map

graph TB
    subgraph OSINT["🕵️ OSINT Intelligence — 15 Tools"]
        direction LR
        subgraph MEP["MEP Profiling"]
            A1["assess_mep_influence"]
            A2["comparative_intelligence"]
            A3["network_analysis"]
            A4["track_mep_attendance"]
        end
        subgraph COALITION["Coalition Dynamics"]
            B1["analyze_coalition_dynamics"]
            B2["compare_political_groups"]
            B3["detect_voting_anomalies"]
            B4["sentiment_tracker"]
        end
        subgraph STRATEGY["Strategic Warning"]
            C1["early_warning_system"]
            C2["generate_political_landscape"]
            C3["correlate_intelligence"]
        end
        subgraph LEG_INTEL["Legislative Intelligence"]
            D1["analyze_legislative_effectiveness"]
            D2["monitor_legislative_pipeline"]
            D3["analyze_committee_activity"]
            D4["analyze_country_delegation"]
        end
    end

    subgraph ANALYTICS["📊 Advanced Analysis — 4 Tools"]
        E1["analyze_voting_patterns"]
        E2["track_legislation"]
        E3["generate_report"]
        E4["get_all_generated_stats"]
    end

    subgraph DATA["📦 Core EP Data — 30 Tools"]
        F1["👤 MEP Tools (7)"]
        F2["🏛️ Plenary & Meeting (9)"]
        F3["📄 Document Tools (7)"]
        F4["⚖️ Legislative (4)"]
        F5["🏢 Committee (2)"]
        F6["🔧 Diagnostics (1)"]
    end

    subgraph FEEDS["📡 Real-Time Feeds — 13 Tools"]
        G1["13 change monitoring endpoints"]
    end

    OSINT -->|"enriched by"| ANALYTICS
    ANALYTICS -->|"queries"| DATA
    DATA -->|"monitors"| FEEDS

    style OSINT fill:#d32f2f,stroke:#b71c1c,color:#fff,stroke-width:2px
    style ANALYTICS fill:#1565c0,stroke:#0d47a1,color:#fff,stroke-width:2px
    style DATA fill:#2e7d32,stroke:#1b5e20,color:#fff,stroke-width:2px
    style FEEDS fill:#ff8f00,stroke:#e65100,color:#000,stroke-width:2px
    style MEP fill:#e53935,stroke:#c62828,color:#fff,stroke-width:2px
    style COALITION fill:#e53935,stroke:#c62828,color:#fff,stroke-width:2px
    style STRATEGY fill:#e53935,stroke:#c62828,color:#fff,stroke-width:2px
    style LEG_INTEL fill:#e53935,stroke:#c62828,color:#fff,stroke-width:2px
Loading

🎯 OSINT Intelligence Workflow

graph LR
    subgraph COLLECT["1️⃣ Collect"]
        direction TB
        C1["get_meps"]
        C2["get_plenary_sessions"]
        C3["get_voting_records"]
        C4["get_procedures"]
        C5["13 feed tools"]
    end

    subgraph ANALYZE["2️⃣ Analyze"]
        direction TB
        AN1["analyze_voting_patterns"]
        AN2["track_legislation"]
        AN3["generate_report"]
        AN4["get_all_generated_stats"]
    end

    subgraph ENRICH["3️⃣ Enrich"]
        direction TB
        E1["assess_mep_influence"]
        E2["analyze_coalition_dynamics"]
        E3["detect_voting_anomalies"]
        E4["network_analysis"]
        E5["analyze_legislative_effectiveness"]
    end

    subgraph FUSE["4️⃣ Fuse & Alert"]
        direction TB
        F1["correlate_intelligence"]
        F2["early_warning_system"]
        F3["generate_political_landscape"]
        F4["comparative_intelligence"]
        F5["sentiment_tracker"]
    end

    COLLECT -->|"raw data"| ANALYZE
    ANALYZE -->|"structured"| ENRICH
    ENRICH -->|"intelligence"| FUSE

    style COLLECT fill:#2e7d32,stroke:#1b5e20,color:#fff,stroke-width:2px
    style ANALYZE fill:#1565c0,stroke:#0d47a1,color:#fff,stroke-width:2px
    style ENRICH fill:#9c27b0,stroke:#7b1fa2,color:#fff,stroke-width:2px
    style FUSE fill:#d32f2f,stroke:#b71c1c,color:#fff,stroke-width:2px
Loading

🕵️ OSINT Intelligence Tools (15)

Tool Description Key Parameters Output
correlate_intelligence Cross-tool OSINT correlation engine — fuses influence, anomaly, coalition, and network signals into unified intelligence alerts mepIds (required), groups, sensitivityLevel Correlated alerts with severity & confidence
assess_mep_influence MEP influence scoring (5-dimension model) mepId (required), dateFrom, dateTo, includeDetails Influence scorecard
detect_voting_anomalies Party defection & anomaly detection mepId, groupId, sensitivityThreshold Anomaly report
analyze_coalition_dynamics Coalition cohesion & stress analysis groupIds, dateFrom, minimumCohesion Coalition metrics
early_warning_system Detect emerging political shifts & coalition fractures sensitivity, focusArea Warnings with severity levels & stability score
comparative_intelligence Cross-reference 2–10 MEP activities across dimensions mepIds (required), dimensions Ranked profiles, correlation matrix, cluster analysis
network_analysis MEP relationship network via committee co-membership mepId, analysisType, depth Network map with centrality scores
sentiment_tracker Political group institutional-positioning scores groupId, timeframe Positioning scores & polarization index
generate_political_landscape Parliament-wide political landscape dateFrom, dateTo Landscape overview
compare_political_groups Cross-group comparative analysis groupIds (required), dimensions, dateFrom Comparison matrix
analyze_legislative_effectiveness MEP/committee legislative scoring subjectType (required), subjectId (required), dateFrom Effectiveness score
monitor_legislative_pipeline Pipeline status & bottleneck detection committee, status, limit Pipeline status
analyze_committee_activity Committee workload & engagement analysis committeeId (required), dateFrom, dateTo Activity report
track_mep_attendance MEP attendance patterns & trends mepId, country, groupId, dateFrom, dateTo, limit Attendance report
analyze_country_delegation Country delegation voting & composition country (required), dateFrom, dateTo Delegation analysis

📊 Advanced Analysis Tools (4)

Tool Description Key Parameters Output
get_all_generated_stats Precomputed EP activity statistics (2004-2026) with rankings, predictions, political landscape, and 30 OSINT-derived intelligence metrics including 3-axis political compass yearFrom, yearTo, category, includePredictions Statistics object
analyze_voting_patterns Analyze MEP voting behavior mepId (required), dateFrom, compareWithGroup Analysis object
track_legislation Track legislative procedure procedureId (required) Procedure object
generate_report Generate analytical reports reportType (required), subjectId, dateFrom Report object

👤 MEP Tools (7)

Tool Description Key Parameters EP API Endpoint
get_meps List MEPs with filters country, group, committee, limit GET /meps
get_mep_details Detailed MEP information id (required) GET /meps/{id}
get_current_meps Currently active MEPs with country & political group limit, offset GET /meps/show-current
get_incoming_meps Newly arriving MEPs for current term limit, offset GET /meps/show-incoming
get_outgoing_meps Departing MEPs for current term limit, offset GET /meps/show-outgoing
get_homonym_meps MEPs with identical names (disambiguation) limit, offset GET /meps/show-homonyms
get_mep_declarations MEP financial interest declarations docId, year, limit GET /meps-declarations, GET /meps-declarations/{id}

🏛️ Plenary & Meeting Tools (9)

Tool Description Key Parameters EP API Endpoint
get_plenary_sessions List plenary sessions/meetings, or single by eventId dateFrom, dateTo, eventId, year, location GET /meetings, GET /meetings/{id}
get_voting_records Retrieve aggregate voting records (no per‑MEP positions) sessionId, topic, dateFrom GET /meetings/{id}/vote-results
get_speeches Plenary speeches and debate contributions speechId, year, dateFrom, dateTo, limit GET /speeches, GET /speeches/{id}
get_events EP events (hearings, conferences, seminars) eventId, year, dateFrom, dateTo, limit GET /events, GET /events/{id}
get_meeting_activities Activities linked to a plenary sitting sittingId (required), limit GET /meetings/{id}/activities
get_meeting_decisions Decisions made in a plenary sitting sittingId (required), limit GET /meetings/{id}/decisions
get_meeting_foreseen_activities Planned agenda items for upcoming meetings sittingId (required), limit GET /meetings/{id}/foreseen-activities
get_meeting_plenary_session_documents Plenary session documents linked to a specific sitting sittingId (required), limit, offset GET /meetings/{id}/plenary-session-documents
get_meeting_plenary_session_document_items Agenda item documents for a specific plenary sitting sittingId (required), limit, offset GET /meetings/{id}/plenary-session-document-items

🏢 Committee Tools (2)

Tool Description Key Parameters EP API Endpoint
get_committee_info Committee/corporate body info, or all current bodies id, abbreviation, showCurrent GET /corporate-bodies, GET /corporate-bodies/show-current
get_committee_documents Committee documents and drafts docId, year, limit GET /committee-documents, GET /committee-documents/{id}

📄 Document Tools (7)

Tool Description Key Parameters EP API Endpoint
search_documents Search documents or get single by docId keyword, docId, documentType, dateFrom GET /documents, GET /documents/{id}
get_adopted_texts Adopted legislative texts and resolutions docId, year, limit GET /adopted-texts, GET /adopted-texts/{id}
get_plenary_documents Plenary legislative documents docId, year, limit GET /plenary-documents, GET /plenary-documents/{id}
get_plenary_session_documents Session agendas, minutes, voting lists docId, limit GET /plenary-session-documents, GET /plenary-session-documents/{id}
get_plenary_session_document_items Individual items within session documents limit, offset GET /plenary-session-documents-items
get_external_documents Non-EP documents (Council, Commission) docId, year, limit GET /external-documents, GET /external-documents/{id}
get_parliamentary_questions Parliamentary Q&A, or single by docId type, author, topic, docId GET /parliamentary-questions, GET /parliamentary-questions/{id}

⚖️ Legislative Procedure Tools (4)

Tool Description Key Parameters EP API Endpoint
get_procedures Legislative procedures, or single by processId processId, year, limit GET /procedures, GET /procedures/{id}
get_procedure_events Timeline events for a legislative procedure processId (required), limit GET /procedures/{id}/events
get_procedure_event_by_id Specific event linked to a legislative procedure processId (required), eventId (required) GET /procedures/{id}/events/{event-id}
get_controlled_vocabularies Standardized classification terms vocId, limit GET /controlled-vocabularies, GET /controlled-vocabularies/{id}

📡 Feed Tools (13)

Real-time change feeds for monitoring recently updated data across all EP API categories. Per the EP OpenAPI spec, feeds fall into two groups:

  • Configurable-window (6 tools): Accept timeframe (today, one-day, one-week, one-month, custom) + optional startDate
  • Fixed-window (7 tools): No parameters — return updates from a server-defined default window (typically one month)

Key behaviors:

  • All feeds return JSON-LD with data[], @context[], and dataQualityWarnings[]
  • Empty feeds (EP API 404 or error-in-body) are converted to empty data[] with a warning — not errors
  • get_events_feed and get_procedures_feed always use a minimum 120s timeout because these endpoints are consistently slow
  • Fixed-window feeds can be very slow (30–180 s) and often return error-in-body responses
  • For configurable feeds, when timeframe is custom, startDate (YYYY-MM-DD) is required

Configurable-window feeds:

Tool Description Key Parameters EP API Endpoint
get_meps_feed Recently updated MEPs timeframe, startDate GET /meps/feed
get_events_feed Recently updated events timeframe, startDate, activityType GET /events/feed
get_procedures_feed Recently updated procedures timeframe, startDate, processType GET /procedures/feed
get_adopted_texts_feed Recently updated adopted texts timeframe, startDate, workType GET /adopted-texts/feed
get_mep_declarations_feed Recently updated MEP declarations timeframe, startDate, workType GET /meps-declarations/feed
get_external_documents_feed Recently updated external documents timeframe, startDate, workType GET /external-documents/feed

Fixed-window feeds (no parameters):

Tool Description Key Parameters EP API Endpoint
get_documents_feed Recently updated documents (none) GET /documents/feed
get_plenary_documents_feed Recently updated plenary documents (none) GET /plenary-documents/feed
get_committee_documents_feed Recently updated committee docs (none) GET /committee-documents/feed
get_plenary_session_documents_feed Recently updated plenary session docs (none) GET /plenary-session-documents/feed
get_parliamentary_questions_feed Recently updated questions (none) GET /parliamentary-questions/feed
get_corporate_bodies_feed Recently updated corporate bodies (none) GET /corporate-bodies/feed
get_controlled_vocabularies_feed Recently updated vocabularies (none) GET /controlled-vocabularies/feed

🔧 Server Diagnostics (1)

Tool Description Key Parameters Output
get_server_health Server health and feed availability status (no upstream API calls) (none) Health object

📖 Complete TypeDoc API documentation → · Markdown API docs →

Common Use Cases

Research a specific MEP:

1. Find MEP: get_meps → {country: "SE"}
2. Get details: get_mep_details → {id: "MEP-123"}
3. Analyze voting: analyze_voting_patterns → {mepId: "MEP-123"}
4. Generate report: generate_report → {reportType: "MEP_ACTIVITY", subjectId: "MEP-123"}

Track legislation:

1. Search documents: search_documents → {keywords: "climate change"}
2. Track procedure: track_legislation → {procedureId: "2024/0001(COD)"}
3. Get voting records: get_voting_records → {topic: "climate"}

Committee analysis:

1. Get committee: get_committee_info → {abbreviation: "ENVI"}
2. List members: get_meps → {committee: "ENVI"}
3. Generate report: generate_report → {reportType: "COMMITTEE_PERFORMANCE", subjectId: "COMM-ENVI"}

OSINT Intelligence analysis:

1. Score MEP influence: assess_mep_influence → {mepId: "MEP-123"}
2. Detect anomalies: detect_voting_anomalies → {mepId: "MEP-123"}
3. Analyze coalitions: analyze_coalition_dynamics → {groupIds: ["EPP", "S&D"]}
4. Compare groups: compare_political_groups → {groupIds: ["EPP", "S&D", "Renew"]}
5. Pipeline status: monitor_legislative_pipeline → {committee: "ENVI"}
6. Country delegation: analyze_country_delegation → {country: "SE"}
7. Political landscape: generate_political_landscape → {}

🎯 More use cases and examples →

📝 MCP Prompts

Pre-built intelligence analysis prompt templates:

Facts

Kind
MCP server
Repo
Hack23/European-Parliament-MCP-Server
Group
Uncategorized
Stars
28
License
Apache-2.0
Language
TypeScript
Last push
2026-10-10
Forks
9
Homepage
hack23.com/european-parliament-mcp-docs.html
Topics
civic-tech, eu-parlament, european-union, mcp, mcp-server, osint, parliamentary-debate, eu, intelligence, political-analysis, political-intelligence, political-science, politics, poltician, ai-agents, ai-driven-insights, ai-skills, gh-aw, typescript, geopolitics

More on this shelf

  1. 1REAio.github.morluto/reaReverse engineer anything from your terminal or agent with one CLI and MCP server.125.3k
  2. 2com.browser-use/browser-usecom.browser-use/browser-useControl a real Chrome browser to complete any task: fill forms, extract data, book flights.117.7k
  3. 3World Monitorapp.worldmonitor/mcpLive markets, conflicts, country risk, chokepoints, energy, and China decision signals. 93 tools.88.3k
  4. 4Scrapling MCP Serverd4vinci/scrapling🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scraplingdev86.9k
  5. 5Everythingmodelcontextprotocol/serversThis MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test server for builders of MCP clients. It implements prompts, tools, resources, sampling, and more to showcase MCP capabilities.85.8k
  6. 6Fetchmodelcontextprotocol/serversA Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.85.8k