ISMS OpenSSF Best Practices Ask DeepWiki

📊 Quality Metrics & Documentation

📋 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

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

🇪🇺 EU Parliament Monitor — euparliamentmonitor.com

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

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

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

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 & Compliance


🚀 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: