Hack23/European-Parliament-MCP-Server
European Parliament MCP Server - Political intelligence for AI agents - Hack23/European-Parliament-MCP-Server
18 stars · 7 forks · TypeScript Topics: intelligence, typescript, osint, politics, mcp, eu, political-science, civic-tech, parliamentary-monitoring, ai-agents, european-union, political-analysis, parliamentary-debate, mcp-server, ai-driven-insights, ai-skills, eu-parlament, poltician, gh-aw, political-intelligence
README
🏛️ 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.
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
📊 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
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 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
🗳️ Riksdagsmonitor — riksdagsmonitor.com
Swedish Political Intelligence Platform — 🕵️ Political intelligence · 🔍 Democratic transparency · 🤖 AI-generated news · 📊 50+ years of evidence
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
🕵️ Citizen Intelligence Agency (CIA)
Political transparency platform — Java/Spring data backbone behind Riksdagsmonitor's historical evidence layer
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
🌍 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
🌐 Live platforms — euparliamentmonitor.com · riksdagsmonitor.com · hack23.github.io/cia · hack23.com 🧠 Political Intelligence Hubs — EU Parliament · Riksdag 📂 Source repositories — European-Parliament-MCP-Server · euparliamentmonitor · riksdagsmonitor · cia · ISMS-PUBLIC 📦 npm packages — european-parliament-mcp-server · euparliamentmonitor · riksdagsmonitor 📰 Blog & company — Hack23 blog · LinkedIn — Hack23 AB · founder James Pether Sörling, CISSP, CISM 🤖 AI-readable wikis — DeepWiki: European-Parliament-MCP-Server · DeepWiki: euparliamentmonitor · DeepWiki: riksdagsmonitor · DeepWiki: cia
🔐 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-serverOr install as a dependency in your project
npm install european-parliament-mcp-server Option 2: Install from sourceClone the repository
git clone https://github.com/Hack23/European-Parliament-MCP-Server.git cd European-Parliament-MCP-ServerInstall dependencies
npm installBuild the project
npm run buildRun 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 navig