european-parliament-mcp-serverBLOCK
European Parliament MCP Server - Political intelligence for AI agents
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
🏛️ 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 atte
619eae3cfaf8OBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add european-parliament-mcp-server -- npx -y [email protected]
{
"mcpServers": {
"european-parliament-mcp-server": {
"command": "npx",
"args": [
"-y",
"[email protected]"
]
}
}
}Exposed tools (59)
59 read · 0 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
analyze_coalition_dynamics | read | Analyze political group coalition dynamics including cohesion rates, cross-party alliances, defection rates, and stress indicators. Computes parliamentary fragmentation index, effective number of parties, grand coalition viability, and opposition strength. Uses CIA Coalition Analysis methodology. |
analyze_committee_activity | read | Analyze European Parliament committee workload, meeting frequency, document production, decisions adopted, legislative output, and member engagement. Fans out four EP sources in parallel with per-source timeouts and reports data availability per source. |
analyze_country_delegation | read | Analyze a country\ |
analyze_legislative_effectiveness | read | Analyze legislative effectiveness of an MEP or committee using real EP Open Data Portal sources. |
analyze_voting_patterns | read | Analyze MEP voting behavior including voting alignment with political group, cross-party voting patterns, attendance rates, and topic-based voting analysis. Returns comprehensive voting statistics and patterns over a specified time period. |
coalition_analysis | read | Analyze coalition dynamics and voting blocs in the European Parliament, identifying cross-party alliances and emerging political alignments. |
committee | read | Committee abbreviation to filter by |
committeeId | read | Committee abbreviation (e.g., |
committee_activity_report | read | Generate an activity report for a European Parliament committee, covering meetings, documents produced, legislative opinions, and member engagement. |
comparative_intelligence | read | Cross-reference 2-10 MEP activities across voting, committee, legislative, and attendance dimensions. Returns ranked profiles, correlation matrix, outlier detection, and cluster analysis for comprehensive comparative intelligence. |
compare_political_groups | read | Compare political groups across multiple dimensions: voting discipline, activity level, legislative output, attendance, and cohesion. Returns rankings, computed performance scores, seat share, effectiveness per member, parliamentary balance index, and competitive index. |
correlate_intelligence | read | Cross-tool OSINT intelligence correlation engine. Combines outputs from |
country | read | EU member state name or ISO country code |
country_delegation_analysis | read | Analyse the MEP delegation from a specific EU member state, including voting cohesion, committee presence, legislative contribution, and cross-party dynamics. |
early_warning_system | read | Detect emerging political shifts, coalition fracture signals, and unusual patterns. Generates warnings with severity levels (CRITICAL/HIGH/MEDIUM/LOW), computes stability score (0-100), trend indicators, and overall risk level. Configurable sensitivity and focus area. |
generate_political_landscape | read | Generate a comprehensive political landscape overview of the European Parliament — group sizes, seat shares, coalition dynamics, bloc analysis, and power balance. Single-call situational awareness for strategic intelligence. |
generate_report | read | Generate comprehensive analytical reports on European Parliament data. Supports MEP activity reports, committee performance reports, voting statistics, and legislation progress reports. Returns structured report with summary, sections, statistics, and recommendations. |
get_adopted_texts | read | Get European Parliament adopted texts including legislative resolutions, positions, and non-legislative resolutions. Supports single document lookup by docId or list with year filter. Data source: European Parliament Open Data Portal. |
get_all_generated_stats | read | Retrieve precomputed European Parliament activity statistics (2004-2026) with monthly breakdowns, |
get_committee_documents | read | Get European Parliament committee documents. Supports single document lookup by docId or paginated list. Note: The EP API /committee-documents endpoint does not support year filtering. Data source: European Parliament Open Data Portal. |
get_controlled_vocabularies | read | Get European Parliament controlled vocabularies (standardized classification terms). Supports single vocabulary lookup by vocId. Data source: European Parliament Open Data Portal. |
get_current_meps | read | Get currently active Members of European Parliament (today |
get_external_documents_feed | read | Get recently updated external documents (non-EP documents) from the feed. Returns external documents published or updated during the specified timeframe. Data source: European Parliament Open Data Portal. |
get_homonym_meps | read | Get homonym Members of European Parliament (MEPs with identical names) for the current parliamentary term. Useful for name disambiguation. Data source: European Parliament Open Data Portal. |
get_incoming_meps | read | Get incoming Members of European Parliament for the current parliamentary term. Returns MEPs who are newly joining. Data source: European Parliament Open Data Portal. |
get_meeting_activities | read | Get activities linked to a specific EP plenary sitting (debates, votes, presentations). Requires a sitting ID. Note: this endpoint can be slower than decisions; use a smaller limit for faster responses. Data source: European Parliament Open Data Portal. |
get_meeting_decisions | read | Get decisions made in a specific EP plenary sitting. Returns adopted decisions and voting outcomes. Requires a sitting ID. Data source: European Parliament Open Data Portal. |
get_meeting_foreseen_activities | read | Get foreseen (planned) activities for a specific EP meeting/plenary sitting. Returns scheduled agenda items. Note: this endpoint can be slower than decisions; use a smaller limit for faster responses. Data source: European Parliament Open Data Portal. |
get_meeting_plenary_session_document_items | read | Get plenary session document items for a specific EP meeting/plenary sitting. Returns individual agenda item documents for the meeting. Note: this endpoint can be slower than decisions; use a smaller limit for faster responses. Data source: European Parliament Open Data Portal. |
get_meeting_plenary_session_documents | read | Get plenary session documents for a specific EP meeting/plenary sitting. Returns session documents associated with the meeting. Note: this endpoint can be slower than decisions; use a smaller limit for faster responses. Data source: European Parliament Open Data Portal. |
get_mep_declarations | read | Get MEP declarations of financial interests filed under the Rules of Procedure. Supports single declaration lookup by docId or list with year filter. Data source: European Parliament Open Data Portal. GDPR: Access is audit-logged. |
get_mep_declarations_feed | read | Get recently updated MEP declarations from the feed. Returns declarations published or updated during the specified timeframe. Data source: European Parliament Open Data Portal. |
get_mep_details | read | Retrieve the complete EP API v2 profile for a Member of European Parliament, including biographical data, mandates, organizations, committee classifications, and leadership roles. Personal data access is logged for GDPR compliance. |
get_meps | read | Retrieve Members of European Parliament with optional filters (country, political group, committee, active status). Returns paginated results with MEP details including name, country, political group, committees, and contact information. |
get_outgoing_meps | read | Get outgoing Members of European Parliament for the current parliamentary term. Returns MEPs who are leaving parliament. Data source: European Parliament Open Data Portal. |
get_parliamentary_questions | read | Retrieve European Parliament questions (written and oral) submitted by MEPs, or a single question by docId. Filter by question type, author, topic, status (pending/answered), and date range. Returns question text, answers if available, and metadata. |
get_plenary_documents | read | Get European Parliament plenary documents. Supports single document lookup by docId or list with year filter. Data source: European Parliament Open Data Portal. |
get_plenary_session_document_items | read | Get European Parliament plenary session document items. Returns individual items within plenary session documents. Data source: European Parliament Open Data Portal. |
get_plenary_session_documents | read | Get European Parliament plenary session documents (agendas, minutes, voting lists). Supports single document lookup by docId. Data source: European Parliament Open Data Portal. |
get_plenary_sessions | read | Retrieve European Parliament plenary sessions/meetings. Supports single meeting lookup by eventId or list with year, date, and location filters. Returns session details including date, location, agenda items, voting records, and attendance statistics. |
get_procedure_event_by_id | read | Get a specific event linked to a legislative procedure. Returns a single event for the specified procedure and event identifiers. Data source: European Parliament Open Data Portal. |
get_procedure_events | read | Get events linked to a specific EP legislative procedure (hearings, debates, votes). Returns the timeline of events for a procedure. Data source: European Parliament Open Data Portal. |
get_procedures | read | Get European Parliament legislative procedures. Supports single procedure lookup by processId or paginated list. Note: The EP API /procedures endpoint does not support year filtering. Data source: European Parliament Open Data Portal. |
get_procedures_feed | read | Get recently updated European Parliament procedures from the feed. Returns procedures published or updated during the specified timeframe. Data source: European Parliament Open Data Portal. NOTE: The EP API procedures/feed endpoint is significantly slower than other feeds — |
get_server_health | read | Check server health and feed availability status. Returns server version, uptime, |
get_speeches | read | Get European Parliament plenary speeches and debate contributions. Supports single speech lookup by speechId or list with date range filtering (dateFrom/dateTo mapped to EP API sitting-date/sitting-date-end). Data source: European Parliament Open Data Portal. |
groups | read | Comma-separated political group names (e.g., |
legislative_tracking | read | Track and analyze the progress of legislative procedures through the European Parliament, including committee stages, amendments, and voting outcomes. |
mepId | read | MEP identifier |
mep_briefing | read | Generate a comprehensive MEP intelligence briefing covering voting record, committee roles, legislative activity, and influence assessment. |
period | read | Analysis period (e.g., |
policyArea | read | Policy area to focus on (e.g., |
political_group_comparison | read | Compare political groups across voting discipline, legislative output, attendance, and cohesion metrics. |
procedureId | read | Legislative procedure identifier |
search_documents | read | Search European Parliament legislative documents by keyword, or retrieve a single document by docId. Filter by document type (REPORT, RESOLUTION, DECISION, DIRECTIVE, REGULATION, OPINION), date range, and committee. Returns document metadata including title, authors, status, and PDF/XML links. |
topic | read | Policy topic or keyword |
track_legislation | read | Track European Parliament legislative procedure progress including current status, timeline of stages, committee assignments, amendments, voting records, and next steps. Provides comprehensive overview of legislation journey from proposal to adoption. |
track_mep_attendance | read | Track and analyze MEP attendance patterns across plenary sessions. Provides attendance rates, trends, and engagement categorization. Filter by individual MEP, country, or political group. |
voting_pattern_analysis | read | Analyze voting patterns to identify trends, anomalies, and cross-party alignments on specific policy topics. |
Trust audit
BLOCKgrade F · trust 50/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (5 observation(s))
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- found
Findings (25)
| **3** | **MCP Protocol Abuse (AI Jailbreak)**<br/>(T1059, T1480) | €500 – €2,000 | 0.2 – 0.5 | **€100 – €1,000** | **Medium** | **SLE:** Service disruption (rate-limit exhaustion) + incident-respons
| **3** | **MCP Protocol Abuse (AI Jailbreak)**<br/>(T1059 Command and Scripting Interpreter, T1480 Execution Guardrails Bypass) | 🤖 Malicious AI User<br/>🔬 Security Researcher | Crafted prompts causi
### Scenario 3: MCP Protocol Abuse (AI Jailbreak)
html.meta.json.gz
outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);`;var m;c&&(m=i.ownerDocument.defaultView.scrollY),r.input.focus(),c&&i.ownerDocument.defaultVie
`,Nfr:()=>ky,NoBreak:()=>``,NonBreakingSpace:()=>`\xA0`,Nopf:()=>`N`,Not:()=>`⫬`,NotCongruent:()=>`≢`,NotCupCap:()=>`≭`,NotDoubleVerticalBar:()=>`∦`,NotElement:()=>`∉`,NotEqual:()=>`≠`,NotEqualTilde:(
`,nexist:`∄`,nexists:`∄`,Nfr:ky,nfr:Ay,ngE:jy,nge:`≱`,ngeq:`≱`,ngeqq:My,ngeqslant:Ny,nges:Py,nGg:Fy,ngsim:`≵`,nGt:Iy,ngt:`≯`,ngtr:`≯`,nGtv:Ly,nharr:`↮`,nhArr:`⇎`,nhpar:`⫲`,ni:`∋`,nis:`⋼`,nisd:`⋺`,niv:
const API_KEY = "sk-hardcoded-key-12345";
const API_KEY = "sk_live_abc123def456";
const API_KEY = "sk-hardcoded-key-12345";
const API_KEY = "sk_live_abc123def456";
.env.test
.prettierrc.json
.sonarcloud.properties
.nojekyll
.nojekyll
import { OsintStandardOutputSchema } from '../../../src/schemas/europeanParliament.js';vi.mock('../../../src/clients/europeanParliamentClient.js', () => ({vi.mock('../../../src/clients/ep/doceoClient.js', () => ({import * as epClientModule from '../../../src/clients/europeanParliamentClient.js';
import * as doceoClientModule from '../../../src/clients/ep/doceoClient.js';
expect(() => validateApiUrl('https://127.0.0.1/api/')).toThrow(expect(() => validateApiUrl('https://127.0.0.2/api/')).toThrow(expect(() => validateApiUrl('https://127.1.2.3/api/')).toThrow(expect(() => validateApiUrl('https://169.254.0.1/api/')).toThrow(Gates applied: instruction_override, no_behavioural_pass.
619eae3cfaf8full audit observations/trust-audit/mcp-server/hack23__european-parliament-mcp-server.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | 619eae3cfaf8 | BLOCK | F | 50 | first audit |
Questions
What is the european-parliament-mcp-server MCP server?
European Parliament MCP Server - Political intelligence for AI agents
What tools does european-parliament-mcp-server expose?
59 in total: 59 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is european-parliament-mcp-server safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (50/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does european-parliament-mcp-server need?
No credential environment variables were found in its source, so it appears to need none.
How does european-parliament-mcp-server run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as european-parliament-mcp-server at 1.4.62.
How current is this page?
The grade is for one exact copy of the source (619eae3cfaf8), read on 2026-10-12. The repository is watched and re-audited when it changes.