Platform Overview
The EU-parlamentet MCP Server is an open-source TypeScript/Node.js implementation of the Model Context Protocol (MCP) designed to give AI assistants structured, programmatic access to EU-parlamentet open datasets. It connects to the official EU-parlamentet Open Data API (data.europarl.europa.eu) and exposes a comprehensive suite of purpose-built tools — covering OSINT intelligence, data access, and analytics — across the full breadth of parliamentary activity.
The server achieves SLSA Nivå 3 supply chain security, ships with an extensive automated test suite (unit + end-to-end), and is fully compliant with ISO 27001:2022, NIST CSF 2.0, CIS Controls v8.1, and GDPR. Install via npm and start querying EU-parlamentet data through your AI assistant.
Key Features
🔌 Full MCP Protocol Implementation
Complete Model Context Protocol implementation with 9 specialized tools, resource definitions, and tool schemas compatible with all MCP-enabled AI clients.
🇪🇺 EU-parlamentet Data Access
Direct integration with the official EU-parlamentet Open Data API for MEPs, sessions, voting, committees, documents, and questions.
📘 TypeScript Type Safety
Fully typed TypeScript codebase with strict mode enabled. All API contracts validated with Zod schemas for runtime type safety.
🛡️ SLSA Nivå 3 Security
Build provenance attestations, OpenSSF Scorecard validation, dependency security auditing, and automated vulnerability scanning.
🧪 High Test Coverage
268 unit tests and 23 E2E integration tests maintaining 80%+ code coverage with automated CI quality gates.
🔒 Security Controls
Rate limiting, security headers, Zod input validation, audit logging, and dependency pinning for enterprise-grade security posture.
📦 npm Distribution
Published to npm as european-parliament-mcp-server for simple installation and integration into existing AI workflows.
📋 ISMS Documentation
Complete ISMS documentation including threat model, security architecture, BCP, CRA assessment, and financial security plan.
🔧 Extensible Architecture
Modular TypeScript architecture enabling easy addition of new EU-parlamentet data endpoints and custom tool implementations.
MCP Tools
The server implements 9 specialized MCP tools providing comprehensive access to EU-parlamentet data:
👤 get_meps
Retrieve Member of EU-parlamentet (MEP) profiles with optional filtering by country, political group, and committee. Returns full contact information, group affiliations, and committee memberships.
📅 get_plenary_sessions
Access plenary session records and agendas. Filter by date range to retrieve historical and upcoming session information including agenda items and outcomes.
🗳️ get_voting_records
Query detailed voting records for any legislative vote. Retrieve individual MEP votes, vote totals by political group, and legislative context for accountability research.
🔍 search_documents
Full-text search across the EU-parlamentet document repository including reports, opinions, resolutions, and legislative texts. Filter by type, date, and committee origin.
🏛️ get_committee_info
Access detailed utskottsinformation including full membership lists, mandate descriptions, rapporteur assignments, and recent committee activities and opinions.
❓ get_parliamentary_questions
Retrieve written and oral parlamentsfrågor submitted by MEPs along with official responses from the European Commission and Council of the EU.
📊 analyze_voting_patterns
Analyze röstmönster across political groups, countries, and legislative topics. Identify cohesion rates, cross-group alliances, and MEP voting consistency over time.
📋 track_legislation
Track legislative procedures from initial proposal through committee review, amendments, readings, and final vote. Monitor progress of specific dossiers and identify key decision points.
📄 generate_report
Generate structured AI-ready reports on parliamentary activity, MEP profiles, voting summaries, and political group analyses formatted for consumption by AI assistants and humans alike.
Security Features
The EU-parlamentet MCP Server implements enterprise-grade security controls aligned with ISMS best practices:
🚦 Rate Limiting
- Configurable request rate limits per client
- Sliding window rate limiting algorithm
- Graceful throttling with informative error messages
- Protection against API quota exhaustion
✅ Zod Validation
- Schema validation for all MCP tool inputs
- Type-safe API response parsing
- Strict mode TypeScript throughout
- Runtime type coercion and sanitization
🔒 Security Headers
- Content Security Policy (CSP)
- HSTS for transport security
- X-Frame-Options and X-Content-Type-Options
- Dependency pinning and supply chain integrity
📋 Audit Logging
- Structured JSON audit logs for all tool invocations
- Request/response logging for debugging
- Error tracking and alerting
- GDPR-compliant data handling in logs
ISMS Compliance
The EU-parlamentet MCP Server is fully aligned with the Hack23 ISMS framework and international security standards:
🌍 ISO 27001:2022
Information Security Management System compliance with documented security controls, risk assessments, and continuous improvement processes.
🇺🇸 NIST CSF 2.0
Cybersecurity Framework alignment across all six functions: Govern, Identify, Protect, Detect, Respond, and Recover.
🔒 CIS Controls v8.1
Implementation of prioritized CIS security controls for hardened configuration and continuous monitoring.
🇪🇺 GDPR
General Data Protection Regulation compliance for processing publicly available EU-parlamentet data with privacy-by-design principles.
Data Model Overview
The server provides structured access to the following EU-parlamentet data domains:
MEP Data
Comprehensive MEP information enabling political analysis and accountability research:
- Profile: Name, nationality, date of birth, political biography
- Affiliation: Political group, national party, constituency
- Committees: Full and substitute member positions
- Contact: Official EU-parlamentet contact information
Plenary & Voting Data
Complete plenary session and voting record data for transparency and accountability:
- Sessions: Agenda, dates, location (Strasbourg/Brussels)
- Votes: Individual MEP votes, for/against/abstain tallies
- Context: Legislative dossier, committee recommendation, debate references
Documents & Questions
Access to the full parliamentary document repository and question archive:
- Documents: Reports, opinions, resolutions, amendments
- Questions: Written questions, oral questions, priority questions
- Responses: Official Commission and Council responses