Model Context Protocol Server for European Parliament Open Data
Providing AI assistants with structured access to parliamentary datasets and OSINT Intelligence Capabilities
|
|
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 |
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.
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.
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."
|
|
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. |
|
|
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). |
|
Political transparency platform monitoring Swedish political activity with data-driven insights, analytics, dashboard visualizations, and accountability metrics. |
# 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
# 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
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"
}
}
}
}
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"
}
}
}
}
Configure in .vscode/mcp.json:
{
"servers": {
"european-parliament": {
"type": "stdio",
"command": "node",
"args": ["./dist/index.js"]
}
}
}
Add to ~/.cursor/mcp.json (or project-level .cursor/mcp.json):
{
"mcpServers": {
"european-parliament": {
"command": "npx",
"args": ["european-parliament-mcp-server"],
"env": {}
}
}
}
๐ Complete Documentation Site - Live documentation portal with:
๐ก Note: Documentation is automatically generated and committed with each release via
npm run docs:build
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)
graph TB
Client[MCP Client
Claude / VS Code / Cursor] -->|MCP Protocol stdio| Server[EP MCP Server
TypeScript/Node.js]
subgraph "MCP Server (src/)"
direction TB
Tools[๐ง 46 Tools
getMEPs ยท analyzeCoalition
assessMepInfluence ยท โฆ]
Resources[๐ฆ 9 Resources
ep://meps/{id}
ep://procedures/{id} ยท โฆ]
Prompts[๐ฌ 7 Prompts
mep_briefing
coalition_analysis ยท โฆ]
end
Server --> Tools
Server --> Resources
Server --> Prompts
subgraph "Infrastructure"
Cache[LRU Cache
500 entries ยท 15 min TTL]
RateLimiter[Rate Limiter
100 req / 15 min]
AuditLog[Audit Logger
GDPR Article 30]
end
Tools --> EPClient[EuropeanParliamentClient
Facade โ 8 sub-clients]
Resources --> EPClient
EPClient --> Cache
EPClient --> RateLimiter
EPClient --> AuditLog
EPClient -->|HTTPS/TLS 1.3| EPAPI[European Parliament
Open Data API v2
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.
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.
| Tool | Description | Key Parameters | Output |
|---|---|---|---|
correlate_intelligence |
Cross-tool OSINT correlation engine โ fuses influence, anomaly, coalition, and network signals into unified intelligence alerts | toolOutputs, correlationMode | Correlated alerts with severity & confidence |
assess_mep_influence |
MEP influence scoring (5-dimension model) | mepId (required), dateFrom, dateTo | Influence scorecard |
detect_voting_anomalies |
Party defection & anomaly detection | mepId, politicalGroup, dateFrom | Anomaly report |
analyze_coalition_dynamics |
Coalition cohesion & stress analysis | politicalGroups, dateFrom, dateTo | 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 | groups (required), metrics, dateFrom | Comparison matrix |
analyze_legislative_effectiveness |
MEP/committee legislative scoring | subjectId (required), subjectType, dateFrom | Effectiveness score |
monitor_legislative_pipeline |
Pipeline status & bottleneck detection | committeeId, status, dateFrom | 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 |
| Tool | Description | Key Parameters | Output |
|---|---|---|---|
get_all_generated_stats |
Precomputed EP activity statistics (2004-2025) with rankings, predictions, and political landscape | 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 |
| 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 active mandates | 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} |
| Tool | Description | Key Parameters | EP API Endpoint |
|---|---|---|---|
get_plenary_sessions |
List plenary sessions/meetings, or single by eventId | dateFrom, dateTo, eventId, limit | 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, dateFrom, dateTo, limit | GET /speeches, GET /speeches/{id} |
get_events |
EP events (hearings, conferences, seminars) | eventId, 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 |
| 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} |
| 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} |
| 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_controlled_vocabularies |
Standardized classification terms | vocId, limit | GET /controlled-vocabularies, GET /controlled-vocabularies/{id} |
๐ Complete TypeDoc API documentation โ ยท Markdown API docs โ
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 โ
Pre-built intelligence analysis prompt templates:
| Prompt | Description | Arguments |
|---|---|---|
mep_briefing |
Comprehensive MEP intelligence briefing | mepId (required), period? |
coalition_analysis |
Coalition dynamics and voting bloc analysis | policyArea?, period? |
legislative_tracking |
Legislative procedure tracking report | procedureId?, committee? |
political_group_comparison |
Multi-dimensional group comparison | groups? |
committee_activity_report |
Committee workload and engagement | committeeId (required) |
voting_pattern_analysis |
Voting pattern trend detection | topic?, mepId? |
country_delegation_analysis |
Country delegation composition and activity | country (required), period? |
Direct data access via EP resource URIs:
| Resource URI | Description |
|---|---|
ep://meps |
List of all current MEPs |
ep://meps/{mepId} |
Individual MEP profile |
ep://committees/{committeeId} |
Committee information |
ep://plenary-sessions |
Recent plenary sessions |
ep://votes/{sessionId} |
Voting records for a session |
ep://political-groups |
Political group listing |
ep://procedures/{procedureId} |
Legislative procedure details |
ep://plenary/{plenaryId} |
Single plenary session details |
ep://documents/{documentId} |
Legislative document details |
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.
| Country | Server | Data Source | Coverage |
|---|---|---|---|
| ๐ช๐บ European Union | European Parliament MCP Server | data.europarl.europa.eu | MEPs, votes, legislation, committees, questions โ 47 tools (15 OSINT) |
| ๐บ๐ธ United States | Congress.gov API MCP Server | congress.gov | Bills, members, votes, committees (TypeScript, v3 API) |
| ๐บ๐ธ United States | CongressMCP | congress.gov | Real-time Congress data โ bills, votes, members |
| ๐บ๐ธ United States | Congress.gov MCP | congress.gov | Unofficial Congress.gov API access |
| ๐ฌ๐ง United Kingdom | Parliament MCP | parliament.uk | Hansard, members, debates, divisions |
| ๐ธ๐ช Sweden | Riksdag & Regering MCP | riksdagen.se | Swedish Parliament & Government data (used by riksdagsmonitor.com) |
| ๐ณ๐ฑ Netherlands | OpenTK MCP | tweedekamer.nl | Dutch Parliament (Tweede Kamer) documents |
| ๐ต๐ฑ Poland | Parliament of Poland MCP | sejm.gov.pl | Members, votes, committees |
| ๐ต๐ฑ Poland | Sejm MCP | api.sejm.gov.pl | Parliament data + legislation |
| ๐ฎ๐ฑ Israel | Knesset MCP Server | knesset.gov.il | Knesset parliament API |
| ๐ง๐ท Brazil | Senado BR MCP | senado.leg.br | Federal Senate โ members, proposals, votes |
| Country | Server | Data Source | Coverage |
|---|---|---|---|
| ๐บ๐ธ United States | USA Spending MCP | usaspending.gov | Federal spending data |
| ๐บ๐ธ United States | Open Census MCP | census.gov | Demographics & statistics (natural language) |
| ๐บ๐ธ United States | Data.gov MCP Server | data.gov | Federal dataset catalog |
| ๐บ๐ธ United States | CMS Data.gov MCP | data.cms.gov | Healthcare data โ search/filter/pagination |
| ๐บ๐ธ United States | SEC EDGAR MCP | sec.gov | SEC filings โ annual reports, insider data |
| ๐บ๐ธ United States | NPS MCP | nps.gov | National Park Service API |
| ๐ธ๐ช Sweden | SCB MCP Server | scb.se | Official Swedish statistics |
| ๐ธ๐ช Sweden | Skolverket MCP | skolverket.se | Swedish National Agency for Education |
| ๐ซ๐ท France | data.gouv.fr MCP | data.gouv.fr | National open data platform |
| ๐ซ๐ท France | Data Gouv MCP Server | data.gouv.fr | Companies & organizations search |
| ๐ฌ๐ง United Kingdom | Planning Data MCP | planning.data.gov.uk | Planning & land use data |
| ๐ฌ๐ง United Kingdom | Property Prices MCP | landregistry.data.gov.uk | Housing price search |
| ๐ณ๐ฑ Netherlands | CBS Open Data MCP | cbs.nl | Dutch statistics bureau |
| ๐ฎ๐ฑ Israel | Data.gov.il MCP | data.gov.il | National CKAN data portal |
| ๐ฎ๐ฑ Israel | DataGov Israel MCP | data.gov.il | Alternative implementation + visualization |
| ๐ฎ๐ฑ Israel | Israel Statistics MCP | cbs.gov.il | CPI & economic time series |
| ๐ฎ๐ฑ Israel | BudgetKey MCP | open-budget.org.il | State budget, contracts, grants |
| ๐น๐ท Turkey | Mevzuat MCP | mevzuat.gov.tr | Legislation system โ search/retrieve laws |
| ๐ญ๐ฐ Hong Kong | HK Data.gov.hk MCP | data.gov.hk | Hong Kong open data portal |
| ๐ฒ๐พ Malaysia | Data.gov.my MCP | data.gov.my | National data portal |
| ๐ฎ๐ณ India | Data.gov.in MCP | data.gov.in | Semantic search + dataset access |
| ๐ธ๐ฌ Singapore | Gahmen MCP Server | data.gov.sg | Government datasets + CKAN search |
| ๐ธ๐ฌ Singapore | Singapore Data MCPs | data.gov.sg | Multiple servers (parking, health, datasets) |
| ๐ฆ๐บ Australia | ABS MCP Server | abs.gov.au | Bureau of Statistics (SDMX-ML) |
| Scope | Server | Platform | Coverage |
|---|---|---|---|
| ๐ Global (CKAN) | CKAN MCP Server | CKAN portals | Generic server for any CKAN-based open data portal |
| ๐ Global (Socrata) | OpenGov MCP Server | Socrata portals | City/county/state/federal Socrata-powered portals |
| 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 metrics | N/A | N/A | N/A |
| Political landscape | โ Parliament-wide situational awareness | โ | โ | โ |
| Attendance tracking | โ Trend detection + engagement scoring | โ | โ | โ |
| GDPR compliance | โ Privacy-first design | N/A | N/A | โ |
| MCP prompts & resources | โ 7 prompts + 9 resources | โ | โ | โ |
| Tool count | 47 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.
All European Parliament Open Data API v2 endpoint categories are fully covered:
| Category | Endpoints | MCP Tools |
|---|---|---|
| MEPs | /meps, /meps/{id}, /meps/show-current, /meps/show-incoming, /meps/show-outgoing, /meps/show-homonyms |
get_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-current |
get_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-items |
get_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}/events |
get_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-items |
search_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 |
This project aligns with Hack23 AB's Information Security Management System (ISMS):
This project achieves SLSA Level 3 compliance:
gh attestation verify <artifact> --owner Hack23 --repo European-Parliament-MCP-ServerSee ATTESTATIONS.md for verification instructions and security benefits.
# 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
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
# 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.
# 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
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}%`);
Symptom: ECONNREFUSED, ETIMEDOUT, or Network error from tools.
Solutions:
curl https://data.europarl.europa.eu/api/v2/meps?limit=1data.europarl.europa.eu:443Symptom: 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:
command path in your MCP client config points to the correct binarynpx: ensure european-parliament-mcp-server is in your npm registrynode: use the absolute path to dist/index.jsSymptom: 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
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
We welcome contributions! Please see CONTRIBUTING.md for details on:
This repository includes custom agents and skills for GitHub Copilot:
We follow Semantic Versioning and use automated release management:
Version Types:
Automated Release Workflow:
Release Notes Include:
For detailed workflow documentation, see .github/WORKFLOWS.md.
๐ฐ 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.
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
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.
%%{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
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
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
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.
| Year | Total Workflows | AI Model | Key Capability | Tools |
|---|---|---|---|---|
| 2026 | 44โ50 | Opus 4.6โ4.9 | ๐ค Agentic news generation, AI-authored briefings | 46โ55 |
| 2027 | 50โ55 | Opus 5.x | ๐ Predictive analytics, coalition forecasting | 55โ65 |
| 2028 | 55โ65 | Opus 6.x | ๐ฅ Multi-modal content, video/speech analysis | 65โ80 |
| 2029 | 65โ75 | Opus 7.x | โก Autonomous pipeline, self-optimizing CI/CD | 80โ90 |
| 2030 | 75โ85 | Opus 8.x | ๐ง Near-expert analysis, domain specialist AI | 90โ100 |
| 2031โ2033 | 85โ100 | Opus 9โ10.x / Pre-AGI | ๐ Global coverage, all EU national parliaments | 100โ120 |
| 2034โ2037 | 100โ120+ | AGI / Post-AGI | ๐ Transformative platform, 195 parliaments | 120โ200+ |
| Pillar | Description | Safeguard |
|---|---|---|
| ๐ค Autonomous Analysis | AGI-powered real-time political intelligence across all 195 parliamentary systems | Human analyst review for high-stakes assessments |
| ๐ Universal Language | Every UN language supported natively with legal terminology precision | Multi-cultural fairness auditing at every release |
| ๐ Predictive Governance | Policy impact prediction before legislation is proposed | Confidence intervals and uncertainty quantification mandatory |
| โ๏ธ Ethical AI Governance | Human oversight maintained regardless of AI capability level | ISMS-aligned escalation protocols, transparency reports |
| ๐ก๏ธ Democratic Safeguards | Platform architecture prevents weaponization or manipulation | Quarterly red-team exercises, sovereignty-first data policies |
%%{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
For deep dives into specific evolution tracks, see:
| Document | Focus | Link |
|---|---|---|
| ๐ง Future Mind Map | Capability expansion vision, AI analysis, OSINT evolution | FUTURE_MINDMAP.md |
| โ๏ธ Future Workflows | CI/CD evolution, AI-augmented pipelines, 2027โ2037 roadmap | FUTURE_WORKFLOWS.md |
| ๐๏ธ Future Architecture | Platform architecture evolution, AWS deployment, federation | FUTURE_ARCHITECTURE.md |
| ๐ก๏ธ Future Security | Security maturity roadmap, quantum-ready encryption | FUTURE_SECURITY_ARCHITECTURE.md |
| ๐ Future Data Model | Enhanced data structures, graph databases, temporal models | FUTURE_DATA_MODEL.md |
| ๐ผ Future SWOT | Strategic positioning, competitive analysis, market evolution | FUTURE_SWOT.md |
This project is licensed under the Apache License 2.0 - see LICENSE.md for details.
Built with โค๏ธ by Hack23 AB
Demonstrating security excellence through transparent open source