riksdag-regering-mcp
v2.0.1
Published
Professionell MCP server för att hämta, söka, analysera och jämföra data från Riksdagen och Regeringskansliet. Innehåller 27 verktyg och 5 resources med säker datavalidering.
Maintainers
Readme
Riksdag-Regering MCP Server v2.0
En professionell Model Context Protocol (MCP) server för att hämta, söka, analysera och jämföra data från Sveriges Riksdag och Regeringskansliet.
Version 2.0 - Omfattande förbättring med säkerhetsvalidering och 13 nya verktyg!
🌐 Remote MCP Server - Denna server stödjer både lokal STDIO och remote HTTP deployment!
📋 Innehåll
- Översikt
- Funktioner
- Installation
- Deployment
- Konfiguration
- Användning
- Tillgängliga Verktyg
- Resources
- Exempel
- API-dokumentation
- Säkerhet
🎯 Översikt
MCP Protocol Support
- ✅ Remote HTTP Server - Deploy till molnet (Render.com, Google Cloud, AWS, etc.)
- ✅ Dual Transport - Stödjer både Streamable HTTP (modern) och HTTP+SSE (legacy)
- ✅ OAuth 2.1 Authentication - Med PKCE för säker access
- ✅ Session Management - Persistent conversational state
- ✅ Rate Limiting - Skydd mot overuse
- ✅ Caching - Optimerad prestanda
- ✅ Logging & Monitoring - Structured logging med Winston
Data Capabilities
- Sökning: Sök efter ledamöter, dokument, anföranden, voteringar och regeringsdokument
- Analys: Analysera partifördelning, röstningsstatistik, ledamötsaktivitet och dokumenttrender
- Jämförelse: Jämför ledamöter, partier, voteringar och dokument
- Hämtning: Hämta specifika dokument och data med fullständig information
- Aggregering: Få toplistor, statistik och global sökning
- Resources: Hämta strukturerad data om partier, departement och statistik
- Säkerhet: Inbyggd validering som endast tillåter data från Riksdagen och Regeringskansliet
Datakällor (48 tabeller)
Riksdagen (20 tabeller): data.riksdagen.se API
- Ledamöter och uppdrag
- Dokument (motioner, propositioner, betänkanden, frågor, interpellationer)
- Anföranden
- Voteringar och röstningsdata
- Utskott och protokoll
- SOU, direktiv och EU-förslag
Regeringskansliet (28 tabeller): g0v.se API
- Pressmeddelanden
- Propositioner
- Statens offentliga utredningar (SOU)
- Departementsserien och forordningsmotiv
- Remisser, rapporter och regeringsuppdrag
- Tal, artiklar och debattartiklar
- Internationella dokument
📦 Installation
Förutsättningar
- Node.js 18 eller senare
- npm eller yarn
- Tillgång till en Supabase-databas med data från Riksdagen och Regeringskansliet
Steg 1: Installera paketet
# Klona repository
cd mcp
# Installera dependencies
npm install
# Bygg projektet
npm run buildSteg 2: Konfigurera miljövariabler
Kopiera .env.example till .env och fyll i dina Supabase-uppgifter:
cp .env.example .envRedigera .env:
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your-anon-key-here🚀 Deployment
Denna server kan deployas som en remote HTTP server till molnet för enkel integration med LLM-klienter som Claude.
Quick Deploy till Render.com
Pusha till GitHub
git push origin mainSkapa Web Service på Render
- Gå till Render Dashboard
- Klicka "New +" > "Web Service"
- Anslut GitHub repository
- Render detekterar
render.yamlautomatiskt
Konfigurera Environment Variables
SUPABASE_URL=your-url SUPABASE_ANON_KEY=your-key SUPABASE_SERVICE_ROLE_KEY=your-service-keyDeploy
- URL blir:
https://riksdag-regering-mcp.onrender.com - Health check:
https://your-app.onrender.com/health
- URL blir:
Deploy med Docker
# Bygg image
docker build -t riksdag-regering-mcp .
# Kör container
docker run -p 3000:3000 --env-file .env riksdag-regering-mcpAndra Cloud Providers
Se DEPLOYMENT.md för detaljer om:
- Google Cloud Run
- AWS ECS
- Azure App Service
- Digital Ocean
Database Setup
Innan deployment, kör SQL-migration i Supabase:
cat src/database/migrations/001_create_oauth_tables.sqlKopiera SQL och kör i Supabase SQL Editor för att skapa OAuth-tabeller.
⚙️ Konfiguration
Local STDIO (Claude Desktop)
För lokal användning med Claude Desktop:
Claude Desktop
För att använda MCP servern med Claude Desktop, lägg till följande i din konfigurationsfil:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"riksdag-regering": {
"command": "node",
"args": ["/path/to/Riksdag-Regering.AI/mcp/dist/index.js"],
"env": {
"SUPABASE_URL": "https://your-project.supabase.co",
"SUPABASE_ANON_KEY": "your-anon-key-here"
}
}
}
}Cline (VS Code)
För Cline i VS Code, lägg till i .vscode/settings.json:
{
"mcp.servers": {
"riksdag-regering": {
"command": "node",
"args": ["/path/to/Riksdag-Regering.AI/mcp/dist/index.js"],
"env": {
"SUPABASE_URL": "https://your-project.supabase.co",
"SUPABASE_ANON_KEY": "your-anon-key-here"
}
}
}
}🚀 Användning
Efter installation kan du använda servern direkt i Claude Desktop eller andra MCP-kompatibla klienter.
Starta servern manuellt
npm start🔧 Tillgängliga Verktyg
Sökverktyg
search_ledamoter
Sök efter ledamöter i Riksdagen.
Parametrar:
namn(valfritt): Namn att söka efterparti(valfritt): Parti (S, M, SD, V, MP, C, L, KD)valkrets(valfritt): Valkretsstatus(valfritt): Status (tjänstgörande, tjänstledig, etc.)limit(valfritt): Max antal resultat (standard: 50)
Exempel:
{
"namn": "Andersson",
"parti": "S",
"limit": 10
}search_dokument
Sök efter dokument från Riksdagen.
Parametrar:
titel(valfritt): Titel att söka efterdoktyp(valfritt): Dokumenttyp (mot, prop, bet, skr)rm(valfritt): Riksmöte (t.ex. "2024/25")organ(valfritt): Organ (KU, FiU, UU, etc.)from_date(valfritt): Från datum (YYYY-MM-DD)to_date(valfritt): Till datum (YYYY-MM-DD)limit(valfritt): Max antal resultat (standard: 50)
search_anforanden
Sök efter anföranden i Riksdagen.
Parametrar:
talare(valfritt): Talare att söka efterparti(valfritt): Partidebattnamn(valfritt): Debattnamntext(valfritt): Text att söka i anförandetfrom_date(valfritt): Från datum (YYYY-MM-DD)to_date(valfritt): Till datum (YYYY-MM-DD)limit(valfritt): Max antal resultat (standard: 50)
search_voteringar
Sök efter voteringar i Riksdagen.
Parametrar:
titel(valfritt): Titel att söka efterrm(valfritt): Riksmöte (t.ex. "2024/25")from_date(valfritt): Från datum (YYYY-MM-DD)to_date(valfritt): Till datum (YYYY-MM-DD)limit(valfritt): Max antal resultat (standard: 50)
search_regering
Sök i Regeringskansliets dokument.
Parametrar:
dataType(required): Typ av dokument (pressmeddelanden, propositioner, departementsserien, sou, remisser, rapporter)titel(valfritt): Titel att söka efterdepartement(valfritt): Departementfrom_date(valfritt): Från datum (YYYY-MM-DD)to_date(valfritt): Till datum (YYYY-MM-DD)limit(valfritt): Max antal resultat (standard: 50)
Analysverktyg
analyze_partifordelning
Analysera fördelningen av ledamöter per parti.
Parametrar:
valkrets(valfritt): Filtrera efter valkrets
analyze_votering
Analysera röstningsstatistik för en specifik votering.
Parametrar:
votering_id(required): ID för voteringen
analyze_ledamot
Analysera en ledamots aktivitet.
Parametrar:
intressent_id(required): ID för ledamotenfrom_date(valfritt): Från datum (YYYY-MM-DD)to_date(valfritt): Till datum (YYYY-MM-DD)
analyze_dokument_statistik
Analysera statistik över dokument från Riksdagen.
Parametrar:
doktyp(valfritt): Dokumenttyprm(valfritt): Riksmötefrom_date(valfritt): Från datum (YYYY-MM-DD)to_date(valfritt): Till datum (YYYY-MM-DD)
analyze_trend
Analysera trender över tid.
Parametrar:
dataType(required): Typ av data (dokument, anforanden, voteringar)groupBy(required): Gruppering (day, week, month, year)from_date(valfritt): Från datum (YYYY-MM-DD)to_date(valfritt): Till datum (YYYY-MM-DD)
Jämförelseverktyg
compare_ledamoter
Jämför två ledamöters aktivitet.
Parametrar:
intressent_id_1(required): ID för första ledamotenintressent_id_2(required): ID för andra ledamoten
compare_parti_rostning
Jämför partiernas röstbeteende mellan två voteringar.
Parametrar:
votering_id_1(required): ID för första voteringenvotering_id_2(required): ID för andra voteringen
compare_riksdag_regering
Jämför dokument från Riksdagen och Regeringen om samma ämne.
Parametrar:
searchTerm(required): Sökterm för att hitta relaterade dokumentlimit(valfritt): Max antal dokument från varje källa (standard: 10)
compare_partier
Jämför aktivitet mellan två partier.
Parametrar:
parti_1(required): Första partietparti_2(required): Andra partietfrom_date(valfritt): Från datum (YYYY-MM-DD)to_date(valfritt): Till datum (YYYY-MM-DD)
📚 Resources
Servern exponerar följande resources:
riksdagen://ledamoter- Lista över alla ledamöterriksdagen://partier- Översikt över alla partierriksdagen://dokument/typer- Lista över dokumenttyperregeringen://departement- Lista över departementriksdagen://statistik- Sammanställd statistik
💡 Exempel
Söka efter ledamöter från Socialdemokraterna
{
"tool": "search_ledamoter",
"arguments": {
"parti": "S",
"limit": 20
}
}Analysera en votering
{
"tool": "analyze_votering",
"arguments": {
"votering_id": "8033E74D-8DD4-4D0F-8AD4-6BD6BBA4D4DB"
}
}Jämföra två partier
{
"tool": "compare_partier",
"arguments": {
"parti_1": "S",
"parti_2": "M",
"from_date": "2024-01-01",
"to_date": "2024-12-31"
}
}Analysera dokumenttrender per månad
{
"tool": "analyze_trend",
"arguments": {
"dataType": "dokument",
"groupBy": "month",
"from_date": "2024-01-01",
"to_date": "2024-12-31"
}
}🏗️ Utveckling
Projektstruktur
mcp/
├── src/
│ ├── index.ts # Huvudfil för MCP server
│ ├── types/ # TypeScript types
│ │ └── index.ts
│ ├── utils/ # Hjälpfunktioner
│ │ ├── supabase.ts # Supabase client
│ │ └── helpers.ts # Diverse hjälpfunktioner
│ ├── tools/ # MCP tools
│ │ ├── search.ts # Sökverktyg
│ │ ├── analyze.ts # Analysverktyg
│ │ └── compare.ts # Jämförelseverktyg
│ └── resources/ # MCP resources
│ └── index.ts
├── dist/ # Kompilerad kod
├── package.json
├── tsconfig.json
├── .env.example
└── README.mdBygga projektet
npm run buildUtvecklingsläge
npm run dev🤝 Bidra
Bidrag är välkomna! Vänligen:
- Forka projektet
- Skapa en feature-branch (
git checkout -b feature/amazing-feature) - Commit dina ändringar (
git commit -m 'Add some amazing feature') - Push till branchen (
git push origin feature/amazing-feature) - Öppna en Pull Request
📄 Licens
MIT License - se LICENSE-filen för detaljer
🙏 Erkännanden
- Riksdagen för deras öppna API (data.riksdagen.se)
- g0v.se för aggregering av Regeringskansliets data
- Model Context Protocol (MCP) från Anthropic
📞 Support
För frågor eller problem, öppna ett issue på GitHub eller kontakta projektets maintainers.
