MCP Hub
Back to servers

European Parliament MCP Server

Model Context Protocol Server for European Parliament Open Data Providing AI assistants with structured access to parliamentary datasets and OSINT Intelligence Capabilities

Stars
4
Forks
4
Updated
Mar 1, 2026
Validated
Mar 2, 2026

Hack23 Logo

🏛️ European Parliament MCP Server

Model Context Protocol Server for European Parliament Open Data
Providing AI assistants with structured access to parliamentary datasets and OSINT Intelligence Capabilities

European Parliament MCP Server

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

ISMS Ask DeepWiki

📊 Quality Metrics & Documentation

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: 47 tools (7 core + 3 advanced analysis + 15 OSINT intelligence + 8 Phase 4 + 14 Phase 5), 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, 23 E2E tests
  • 📚 Complete Documentation: Architecture, TypeDoc API (HTML + Markdown), security guidelines

🌍 Hack23 Political Intelligence Ecosystem

This MCP server is part of Hack23's mission to disrupt journalism with AI-generated news coverage and real-time analysis of democratic governments — increasing transparency and accountability through open-source intelligence.

🎯 Vision: AI-Powered Democratic Transparency

Hack23 builds open-source intelligence platforms that enable citizens, journalists, and researchers to monitor democratic institutions in real-time. By combining MCP servers, AI analysis, and open parliamentary data, we create automated intelligence products that were previously only available to well-funded lobbying organizations.

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

🔗 Hack23 Projects

🇪🇺 EU Parliament Monitor

EU Parliament Monitor

European Parliament Intelligence Platform — an automated multi-language news platform that monitors EU Parliament activities with 14-language support, covering plenary sessions, committee reports, propositions, and breaking news.

OpenSSF Scorecard SLSA 3 News Generation Test and Report License ISMS Ask DeepWiki

🗳️ Riksdagsmonitor

Riksdagsmonitor

Swedish Parliament Intelligence Platform monitoring political activity in Sweden's Riksdag with systematic transparency through real-time analysis and 50+ years of historical data (1971-2024).

OpenSSF Scorecard Quality Checks Dependency Review License ISMS Ask DeepWiki

🔍 Citizen Intelligence Agency

CIA Logo

Political transparency platform monitoring Swedish political activity with data-driven insights, analytics, dashboard visualizations, and accountability metrics.

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


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

Prerequisites

  • Node.js 24.x or higher
  • npm 10.x or higher
  • Git

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": "node",
      "args": ["./dist/index.js"]
    }
  }
}

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": {}
    }
  }
}

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

PluginPurpose
typedocCore HTML documentation generator
typedoc-plugin-markdownGenerates SEO-friendly Markdown alongside HTML
typedoc-plugin-mdn-linksLinks TypeScript built-in types to MDN documentation
typedoc-plugin-zodRenders 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[🔧 46 Tools<br/>getMEPs · analyzeCoalition<br/>assessMepInfluence · …]
        Resources[📦 9 Resources<br/>ep://meps/{id}<br/>ep://procedures/{id} · …]
        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 / 15 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

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 (47 Total)

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

🕵️ OSINT Intelligence Tools (15)

ToolDescriptionKey ParametersOutput
correlate_intelligenceCross-tool OSINT correlation engine — fuses influence, anomaly, coalition, and network signals into unified intelligence alertstoolOutputs, correlationModeCorrelated alerts with severity & confidence
assess_mep_influenceMEP influence scoring (5-dimension model)mepId (required), dateFrom, dateToInfluence scorecard
detect_voting_anomaliesParty defection & anomaly detectionmepId, politicalGroup, dateFromAnomaly report
analyze_coalition_dynamicsCoalition cohesion & stress analysispoliticalGroups, dateFrom, dateToCoalition metrics
early_warning_systemDetect emerging political shifts & coalition fracturessensitivity, focusAreaWarnings with severity levels & stability score
comparative_intelligenceCross-reference 2–10 MEP activities across dimensionsmepIds (required), dimensionsRanked profiles, correlation matrix, cluster analysis
network_analysisMEP relationship network via committee co-membershipmepId, analysisType, depthNetwork map with centrality scores
sentiment_trackerPolitical group institutional-positioning scoresgroupId, timeframePositioning scores & polarization index
generate_political_landscapeParliament-wide political landscapedateFrom, dateToLandscape overview
compare_political_groupsCross-group comparative analysisgroups (required), metrics, dateFromComparison matrix
analyze_legislative_effectivenessMEP/committee legislative scoringsubjectId (required), subjectType, dateFromEffectiveness score
monitor_legislative_pipelinePipeline status & bottleneck detectioncommitteeId, status, dateFromPipeline status
analyze_committee_activityCommittee workload & engagement analysiscommitteeId (required), dateFrom, dateToActivity report
track_mep_attendanceMEP attendance patterns & trendsmepId, country, groupId, dateFrom, dateTo, limitAttendance report
analyze_country_delegationCountry delegation voting & compositioncountry (required), dateFrom, dateToDelegation analysis

📊 Advanced Analysis Tools (4)

ToolDescriptionKey ParametersOutput
get_all_generated_statsPrecomputed EP activity statistics (2004-2025) with rankings, predictions, and political landscapeyearFrom, yearTo, category, includePredictionsStatistics object
analyze_voting_patternsAnalyze MEP voting behaviormepId (required), dateFrom, compareWithGroupAnalysis object
track_legislationTrack legislative procedureprocedureId (required)Procedure object
generate_reportGenerate analytical reportsreportType (required), subjectId, dateFromReport object

👤 MEP Tools (7)

ToolDescriptionKey ParametersEP API Endpoint
get_mepsList MEPs with filterscountry, group, committee, limitGET /meps
get_mep_detailsDetailed MEP informationid (required)GET /meps/{id}
get_current_mepsCurrently active MEPs with active mandateslimit, offsetGET /meps/show-current
get_incoming_mepsNewly arriving MEPs for current termlimit, offsetGET /meps/show-incoming
get_outgoing_mepsDeparting MEPs for current termlimit, offsetGET /meps/show-outgoing
get_homonym_mepsMEPs with identical names (disambiguation)limit, offsetGET /meps/show-homonyms
get_mep_declarationsMEP financial interest declarationsdocId, year, limitGET /meps-declarations, GET /meps-declarations/{id}

🏛️ Plenary & Meeting Tools (9)

ToolDescriptionKey ParametersEP API Endpoint
get_plenary_sessionsList plenary sessions/meetings, or single by eventIddateFrom, dateTo, eventId, limitGET /meetings, GET /meetings/{id}
get_voting_recordsRetrieve aggregate voting records (no per‑MEP positions)sessionId, topic, dateFromGET /meetings/{id}/vote-results
get_speechesPlenary speeches and debate contributionsspeechId, dateFrom, dateTo, limitGET /speeches, GET /speeches/{id}
get_eventsEP events (hearings, conferences, seminars)eventId, dateFrom, dateTo, limitGET /events, GET /events/{id}
get_meeting_activitiesActivities linked to a plenary sittingsittingId (required), limitGET /meetings/{id}/activities
get_meeting_decisionsDecisions made in a plenary sittingsittingId (required), limitGET /meetings/{id}/decisions
get_meeting_foreseen_activitiesPlanned agenda items for upcoming meetingssittingId (required), limitGET /meetings/{id}/foreseen-activities
get_meeting_plenary_session_documentsPlenary session documents linked to a specific sittingsittingId (required), limit, offsetGET /meetings/{id}/plenary-session-documents
get_meeting_plenary_session_document_itemsAgenda item documents for a specific plenary sittingsittingId (required), limit, offsetGET /meetings/{id}/plenary-session-document-items

🏢 Committee Tools (2)

ToolDescriptionKey ParametersEP API Endpoint
get_committee_infoCommittee/corporate body info, or all current bodiesid, abbreviation, showCurrentGET /corporate-bodies, GET /corporate-bodies/show-current
get_committee_documentsCommittee documents and draftsdocId, year, limitGET /committee-documents, GET /committee-documents/{id}

📄 Document Tools (7)

ToolDescriptionKey ParametersEP API Endpoint
search_documentsSearch documents or get single by docIdkeyword, docId, documentType, dateFromGET /documents, GET /documents/{id}
get_adopted_textsAdopted legislative texts and resolutionsdocId, year, limitGET /adopted-texts, GET /adopted-texts/{id}
get_plenary_documentsPlenary legislative documentsdocId, year, limitGET /plenary-documents, GET /plenary-documents/{id}
get_plenary_session_documentsSession agendas, minutes, voting listsdocId, limitGET /plenary-session-documents, GET /plenary-session-documents/{id}
get_plenary_session_document_itemsIndividual items within session documentslimit, offsetGET /plenary-session-documents-items
get_external_documentsNon-EP documents (Council, Commission)docId, year, limitGET /external-documents, GET /external-documents/{id}
get_parliamentary_questionsParliamentary Q&A, or single by docIdtype, author, topic, docIdGET /parliamentary-questions, GET /parliamentary-questions/{id}

⚖️ Legislative Procedure Tools (3)

ToolDescriptionKey ParametersEP API Endpoint
get_proceduresLegislative procedures, or single by processIdprocessId, year, limitGET /procedures, GET /procedures/{id}
get_procedure_eventsTimeline events for a legislative procedureprocessId (required), limitGET /procedures/{id}/events
get_controlled_vocabulariesStandardized classification termsvocId, limitGET /controlled-vocabularies, GET /controlled-vocabularies/{id}

📖 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 → {politicalGroups: ["EPP", "S&D"]}
4. Compare groups: compare_political_groups → {groups: ["EPP", "S&D", "Renew"]}
5. Pipeline status: monitor_legislative_pipeline → {committeeId: "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:

PromptDescriptionArguments
mep_briefingComprehensive MEP intelligence briefingmepId (required), period?
coalition_analysisCoalition dynamics and voting bloc analysispolicyArea?, period?
legislative_trackingLegislative procedure tracking reportprocedureId?, committee?
political_group_comparisonMulti-dimensional group comparisongroups?
committee_activity_reportCommittee workload and engagementcommitteeId (required)
voting_pattern_analysisVoting pattern trend detectiontopic?, mepId?
country_delegation_analysisCountry delegation composition and activitycountry (required), period?

📦 MCP Resources

Direct data access via EP resource URIs:

Resource URIDescription
ep://mepsList of all current MEPs
ep://meps/{mepId}Individual MEP profile
ep://committees/{committeeId}Committee information
ep://plenary-sessionsRecent plenary sessions
ep://votes/{sessionId}Voting records for a session
ep://political-groupsPolitical group listing
ep://procedures/{procedureId}Legislative procedure details
ep://plenary/{plenaryId}Single plenary session details
ep://documents/{documentId}Legislative document details

🗺️ Global Political MCP Servers & OSINT Coverage

The European Parliament MCP Server is part of a growing ecosystem of political and government open data MCP servers enabling AI-powered OSINT analysis of democratic institutions worldwide. Below is the most comprehensive directory of political and government MCP servers available.

🏛️ Parliamentary & Legislative MCP Servers

CountryServerData SourceCoverage
🇪🇺 European UnionEuropean Parliament MCP Serverdata.europarl.europa.euMEPs, votes, legislation, committees, questions — 47 tools (15 OSINT)
🇺🇸 United StatesCongress.gov API MCP Servercongress.govBills, members, votes, committees (TypeScript, v3 API)
🇺🇸 United StatesCongressMCPcongress.govReal-time Congress data — bills, votes, members
🇺🇸 United StatesCongress.gov MCPcongress.govUnofficial Congress.gov API access
🇬🇧 United KingdomParliament MCPparliament.ukHansard, members, debates, divisions
🇸🇪 SwedenRiksdag & Regering MCPriksdagen.seSwedish Parliament & Government data (used by riksdagsmonitor.com)
🇳🇱 NetherlandsOpenTK MCPtweedekamer.nlDutch Parliament (Tweede Kamer) documents
🇵🇱 PolandParliament of Poland MCPsejm.gov.plMembers, votes, committees
🇵🇱 PolandSejm MCPapi.sejm.gov.plParliament data + legislation
🇮🇱 IsraelKnesset MCP Serverknesset.gov.ilKnesset parliament API
🇧🇷 BrazilSenado BR MCPsenado.leg.brFederal Senate — members, proposals, votes

📊 Government Open Data MCP Servers

CountryServerData SourceCoverage
🇺🇸 United StatesUSA Spending MCPusaspending.govFederal spending data
🇺🇸 United StatesOpen Census MCPcensus.govDemographics & statistics (natural language)
🇺🇸 United StatesData.gov MCP Serverdata.govFederal dataset catalog
🇺🇸 United StatesCMS Data.gov MCPdata.cms.govHealthcare data — search/filter/pagination
🇺🇸 United StatesSEC EDGAR MCPsec.govSEC filings — annual reports, insider data
🇺🇸 United StatesNPS MCPnps.govNational Park Service API
🇸🇪 SwedenSCB MCP Serverscb.seOfficial Swedish statistics
🇸🇪 SwedenSkolverket MCPskolverket.seSwedish National Agency for Education
🇫🇷 Francedata.gouv.fr MCPdata.gouv.frNational open data platform
🇫🇷 FranceData Gouv MCP Serverdata.gouv.frCompanies & organizations search
🇬🇧 United KingdomPlanning Data MCPplanning.data.gov.ukPlanning & land use data
🇬🇧 United KingdomProperty Prices MCPlandregistry.data.gov.ukHousing price search
🇳🇱 NetherlandsCBS Open Data MCPcbs.nlDutch statistics bureau
🇮🇱 IsraelData.gov.il MCPdata.gov.ilNational CKAN data portal
🇮🇱 IsraelDataGov Israel MCPdata.gov.ilAlternative implementation + visualization
🇮🇱 IsraelIsrael Statistics MCPcbs.gov.ilCPI & economic time series
🇮🇱 IsraelBudgetKey MCPopen-budget.org.ilState budget, contracts, grants
🇹🇷 TurkeyMevzuat MCPmevzuat.gov.trLegislation system — search/retrieve laws
🇭🇰 Hong KongHK Data.gov.hk MCPdata.gov.hkHong Kong open data portal
🇲🇾 MalaysiaData.gov.my MCPdata.gov.myNational data portal
🇮🇳 IndiaData.gov.in MCPdata.gov.inSemantic search + dataset access
🇸🇬 SingaporeGahmen MCP Serverdata.gov.sgGovernment datasets + CKAN search
🇸🇬 SingaporeSingapore Data MCPsdata.gov.sgMultiple servers (parking, health, datasets)
🇦🇺 AustraliaABS MCP Serverabs.gov.auBureau of Statistics (SDMX-ML)

🌍 Multi-Portal & Generic MCP Servers

ScopeServerPlatformCoverage
🌐 Global (CKAN)CKAN MCP ServerCKAN portalsGeneric server for any CKAN-based open data portal
🌐 Global (Socrata)OpenGov MCP ServerSocrata portalsCity/county/state/federal Socrata-powered portals

🕵️ OSINT Intelligence Capabilities Comparison

Capability🇪🇺 EU Parliament MCP🇺🇸 Congress.gov MCP🇬🇧 UK Parliament MCP🇸🇪 Riksdag MCP
Member profiling✅ 5-dimension influence model✅ Basic profiles✅ Basic profiles✅ Basic profiles
Voting analysis✅ Anomaly detection + patterns✅ Roll call votes✅ Division records✅ Vote records
Coalition dynamics✅ Cohesion & stress analysis
Committee intelligence✅ Workload & engagement metrics✅ Committee data✅ Committee data
Legislative pipeline✅ Bottleneck detection + forecasting✅ Bill tracking✅ Bill tracking✅ Bill tracking
Country delegation analysis✅ National cohesion metricsN/AN/AN/A
Political landscape✅ Parliament-wide situational awareness
Attendance tracking✅ Trend detection + engagement scoring
GDPR compliance✅ Privacy-first designN/AN/A
MCP prompts & resources✅ 7 prompts + 9 resources
Tool count47 tools~5 tools~5 tools~4 tools

💡 The European Parliament MCP Server offers the most comprehensive OSINT intelligence capabilities of any political MCP server, with 47 specialized tools including advanced analytics like coalition stress analysis, voting anomaly detection, cross-tool intelligence correlation, political landscape generation, and precomputed longitudinal statistics. It is the only political MCP server with built-in MCP prompts, resources, and a 5-dimension MEP influence scoring model.


🏛️ European Parliament Datasets

Complete EP API v2 Coverage

All European Parliament Open Data API v2 endpoint categories are fully covered:

CategoryEndpointsMCP Tools
MEPs/meps, /meps/{id}, /meps/show-current, /meps/show-incoming, /meps/show-outgoing, /meps/show-homonymsget_meps, get_mep_details, get_current_meps, get_incoming_meps, get_outgoing_meps, get_homonym_meps
MEP Documents/meps-declarations, /meps-declarations/{id}get_mep_declarations
Corporate Bodies/corporate-bodies, /corporate-bodies/{id}, /corporate-bodies/show-currentget_committee_info
Events/events, /events/{id}get_events
Meetings/meetings, /meetings/{id}, /meetings/{id}/activities, /meetings/{id}/decisions, /meetings/{id}/foreseen-activities, /meetings/{id}/vote-results, /meetings/{id}/plenary-session-documents, /meetings/{id}/plenary-session-document-itemsget_plenary_sessions, get_meeting_activities, get_meeting_decisions, get_meeting_foreseen_activities, get_voting_records, get_meeting_plenary_session_documents, get_meeting_plenary_session_document_items
Speeches/speeches, /speeches/{id}get_speeches
Procedures/procedures, /procedures/{id}, /procedures/{id}/eventsget_procedures, get_procedure_events
Documents/documents, /documents/{id}, /adopted-texts, /adopted-texts/{id}, /committee-documents, /committee-documents/{id}, /plenary-documents, /plenary-documents/{id}, /plenary-session-documents, /plenary-session-documents/{id}, /plenary-session-documents-itemssearch_documents, get_adopted_texts, get_committee_documents, get_plenary_documents, get_plenary_session_documents, get_plenary_session_document_items
Questions/parliamentary-questions, /parliamentary-questions/{id}get_parliamentary_questions
External Documents/external-documents, /external-documents/{id}get_external_documents
Vocabularies/controlled-vocabularies, /controlled-vocabularies/{id}get_controlled_vocabularies

Data Source


🔒 Security & Compliance

ISMS Compliance

This project aligns with Hack23 AB's Information Security Management System (ISMS):

  • ISO 27001:2022 - Information security management
  • NIST CSF 2.0 - Cybersecurity framework
  • CIS Controls v8.1 - Security best practices
  • GDPR - EU data protection compliance

Security Features

  • 🔐 Authentication: API key + OAuth 2.0 (planned)
  • 🛡️ Input Validation: Zod schemas for all inputs
  • Rate Limiting: 100 requests per 15 minutes per IP
  • 🔒 Security Headers: CSP, HSTS, X-Frame-Options, etc.
  • 📝 Audit Logging: All data access logged
  • 🔍 Vulnerability Scanning: CodeQL, Dependabot, OSSF Scorecard

Supply Chain Security

This project achieves SLSA Level 3 compliance:

  • Build Provenance - Cryptographic proof of build integrity
  • Attestations - All artifacts cryptographically signed
  • Verification - gh attestation verify <artifact> --owner Hack23 --repo European-Parliament-MCP-Server
  • npm Provenance - Published with provenance for package integrity
  • SBOM - SPDX-format Software Bill of Materials
  • Dependency Review - Automated vulnerability scanning
  • License Compliance - Only MIT, Apache-2.0, BSD, ISC allowed

See ATTESTATIONS.md for verification instructions and security benefits.


🧪 Development

Setup Development Environment

# Install dependencies
npm install

# Run in development mode with auto-reload
npm run dev

# Type checking
npm run type-check

# Linting
npm run lint

# Format code
npm run format

# Run tests
npm test

# Run tests with coverage
npm run test:coverage

Project Structure

European-Parliament-MCP-Server/
├── src/                      # Source code
│   ├── server.ts            # MCP server entry point
│   ├── tools/               # MCP tool implementations
│   ├── resources/           # MCP resource handlers
│   ├── prompts/             # MCP prompt templates
│   ├── clients/             # European Parliament API client
│   ├── schemas/             # Zod validation schemas
│   ├── types/               # TypeScript type definitions
│   └── utils/               # Utility functions
├── tests/                   # Test files
├── .github/                 # GitHub configuration
│   ├── agents/             # Custom Copilot agents
│   ├── skills/             # Reusable skill patterns
│   └── workflows/          # CI/CD workflows
└── docs/                    # Additional documentation

Documentation

📚 Developer Documentation

🏗️ Architecture & Design

🧪 Testing & Quality

🔒 Security & Compliance

📦 Deployment & Operations

Testing

# Unit tests
npm test

# Integration tests (requires EP_INTEGRATION_TESTS=true)
EP_INTEGRATION_TESTS=true npm run test:integration

# Integration tests with fixture capture
EP_INTEGRATION_TESTS=true EP_SAVE_FIXTURES=true npm run test:integration

# E2E tests
npm run test:e2e

# Coverage report
npm run test:coverage

# Watch mode
npm run test:watch

Integration Testing: When EP_INTEGRATION_TESTS=true, all 47 MCP tools are tested against the real European Parliament API endpoints. All tools return real data — no mock or placeholder data is used. Live API tests are disabled by default to respect rate limits (100 req/15min). See INTEGRATION_TESTING.md for the complete guide.

Code Quality

# Lint code
npm run lint

# Fix linting issues
npm run lint:fix

# Check for unused dependencies
npm run knip

# Security audit
npm audit

# License compliance
npm run test:licenses

🛠️ Troubleshooting

API Rate Limits

Symptom: Requests return 429 Too Many Requests or slow down unexpectedly.

The European Parliament Open Data API enforces rate limits. The MCP server automatically applies a token-bucket rate limiter (100 requests per 15 minutes).

Solutions:

# Reduce concurrency — don't call multiple tools in parallel bursts
# Use the built-in cache — repeated identical requests are served from LRU cache
# Add a delay between bulk operations:
# e.g., call get_meps, wait 1 s, then call get_mep_details

# Check current cache stats (if using programmatic access):
const stats = epClient.getCacheStats();
console.log(`Cache hit rate: ${stats.hitRate}%`);

Connectivity Issues

Symptom: ECONNREFUSED, ETIMEDOUT, or Network error from tools.

Solutions:

  1. Verify EP API reachability: curl https://data.europarl.europa.eu/api/v2/meps?limit=1
  2. Check firewall / proxy settings — the server connects outbound to data.europarl.europa.eu:443
  3. Enable retry (default: on) — the client retries transient failures with exponential backoff
  4. Review API status at https://data.europarl.europa.eu/en/developer-corner

Installation Problems

Symptom: npm install fails, or node dist/index.js throws import errors.

Solutions:

# Ensure Node.js 24+ is installed
node --version   # Must be >= 24.0.0

# Clear npm cache and reinstall
npm cache clean --force
rm -rf node_modules package-lock.json
npm install

# Rebuild TypeScript output
npm run build

# Verify the package starts correctly
node dist/index.js --version

Symptom: MCP client shows "server not found" or no tools listed.

Solutions:

  • Confirm the command path in your MCP client config points to the correct binary
  • For npx: ensure european-parliament-mcp-server is in your npm registry
  • For node: use the absolute path to dist/index.js
  • Check MCP client logs — most clients (Claude Desktop, VS Code) log connection errors

Integration Test Failures

Symptom: Integration tests fail with EP_INTEGRATION_TESTS must be set.

Integration tests are disabled by default to respect API rate limits.

# Enable integration tests explicitly:
EP_INTEGRATION_TESTS=true npm run test:integration

# Capture fresh fixtures for offline testing:
EP_INTEGRATION_TESTS=true EP_SAVE_FIXTURES=true npm run test:integration

TypeScript / Build Errors

Symptom: tsc reports type errors after pulling latest changes.

# Regenerate all types
npm run type-check

# Check for mismatched Node types
npm install  # updates @types/node

# Ensure tsconfig is correct
cat tsconfig.json

Getting Help


🤝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for details on:

  • Code of conduct
  • Development process
  • Pull request guidelines
  • Coding standards
  • Testing requirements

GitHub Copilot Integration

This repository includes custom agents and skills for GitHub Copilot:

Release Process

We follow Semantic Versioning and use automated release management:

Version Types:

  • Major (x.0.0): Breaking changes (e.g., API incompatible changes)
  • Minor (0.x.0): New features, backward compatible (e.g., new MCP tools)
  • Patch (0.0.x): Bug fixes, security updates, backward compatible

Automated Release Workflow:

  1. Develop features in feature branches
  2. Create PR with descriptive title using Conventional Commits
  3. Labels are automatically applied based on changed files
  4. After merge to main, release draft is automatically created
  5. Review and publish release (creates git tag automatically)

Release Notes Include:

  • Categorized changes by feature area
  • Security badges (OpenSSF Scorecard, SLSA)
  • Technology stack and compatibility
  • ISMS compliance status
  • Full changelog link

For detailed workflow documentation, see .github/WORKFLOWS.md.


🤖 AI-Disrupted Intelligence & Future Roadmap

📰 News is dead. Long live intelligence.

While the world's newsrooms race to replace journalists with GPT-powered headline factories — churning out "10 Things the EU Did Today" listicles at the speed of hallucination — we took a different path. Instead of automating the news ticker, we built a political intelligence platform that actually understands what the European Parliament does. Disrupted news generation produces noise; deep political intelligence produces signal. Any chatbot can summarize a press release. It takes 47 MCP tools, 15 OSINT analyzers, and a 5-dimension influence model to tell you which MEP quietly brokered the amendment that changed the directive that reshaped an industry — three months before the newspapers notice.

This is not a news bot. This is parliamentary intelligence infrastructure.

🏗️ Agentic Architecture Overview

This repository is powered by a comprehensive AI-augmented development ecosystem — 14 specialized Copilot agents, 41 reusable skills, and 11 CI/CD workflows — working in concert to maintain, analyze, and evolve the most advanced political MCP server in existence.

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#6366F1', 'primaryTextColor': '#fff', 'primaryBorderColor': '#4F46E5', 'lineColor': '#94A3B8', 'secondaryColor': '#F59E0B', 'tertiaryColor': '#10B981', 'background': '#0F172A', 'mainBkg': '#1E293B', 'nodeBorder': '#475569'}}}%%
graph TB
    subgraph AGENTS["🤖 14 Copilot Agents"]
        style AGENTS fill:#1E1B4B,stroke:#6366F1,color:#E0E7FF
        A1["🎯 product-task-agent"]
        A2["📝 documentation-writer"]
        A3["🔧 frontend-specialist"]
        A4["🔌 api-integration-engineer"]
        A5["⚙️ mcp-developer"]
        A6["🛡️ security-specialist"]
        A7["🧪 test-engineer"]
        A8["🕵️ intelligence-operative"]
        A9["🏛️ european-parliament-specialist"]
        A10["📊 performance-optimizer"]
        A11["📋 isms-compliance-auditor"]
        A12["💼 business-development-specialist"]
        A13["📣 marketing-specialist"]
        A14["🧩 zod-schema-architect"]
    end

    subgraph SKILLS["🎯 41 Reusable Skills"]
        style SKILLS fill:#1C1917,stroke:#F59E0B,color:#FEF3C7
        S1["🔧 10 Core Dev Skills"]
        S2["🛡️ 6 Security Skills"]
        S3["⚙️ 4 DevOps Skills"]
        S4["🔍 10 Intel & OSINT Skills"]
        S5["💼 2 Business Skills"]
        S6["🤖 3 AI & MCP Gateway Skills"]
        S7["📋 6 ISMS Compliance Skills"]
    end

    subgraph WORKFLOWS["⚙️ 11 CI/CD Workflows"]
        style WORKFLOWS fill:#022C22,stroke:#10B981,color:#D1FAE5
        W1["🧪 test-and-report"]
        W2["🔍 codeql"]
        W3["📦 release"]
        W4["🌐 integration-tests"]
        W5["📋 sbom-generation"]
        W6["🔒 slsa-provenance"]
        W7["📊 scorecard"]
        W8["🔎 dependency-review"]
        W9["🏷️ labeler"]
        W10["⚙️ setup-labels"]
        W11["🤖 copilot-setup-steps"]
    end

    subgraph TOOLS["🔌 47 MCP Tools"]
        style TOOLS fill:#172554,stroke:#3B82F6,color:#DBEAFE
        T1["🕵️ 15 OSINT Intelligence"]
        T2["📊 4 Advanced Analysis"]
        T3["👤 7 MEP Data"]
        T4["🏛️ 9 Plenary & Meeting"]
        T5["📄 12 Document, Committee & Legislative"]
    end

    AGENTS --> SKILLS
    AGENTS --> TOOLS
    SKILLS --> WORKFLOWS
    WORKFLOWS --> TOOLS

📅 Future Advanced Roadmap: 2026–2037

From 47 MCP tools today to a transformative democratic intelligence platform serving all 195 parliamentary systems — powered by the relentless march of AI model generations.

Phase 5: Advanced Intelligence (2026–2027)

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#6366F1', 'primaryTextColor': '#fff', 'primaryBorderColor': '#4F46E5', 'lineColor': '#94A3B8', 'secondaryColor': '#22D3EE', 'tertiaryColor': '#10B981'}}}%%
timeline
    title 2026–2027 · Advanced Intelligence Era
    section Q1–Q2 2026
        Agentic News Generation : Opus 4.6–4.7
        : AI-generated parliamentary briefings
        : Automated committee intelligence reports
        : Real-time vote analysis summaries
    section Q3–Q4 2026
        Deep Analysis Pipelines : Opus 4.8–4.9
        : Cross-institutional correlation engine
        : MEP behavioral prediction models
        : Legislative outcome forecasting
    section Q1–Q2 2027
        Predictive Analytics : Opus 5.0–5.1
        : Coalition formation prediction
        : Amendment survival probability
        : Policy impact pre-assessment
    section Q3–Q4 2027
        Multi-source Intelligence : Opus 5.2–5.3
        : EUR-Lex deep integration
        : Council position analysis
        : Commission proposal tracking

Phase 6: AGI Era & Transformative Democracy (2034–2037)

Scenario: AGI or near-AGI systems become available through Amazon Bedrock or successor platforms

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#A855F7', 'primaryTextColor': '#fff', 'lineColor': '#C084FC', 'secondaryColor': '#F59E0B', 'tertiaryColor': '#EC4899'}}}%%
mindmap
  root((🌐 AGI Era\n2034–2037))
    🤖 AGI-Enhanced Intelligence
      Autonomous real-time analysis
        All 195 parliamentary systems
        Every legislative session globally
        Sub-second pattern detection
      Universal language support
        All UN official languages
        Regional dialects & legal terminology
        Real-time translation & summarization
    📊 Predictive Governance
      Policy impact prediction
        Before legislation is proposed
        Economic modeling integration
        Social impact forecasting
      Democratic health monitoring
        Voter engagement indices
        Institutional resilience scores
        Democratic backsliding alerts
    ⚖️ Ethical AI Governance
      Human oversight maintained
        Regardless of AI capability level
        Escalation protocols for critical decisions
        Transparency reports on AI judgments
      Bias detection & correction
        Multi-cultural fairness auditing
        Political neutrality verification
        Algorithmic accountability logs
    🛡️ Democratic Safeguards
      Anti-weaponization architecture
        Platform prevents manipulation
        Disinformation detection layer
        Foreign influence monitoring
      Sovereignty protection
        EU data sovereignty enforced
        Quantum-resistant encryption
        Air-gapped government deployments

🧬 AI Model Evolution Strategy

Assumptions: Anthropic Opus minor updates every ~2.3 months through 2037 (or until successor paradigm). Major version upgrades annually. Competitors (OpenAI, Google, Meta, EU sovereign AI) evaluated at each major release. Architecture must accommodate potential paradigm shifts (quantum AI, neuromorphic computing).

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#6366F1', 'primaryTextColor': '#fff', 'primaryBorderColor': '#4F46E5', 'lineColor': '#94A3B8', 'secondaryColor': '#F59E0B', 'tertiaryColor': '#10B981'}}}%%
gantt
    title AI Model Evolution & Platform Capability Growth
    dateFormat YYYY
    axisFormat %Y
    todayMarker off

    section AI Models
    Opus 4.6–4.9        :a1, 2026, 2027
    Opus 5.x             :a2, 2027, 2028
    Opus 6.x Multimodal  :a3, 2028, 2029
    Opus 7.x Autonomous  :a4, 2029, 2030
    Opus 8.x Near-Expert :a5, 2030, 2031
    Opus 9–10.x Pre-AGI  :a6, 2031, 2034
    AGI / Post-AGI       :a7, 2034, 2037

    section Platform Phases
    Phase 5 Advanced Intel     :p5, 2026, 2028
    Phase 5b Predictive        :p5b, 2028, 2030
    Phase 5c Autonomous        :p5c, 2030, 2031
    Phase 6 Pre-AGI Global     :p6a, 2031, 2034
    Phase 6 AGI Transformative :p6b, 2034, 2037

📊 Workflow Count & Capability Projection

Baseline: 11 GitHub Actions workflows today. Projected growth includes AI-generated workflows, scheduled intelligence pipelines, multi-environment deployment chains, and automated OSINT processing — see FUTURE_WORKFLOWS.md for detailed expansion plans.

YearTotal WorkflowsAI ModelKey CapabilityTools
202644–50Opus 4.6–4.9🤖 Agentic news generation, AI-authored briefings46→55
202750–55Opus 5.x📈 Predictive analytics, coalition forecasting55→65
202855–65Opus 6.x🎥 Multi-modal content, video/speech analysis65→80
202965–75Opus 7.x⚡ Autonomous pipeline, self-optimizing CI/CD80→90
203075–85Opus 8.x🧠 Near-expert analysis, domain specialist AI90→100
2031–203385–100Opus 9–10.x / Pre-AGI🌍 Global coverage, all EU national parliaments100→120
2034–2037100–120+AGI / Post-AGI🌐 Transformative platform, 195 parliaments120→200+

🔮 Strategic Considerations

PillarDescriptionSafeguard
🤖 Autonomous AnalysisAGI-powered real-time political intelligence across all 195 parliamentary systemsHuman analyst review for high-stakes assessments
🌐 Universal LanguageEvery UN language supported natively with legal terminology precisionMulti-cultural fairness auditing at every release
📊 Predictive GovernancePolicy impact prediction before legislation is proposedConfidence intervals and uncertainty quantification mandatory
⚖️ Ethical AI GovernanceHuman oversight maintained regardless of AI capability levelISMS-aligned escalation protocols, transparency reports
🛡️ Democratic SafeguardsPlatform architecture prevents weaponization or manipulationQuarterly red-team exercises, sovereignty-first data policies

🗺️ Extended Roadmap Visualization

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#6366F1', 'primaryTextColor': '#fff', 'lineColor': '#94A3B8'}}}%%
graph LR
    subgraph Y2026["2026"]
        style Y2026 fill:#1E40AF,stroke:#3B82F6,color:#DBEAFE
        Y26["🤖 Opus 4.6–4.9\n44–50 workflows\nAgentic news gen"]
    end
    subgraph Y2027["2027"]
        style Y2027 fill:#1E3A8A,stroke:#3B82F6,color:#DBEAFE
        Y27["📈 Opus 5.x\n50–55 workflows\nPredictive analytics"]
    end
    subgraph Y2028["2028"]
        style Y2028 fill:#312E81,stroke:#6366F1,color:#E0E7FF
        Y28["🎥 Opus 6.x\n55–65 workflows\nMulti-modal content"]
    end
    subgraph Y2029["2029"]
        style Y2029 fill:#4C1D95,stroke:#8B5CF6,color:#EDE9FE
        Y29["⚡ Opus 7.x\n65–75 workflows\nAutonomous pipeline"]
    end
    subgraph Y2030["2030"]
        style Y2030 fill:#581C87,stroke:#A855F7,color:#F3E8FF
        Y30["🧠 Opus 8.x\n75–85 workflows\nNear-expert analysis"]
    end
    subgraph Y2031_33["2031–33"]
        style Y2031_33 fill:#701A75,stroke:#D946EF,color:#FAE8FF
        Y31["🌍 Pre-AGI\n85–100 workflows\nGlobal coverage"]
    end
    subgraph Y2034_37["2034–37"]
        style Y2034_37 fill:#831843,stroke:#EC4899,color:#FCE7F3
        Y34["🌐 AGI Era\n100–120+ workflows\nTransformative platform"]
    end

    Y26 --> Y27 --> Y28 --> Y29 --> Y30 --> Y31 --> Y34

📚 Future Architecture Documents

For deep dives into specific evolution tracks, see:

DocumentFocusLink
🧠 Future Mind MapCapability expansion vision, AI analysis, OSINT evolutionFUTURE_MINDMAP.md
⚙️ Future WorkflowsCI/CD evolution, AI-augmented pipelines, 2027–2037 roadmapFUTURE_WORKFLOWS.md
🏛️ Future ArchitecturePlatform architecture evolution, AWS deployment, federationFUTURE_ARCHITECTURE.md
🛡️ Future SecuritySecurity maturity roadmap, quantum-ready encryptionFUTURE_SECURITY_ARCHITECTURE.md
📊 Future Data ModelEnhanced data structures, graph databases, temporal modelsFUTURE_DATA_MODEL.md
💼 Future SWOTStrategic positioning, competitive analysis, market evolutionFUTURE_SWOT.md

📜 License

This project is licensed under the Apache License 2.0 - see LICENSE.md for details.


🔗 Links

Project Resources

Hack23 Ecosystem

European Parliament

MCP Protocol

Political & Government MCP Servers

Hack23 ISMS


🙏 Acknowledgments

  • European Parliament for providing open data access
  • Model Context Protocol team for the MCP specification
  • Hack23 AB for ISMS policies and security standards
  • OpenSSF for supply chain security tools
  • Contributors who help improve this project

Built with ❤️ by Hack23 AB
Demonstrating security excellence through transparent open source

Reviews

No reviews yet

Sign in to write a review