Skip to main content
Glama
README.md
# Kalundborg MCP Server

MCP (Model Context Protocol) server til Kalundborg Kommune, der giver adgang til information fra kalundborg.dk.

## Installation

```bash
npm install
```

## Brug

### Lokalt

```bash
npm start
```

### Med Claude Desktop

Tilføj til din Claude Desktop konfiguration (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "kalundborg": {
      "command": "node",
      "args": ["/sti/til/kalundborg-mcp-server/index.js"]
    }
  }
}
```

Eller installer globalt:

```bash
npm install -g .
```

Og brug:

```json
{
  "mcpServers": {
    "kalundborg": {
      "command": "kalundborg-mcp"
    }
  }
}
```

## Tilgængelige Tools

### 1. `search_content`
Søg i alt indhold på kalundborg.dk.

**Input:**
- `query` (string, påkrævet): Søgeord eller sætning

**Eksempel:**
```json
{
  "query": "affald"
}
```

### 2. `get_news`
Hent nyheder og pressemeddelelser fra Kalundborg Kommune.

**Input:**
- `limit` (number, valgfri): Antal nyheder (standard: 10)
- `year` (string, valgfri): Filtrer efter år (fx "2025")
- `category` (string, valgfri): Filtrer efter kategori

**Eksempel:**
```json
{
  "limit": 5,
  "year": "2025"
}
```

### 3. `get_popular_pages`
Hent de mest populære sider på kalundborg.dk.

**Input:** Ingen parametre

**Eksempel:**
```json
{}
```

### 4. `get_contact_info`
Hent kontaktinformation for Kalundborg Kommune.

**Input:**
- `department` (string, valgfri): Specifik afdeling

**Eksempel:**
```json
{
  "department": "borgerservice"
}
```

### 5. `search_services`
Søg efter kommunale services og selvbetjeningsløsninger.

**Input:**
- `query` (string, påkrævet): Søgeord for service

**Eksempel:**
```json
{
  "query": "pas og kørekort"
}
```

## Brug Cases

### 1. Find nyheder om trafiksikkerhed
```
Tool: get_news
Input: { "limit": 5 }
```

### 2. Søg efter affaldsinformation
```
Tool: search_services
Input: { "query": "affald" }
```

### 3. Hent kontaktoplysninger
```
Tool: get_contact_info
Input: {}
```

### 4. Find populære selvbetjeningsløsninger
```
Tool: get_popular_pages
Input: {}
```

## Funktioner

✅ Real-time data fra kalundborg.dk
✅ Nyheder og pressemeddelelser
✅ Søgning i kommunale services
✅ Kontaktinformation
✅ Populære sider

## Teknisk Stack

- **MCP SDK**: @modelcontextprotocol/sdk
- **Web Scraping**: cheerio
- **HTTP Client**: node-fetch
- **Validation**: zod

## Udvikling

For at udvide serveren med flere tools:

1. Definer et nyt Zod schema
2. Implementer tool funktionen
3. Registrer tool i ListToolsRequestSchema handler
4. Tilføj case i CallToolRequestSchema handler

## Licens

ISC

TDQS

A3.5/5.0

Scored across 5 tools

Disambiguation4/5

Search tools overlap somewhat—search_content covers all site content while search_services narrows to municipal services, but the descriptions are distinct enough to avoid major confusion. The other tools (popular pages, news, contact info) are clearly separate.

Naming Consistency5/5

All five tool names follow the same verb_noun pattern (search_*, get_*), with consistent snake_case and clear action-object pairs. No mixed conventions or unpredictable naming.

Tool Count5/5

Five tools is a well-scoped set for a municipality website assistant, covering search, navigation, news, contact, and services without unnecessary redundancy or bloat.

Completeness4/5

The domain is public information on kalundborg.dk, and the tools cover primary browsing, searching, news, and contact lookup. Minor gaps include no dedicated page-by-URL fetcher or event calendar, but agents can work around these via search_content.

Maintenance

ActivityInactive
ResponsivenessNo issues