European Parliament Mcp Server
Hack23/European-Parliament-MCP-Server · 28 stars · TypeScript · Apache-2.0
MCP server European Parliament MCP Server - EU political intelligence for AI agents
Install
The repo has no one-line install. Follow its README.
Files
🏛️ European Parliament MCP Server
Model Context Protocol Server for European Parliament Open Data
🇪🇺 EU parliamentary intelligence for AI agents · 🕵️ 15 OSINT analytics tools · 🏛️ Full EP API v2 coverage · 🛡️ ISMS-aligned · 🔒 GDPR-by-design · 📦 SLSA Level 3
The canonical TypeScript MCP bridge between the European Parliament Open Data Portal and any MCP-aware AI client — Claude Desktop, VS Code, Cursor, GitHub Copilot. Powers the EU Parliament Monitor AI newsroom and is a sister project to Riksdagsmonitor in the Hack23 political-intelligence portfolio.
|
|
Model Context Protocol Server for European Parliament Open Data — providing AI assistants with structured access to MEPs, plenary sessions, committees, legislative documents, and parliamentary questions through a secure, type-safe TypeScript implementation. MEP influence scoring (5-dimension model), Coalition cohesion & stress analysis, Party defection & anomaly detection, Cross-group comparative analysis, MEP/committee legislative scoring, Pipeline status & bottleneck detection, Committee workload & engagement analysis, MEP attendance patterns & trends, Country delegation voting & composition, Parliament-wide political landscape 📂 Repository • ✨ Features • 📚 Documentation • 📦 npm |
📊 Quality Metrics & Documentation
📋 Overview
The European Parliament MCP Server implements the Model Context Protocol (MCP) to provide AI assistants, IDEs, and other MCP clients with structured access to European Parliament open datasets. Access information about MEPs, plenary sessions, committees, legislative documents, and parliamentary questions through a secure, type-safe TypeScript/Node.js implementation.
🎯 Key Features
- 🔌 Full MCP Implementation: 63 tools (9 core + 3 advanced + 15 OSINT + 8 Phase 4 + 15 Phase 5 + 13 feed), 9 Resources, and 7 Prompts
- 🏛️ Complete EP API v2 Coverage: All European Parliament Open Data API endpoints covered
- 🕵️ OSINT Intelligence: MEP influence scoring, coalition analysis, anomaly detection
- 🔒 Security First: ISMS-compliant, GDPR-ready, SLSA Level 3 provenance
- 🚀 High Performance: <200ms API responses, intelligent caching, rate limiting
- 📊 Type Safety: TypeScript strict mode + Zod runtime validation
- 🧪 Well-Tested: 80%+ code coverage, 1130+ unit tests, 71 E2E test cases
- 📚 Complete Documentation: Architecture, TypeDoc API (HTML + Markdown), security guidelines
🔧 Current Stack
- Runtime: Node.js 26.x
- Primary compiler: TypeScript 7 RC via the
typescript-7alias (node_modules/typescript-7/bin/tsc) - Compatibility layer:
@typescript/typescript6remains available so existing 6.x-based tooling can continue usingtsc6and the TypeScript 6 API - Core platform:
@modelcontextprotocol/sdk1.29.0,zod4.4.3,vitest4.1.10
🌍 Hack23 Political Intelligence Ecosystem
This MCP server is the EU data backbone of Hack23's mission to disrupt parliamentary journalism with AI-generated political intelligence and real-time accountability analysis — increasing democratic transparency through structured open-source intelligence (OSINT) tradecraft applied to public legislative data.
🎯 Vision: AI-Powered Democratic Transparency
Hack23 AB builds open-source intelligence platforms that put rigorous, evidence-based political analysis in the hands of every citizen, journalist, researcher and policymaker. By combining MCP servers, agentic AI newsrooms, and open parliamentary data, we produce automated intelligence products — coalition analysis, voting-pattern decoding, MEP/MP influence scoring, legislative-pipeline forecasting — that previously required well-funded lobbying organisations or in-house policy units to generate.
"Democratising access to political intelligence — what used to require a team of analysts can now be done by any citizen with an AI assistant."
The portfolio is non-partisan, fully open-source (Apache-2.0), operated under the Hack23 ISMS with full ISO 27001:2022 / NIST CSF 2.0 / CIS Controls v8.1 alignment, GDPR-by-design, and architecturally engineered so it cannot be weaponised for partisan influence: equal treatment of all political groups, public-data only, no user accounts, no ads, no tracking.
🧭 The Ecosystem at a Glance
%%{init: {"theme":"base","themeVariables":{"primaryColor":"#6366f1","primaryTextColor":"#fff","primaryBorderColor":"#4f46e5","lineColor":"#94a3b8","secondaryColor":"#003399","tertiaryColor":"#00338d","background":"#0f172a"}}}%%
graph LR
subgraph SOURCES["📡 Primary Open-Data Sources"]
EP["🇪🇺 European Parliament<br/>Open Data Portal v2<br/><i>data.europarl.europa.eu</i>"]
RD["🇸🇪 Riksdagen Open Data<br/><i>data.riksdagen.se</i>"]
REG["🇸🇪 Regeringskansliet<br/><i>regeringen.se</i>"]
IMF["💰 IMF / World Bank<br/><i>economic context</i>"]
end
subgraph MCP["🔌 MCP Servers"]
EPMCP["<b>European-Parliament-<br/>MCP-Server</b><br/>63 tools · 9 resources<br/>7 prompts · TS strict<br/><i>(this repository)</i>"]
RRMCP["riksdag-regering MCP<br/>32+ tools"]
end
subgraph PRODUCTS["📰 AI-Driven Public Platforms"]
EUPM["🏛️ <b>EU Parliament Monitor</b><br/>euparliamentmonitor.com<br/>8 unified gh-aw workflows<br/>51-artifact analysis<br/>14 languages"]
RM["🗳️ <b>Riksdagsmonitor</b><br/>riksdagsmonitor.com<br/>11 agentic workflows<br/>91 skills · 14 languages<br/>Tidö coalition tracker"]
CIA["🕵️ <b>Citizen Intelligence<br/>Agency (CIA)</b><br/>Java/Spring backend<br/>15 subsystems · 1971–2024<br/>3.5M votes · 109K docs"]
end
subgraph CITIZENS["👥 Citizens · Journalists · Researchers · NGOs"]
AUDIENCE["AI assistants · Dashboards · 14-language news · Intelligence briefings"]
end
EP --> EPMCP
RD --> RRMCP
REG --> RRMCP
EPMCP --> EUPM
RRMCP --> RM
RM <-->|"15 CIA subsystems<br/>nightly sync"| CIA
IMF -.->|"economic context"| EUPM
IMF -.->|"economic context"| RM
EUPM --> AUDIENCE
RM --> AUDIENCE
CIA --> AUDIENCE
EPMCP -.->|"AI assistants<br/>Claude · Cursor · VS Code"| AUDIENCE
style EPMCP fill:#6366f1,stroke:#4f46e5,color:#fff,stroke-width:3px
style EP fill:#003399,stroke:#ffcc00,color:#fff
style RD fill:#00338d,stroke:#fecc00,color:#fff
style REG fill:#00338d,stroke:#fecc00,color:#fff
style EUPM fill:#003399,stroke:#ffcc00,color:#fff
style RM fill:#00338d,stroke:#fecc00,color:#fff
style CIA fill:#1b5e20,stroke:#43a047,color:#fff
style AUDIENCE fill:#7b1fa2,stroke:#9c27b0,color:#fff
Loading
This MCP server's role: the canonical, type-safe TypeScript bridge between the European Parliament Open Data Portal and any MCP-aware AI client (Claude Desktop, VS Code, Cursor, GitHub Copilot) — and the upstream data layer that powers the EU Parliament Monitor newsroom. Every tool is Zod-validated, audit-logged, GDPR-aware, and SLSA Level 3 attested.
🗂️ Portfolio Comparison Matrix
| Project | Scope | Audience | Links |
|---|---|---|---|
|
🇪🇺 European-Parliament-MCP-Server (this repo) |
EU Parliament data layer for AI agents 62 MCP tools · 9 resources · 7 prompts · OSINT analytics Source: data.europarl.europa.eu |
Developers · AI assistants · Journalists · Researchers |
📦 npm 💻 GitHub |
| 🏛️ EU Parliament Monitor |
Daily AI-generated EP intelligence in 14 languages 8 unified gh-aw workflows · 51-artifact analysis pipeline Source: this MCP server (60+ tools) + IMF + World Bank |
Citizens · Journalists · NGOs across all 27 EU member states |
🌐 euparliamentmonitor.com 🧠 Intelligence Hub 📚 API Reference 💻 GitHub |
| 🗳️ Riksdagsmonitor |
Daily AI-generated Swedish parliamentary intelligence 11 agentic workflows · 91 skills · 50+ years of evidence (1971–2024) · Tidö coalition fragility tracker Source: riksdag-regering MCP (32+ tools) + SCB + IMF + World Bank + CIA exports
|
Swedish citizens · Nordic journalists · Election researchers |
🌐 riksdagsmonitor.com 🧠 Intelligence 📰 AI Newsroom 📊 Dashboard 💻 GitHub |
| 🕵️ Citizen Intelligence Agency (CIA) |
15-subsystem Java/Spring political-analytics backend 349 current MPs · 2,494 historical politicians · 3.5M+ votes · 109k+ documents · 45-rule risk engine Source: data.riksdagen.se direct + Valmyndigheten + ESV
|
Hack23 platform consumers (Riksdagsmonitor) · OSINT analysts |
🌐 hack23.github.io/cia 💻 GitHub |
🇪🇺 EU Parliament Monitor — euparliamentmonitor.com
European Parliament Political Intelligence Platform — 🧠 Political intelligence · 🔍 Radical transparency · 🗳️ Democratic accountability · 🤖 AI-generated news in 14 languages
|
|
EU Parliament Monitor turns the EP's own open data into auditable political intelligence — and publishes it as readable news in 14 languages, every day, fully sourced. An AI-driven newsroom that monitors plenary sessions, committee work, motions, propositions, urgency files and the forward calendar; produces Economist-style analytical articles backed by 51 structured analysis artifacts per run; and exposes every methodology, template and analysis tree publicly so any reader, journalist or NGO can verify the analysis behind the prose. Powered by this repository — consumes the European-Parliament-MCP-Server (60+ EP data tools) plus IMF + World Bank for economic context, with built-in fallback to the EP Open Data Portal
|
🗳️ Riksdagsmonitor — riksdagsmonitor.com
Swedish Political Intelligence Platform — 🕵️ Political intelligence · 🔍 Democratic transparency · 🤖 AI-generated news · 📊 50+ years of evidence
|
|
Riksdagsmonitor monitors Sweden's Riksdag (Parliament), the Government (Regeringskansliet) and public agencies (Myndigheter) with structured intelligence techniques — ACH, SWOT, PESTLE, STRIDE, political-risk scoring and OSINT/INTOP tradecraft — applied to 349 current MPs, 2,494 historical politicians (1971–2024), 3.5M+ votes and 109,000+ parliamentary documents. An autonomous AI newsroom — 11 agentic workflows, Claude Opus, zero human editors — turns this evidence into publication-ready intelligence articles in 14 languages, every day. Front-loads the live Tidö Agreement coalition status (176/349 seats, fragility indicators, CIA risk alerts) and dives into 40 years of election-cycle intelligence (1994–2034), party performance (1990–2026, 8 parties), 15 committee networks, seasonal Z-score anomaly detection, ministry risk and a 45-rule × 349-MP live risk heat map.
|
🕵️ Citizen Intelligence Agency (CIA)
Political transparency platform — Java/Spring data backbone behind Riksdagsmonitor's historical evidence layer
|
The Citizen Intelligence Agency is the Java/Spring Boot political-analytics backend that supplies 15 CIA subsystems (anomaly · coalition · committee · distribution · election · election-cycle · ministry · parties · party · percentile · politician · pre-election · risk · seasonal · voting) consumed nightly by Riksdagsmonitor. It is the primary historical-evidence layer for Swedish political activity with 50+ years of voting records (1971–2024), 2,494 historical politicians, 349 current MPs, 3.5M+ votes, 109,000+ documents, 8,740 committee documents, and a 45-rule transparency engine tracking 2,308 identified rule violations across 8 Riksdag-represented parties. 📂 Repository · 🌐 GitHub Pages · 📊 JSON Export Specs · ✨ Features · 📚 Documentation |
🌍 Shared Across the Portfolio
| Dimension | Coverage |
|---|---|
| 🌐 Languages | 14 — English · Swedish · Danish · Norwegian · Finnish · German · French · Spanish · Dutch · Arabic (RTL) · Hebrew (RTL) · Japanese · Korean · Chinese |
| ♿ Accessibility | WCAG 2.1 AA · keyboard navigable · screen-reader optimised · 4.5:1 contrast · responsive 320 px → 1440 px+ |
| 🔒 Compliance | ISO 27001:2022 · NIST CSF 2.0 · CIS Controls v8.1 · GDPR · NIS2 · EU CRA |
| 🛡️ Supply chain | SHA-pinned GitHub Actions · step-security/harden-runner · Dependabot · CodeQL · Secret Scanning · SLSA Level 3 · SPDX SBOM |
| 📜 License | Apache License 2.0 across the entire portfolio |
| 🏢 Operator | Hack23 AB (Org.nr 559534-7807) — Swedish cybersecurity & open-source intelligence consultancy |
| 🛡️ ISMS | Hack23 ISMS-PUBLIC — fully documented information-security management system |
🔗 Hack23 Portfolio Quick Links
- 🌐 Live platforms — euparliamentmonitor.com · riksdagsmonitor.com · hack23.github.io/cia · hack23.com
- 🧠 Political Intelligence Hubs — EU Parliament · Riksdag
- 📂 Source repositories — European-Parliament-MCP-Server · euparliamentmonitor · riksdagsmonitor · cia · ISMS-PUBLIC
- 📦 npm packages —
european-parliament-mcp-server·euparliamentmonitor·riksdagsmonitor - 📰 Blog & company — Hack23 blog · LinkedIn — Hack23 AB · founder James Pether Sörling, CISSP, CISM
- 🤖 AI-readable wikis — DeepWiki: European-Parliament-MCP-Server · DeepWiki: euparliamentmonitor · DeepWiki: riksdagsmonitor · DeepWiki: cia
🔐 Security & Compliance
🚀 Quick Start
Run with npx (No Installation Required)
npx -y european-parliament-mcp-server
Prerequisites
- Node.js 26.x or higher
- npm 10.x or higher
Installation
Option 1: Install from npm (Recommended)
# Install the package globally npm install -g european-parliament-mcp-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": "npx",
"args": ["-y", "european-parliament-mcp-server"]
}
}
}
Cursor IDE Configuration
Add to ~/.cursor/mcp.json (or project-level .cursor/mcp.json):
{
"mcpServers": {
"european-parliament": {
"command": "npx",
"args": ["european-parliament-mcp-server"],
"env": {}
}
}
}
Custom Timeout Configuration
Use --timeout <ms> to override the default 60 s request timeout. This is especially useful in copilot-mcp.json or other contexts where the env field may not reliably propagate:
{
"args": ["european-parliament-mcp-server", "--timeout", "90000"]
}
Precedence: --timeout CLI arg > EP_REQUEST_TIMEOUT_MS env var > default (60 000 ms).
Note: The
procedures/feedandevents/feedendpoints automatically use an extended 120 s timeout because these EP API endpoints are significantly slower than others. If you experience timeouts withone-monthtimeframes, consider using year-based queries (e.g.,get_procedures({ year: 2026 })) as a faster alternative.
📚 Documentation
🌐 Documentation Portal
📖 Complete Documentation Site - Live documentation portal with:
- 📖 API Reference (HTML) - TypeDoc generated API documentation with search, hierarchy 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:
| 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)
Core Documentation
- API Usage Guide - Complete tool documentation with examples
- Architecture Diagrams - C4 model diagrams and data flows
- Troubleshooting Guide - Common issues and solutions
- Developer Guide - Development workflow and contributing
- Deployment Guide - Claude Desktop, VS Code, Docker setup
- Performance Guide - Optimization strategies
- Documentation as Code Guide - How documentation is generated
Additional Documentation
- ARCHITECTURE.md - Complete architecture and design documentation
- SECURITY.md - Security policy and vulnerability disclosure
- SECURITY_HEADERS.md - API security headers implementation
- docs/SBOM.md - Software Bill of Materials documentation
- CONTRIBUTING.md - Contribution guidelines
- CODE_OF_CONDUCT.md - Community code of conduct
- .github/copilot-instructions.md - Development guidelines for GitHub Copilot
- .github/agents/README.md - Custom GitHub Copilot agents
- .github/skills/README.md - Reusable skill patterns
🏗️ 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["🔧 61 Tools<br/>getMEPs · analyzeCoalition<br/>assessMepInfluence · …"]
Resources["📦 9 Resources<br/>ep://meps/\{mepId\}<br/>ep://procedures/\{procedureId\} · …"]
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/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
Loading
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 (63 Total)
63 tools organized by capability — OSINT intelligence first, then analytical, data access, feed endpoints, and reference tools. Every tool includes Zod input validation, caching, and rate limiting.
🗺️ Political Intelligence Coverage Map
graph TB
subgraph OSINT["🕵️ OSINT Intelligence — 15 Tools"]
direction LR
subgraph MEP["MEP Profiling"]
A1["assess_mep_influence"]
A2["comparative_intelligence"]
A3["network_analysis"]
A4["track_mep_attendance"]
end
subgraph COALITION["Coalition Dynamics"]
B1["analyze_coalition_dynamics"]
B2["compare_political_groups"]
B3["detect_voting_anomalies"]
B4["sentiment_tracker"]
end
subgraph STRATEGY["Strategic Warning"]
C1["early_warning_system"]
C2["generate_political_landscape"]
C3["correlate_intelligence"]
end
subgraph LEG_INTEL["Legislative Intelligence"]
D1["analyze_legislative_effectiveness"]
D2["monitor_legislative_pipeline"]
D3["analyze_committee_activity"]
D4["analyze_country_delegation"]
end
end
subgraph ANALYTICS["📊 Advanced Analysis — 4 Tools"]
E1["analyze_voting_patterns"]
E2["track_legislation"]
E3["generate_report"]
E4["get_all_generated_stats"]
end
subgraph DATA["📦 Core EP Data — 30 Tools"]
F1["👤 MEP Tools (7)"]
F2["🏛️ Plenary & Meeting (9)"]
F3["📄 Document Tools (7)"]
F4["⚖️ Legislative (4)"]
F5["🏢 Committee (2)"]
F6["🔧 Diagnostics (1)"]
end
subgraph FEEDS["📡 Real-Time Feeds — 13 Tools"]
G1["13 change monitoring endpoints"]
end
OSINT -->|"enriched by"| ANALYTICS
ANALYTICS -->|"queries"| DATA
DATA -->|"monitors"| FEEDS
style OSINT fill:#d32f2f,stroke:#b71c1c,color:#fff,stroke-width:2px
style ANALYTICS fill:#1565c0,stroke:#0d47a1,color:#fff,stroke-width:2px
style DATA fill:#2e7d32,stroke:#1b5e20,color:#fff,stroke-width:2px
style FEEDS fill:#ff8f00,stroke:#e65100,color:#000,stroke-width:2px
style MEP fill:#e53935,stroke:#c62828,color:#fff,stroke-width:2px
style COALITION fill:#e53935,stroke:#c62828,color:#fff,stroke-width:2px
style STRATEGY fill:#e53935,stroke:#c62828,color:#fff,stroke-width:2px
style LEG_INTEL fill:#e53935,stroke:#c62828,color:#fff,stroke-width:2px
Loading
🎯 OSINT Intelligence Workflow
graph LR
subgraph COLLECT["1️⃣ Collect"]
direction TB
C1["get_meps"]
C2["get_plenary_sessions"]
C3["get_voting_records"]
C4["get_procedures"]
C5["13 feed tools"]
end
subgraph ANALYZE["2️⃣ Analyze"]
direction TB
AN1["analyze_voting_patterns"]
AN2["track_legislation"]
AN3["generate_report"]
AN4["get_all_generated_stats"]
end
subgraph ENRICH["3️⃣ Enrich"]
direction TB
E1["assess_mep_influence"]
E2["analyze_coalition_dynamics"]
E3["detect_voting_anomalies"]
E4["network_analysis"]
E5["analyze_legislative_effectiveness"]
end
subgraph FUSE["4️⃣ Fuse & Alert"]
direction TB
F1["correlate_intelligence"]
F2["early_warning_system"]
F3["generate_political_landscape"]
F4["comparative_intelligence"]
F5["sentiment_tracker"]
end
COLLECT -->|"raw data"| ANALYZE
ANALYZE -->|"structured"| ENRICH
ENRICH -->|"intelligence"| FUSE
style COLLECT fill:#2e7d32,stroke:#1b5e20,color:#fff,stroke-width:2px
style ANALYZE fill:#1565c0,stroke:#0d47a1,color:#fff,stroke-width:2px
style ENRICH fill:#9c27b0,stroke:#7b1fa2,color:#fff,stroke-width:2px
style FUSE fill:#d32f2f,stroke:#b71c1c,color:#fff,stroke-width:2px
Loading
🕵️ OSINT Intelligence Tools (15)
| Tool | Description | Key Parameters | Output |
|---|---|---|---|
correlate_intelligence |
Cross-tool OSINT correlation engine — fuses influence, anomaly, coalition, and network signals into unified intelligence alerts | mepIds (required), groups, sensitivityLevel | Correlated alerts with severity & confidence |
assess_mep_influence |
MEP influence scoring (5-dimension model) | mepId (required), dateFrom, dateTo, includeDetails | Influence scorecard |
detect_voting_anomalies |
Party defection & anomaly detection | mepId, groupId, sensitivityThreshold | Anomaly report |
analyze_coalition_dynamics |
Coalition cohesion & stress analysis | groupIds, dateFrom, minimumCohesion | 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 | groupIds (required), dimensions, dateFrom | Comparison matrix |
analyze_legislative_effectiveness |
MEP/committee legislative scoring | subjectType (required), subjectId (required), dateFrom | Effectiveness score |
monitor_legislative_pipeline |
Pipeline status & bottleneck detection | committee, status, limit | 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 |
📊 Advanced Analysis Tools (4)
| Tool | Description | Key Parameters | Output |
|---|---|---|---|
get_all_generated_stats |
Precomputed EP activity statistics (2004-2026) with rankings, predictions, political landscape, and 30 OSINT-derived intelligence metrics including 3-axis political compass | 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 |
👤 MEP Tools (7)
| 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 country & political group | 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} |
🏛️ Plenary & Meeting Tools (9)
| Tool | Description | Key Parameters | EP API Endpoint |
|---|---|---|---|
get_plenary_sessions |
List plenary sessions/meetings, or single by eventId | dateFrom, dateTo, eventId, year, location | 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, year, dateFrom, dateTo, limit | GET /speeches, GET /speeches/{id} |
get_events |
EP events (hearings, conferences, seminars) | eventId, year, 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 |
🏢 Committee Tools (2)
| 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} |
📄 Document Tools (7)
| 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} |
⚖️ Legislative Procedure Tools (4)
| 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_procedure_event_by_id |
Specific event linked to a legislative procedure | processId (required), eventId (required) | GET /procedures/{id}/events/{event-id} |
get_controlled_vocabularies |
Standardized classification terms | vocId, limit | GET /controlled-vocabularies, GET /controlled-vocabularies/{id} |
📡 Feed Tools (13)
Real-time change feeds for monitoring recently updated data across all EP API categories. Per the EP OpenAPI spec, feeds fall into two groups:
- Configurable-window (6 tools): Accept
timeframe(today,one-day,one-week,one-month,custom) + optionalstartDate - Fixed-window (7 tools): No parameters — return updates from a server-defined default window (typically one month)
Key behaviors:
- All feeds return JSON-LD with
data[],@context[], anddataQualityWarnings[]- Empty feeds (EP API 404 or error-in-body) are converted to empty
data[]with a warning — not errorsget_events_feedandget_procedures_feedalways use a minimum 120s timeout because these endpoints are consistently slow- Fixed-window feeds can be very slow (30–180 s) and often return error-in-body responses
- For configurable feeds, when
timeframeiscustom,startDate(YYYY-MM-DD) is required
Configurable-window feeds:
| Tool | Description | Key Parameters | EP API Endpoint |
|---|---|---|---|
get_meps_feed |
Recently updated MEPs | timeframe, startDate | GET /meps/feed |
get_events_feed |
Recently updated events | timeframe, startDate, activityType | GET /events/feed |
get_procedures_feed |
Recently updated procedures | timeframe, startDate, processType | GET /procedures/feed |
get_adopted_texts_feed |
Recently updated adopted texts | timeframe, startDate, workType | GET /adopted-texts/feed |
get_mep_declarations_feed |
Recently updated MEP declarations | timeframe, startDate, workType | GET /meps-declarations/feed |
get_external_documents_feed |
Recently updated external documents | timeframe, startDate, workType | GET /external-documents/feed |
Fixed-window feeds (no parameters):
| Tool | Description | Key Parameters | EP API Endpoint |
|---|---|---|---|
get_documents_feed |
Recently updated documents | (none) | GET /documents/feed |
get_plenary_documents_feed |
Recently updated plenary documents | (none) | GET /plenary-documents/feed |
get_committee_documents_feed |
Recently updated committee docs | (none) | GET /committee-documents/feed |
get_plenary_session_documents_feed |
Recently updated plenary session docs | (none) | GET /plenary-session-documents/feed |
get_parliamentary_questions_feed |
Recently updated questions | (none) | GET /parliamentary-questions/feed |
get_corporate_bodies_feed |
Recently updated corporate bodies | (none) | GET /corporate-bodies/feed |
get_controlled_vocabularies_feed |
Recently updated vocabularies | (none) | GET /controlled-vocabularies/feed |
🔧 Server Diagnostics (1)
| Tool | Description | Key Parameters | Output |
|---|---|---|---|
get_server_health |
Server health and feed availability status (no upstream API calls) | (none) | Health object |
📖 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 → {groupIds: ["EPP", "S&D"]}
4. Compare groups: compare_political_groups → {groupIds: ["EPP", "S&D", "Renew"]}
5. Pipeline status: monitor_legislative_pipeline → {committee: "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:
Facts
- Kind
- MCP server
- Group
- Uncategorized
- Stars
- 28
- License
- Apache-2.0
- Language
- TypeScript
- Last push
- 2026-10-10
- Forks
- 9
- Topics
- civic-tech, eu-parlament, european-union, mcp, mcp-server, osint, parliamentary-debate, eu, intelligence, political-analysis, political-intelligence, political-science, politics, poltician, ai-agents, ai-driven-insights, ai-skills, gh-aw, typescript, geopolitics
- 1REAio.github.morluto/reaReverse engineer anything from your terminal or agent with one CLI and MCP server.125.3k
- 2com.browser-use/browser-usecom.browser-use/browser-useControl a real Chrome browser to complete any task: fill forms, extract data, book flights.117.7k
- 3World Monitorapp.worldmonitor/mcpLive markets, conflicts, country risk, chokepoints, energy, and China decision signals. 93 tools.88.3k
- 4Scrapling MCP Serverd4vinci/scrapling🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scraplingdev86.9k
- 5Everythingmodelcontextprotocol/serversThis MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test server for builders of MCP clients. It implements prompts, tools, resources, sampling, and more to showcase MCP capabilities.85.8k
- 6Fetchmodelcontextprotocol/serversA Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.85.8k
