Skip to content
Open
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
43ee9d8
chore: bump dev version to 0.7.1-dev
github-actions[bot] Mar 15, 2026
252db01
Merge pull request #117 from vikramgorla/chore/bump-dev-0.7.1-dev
vikramgorla Mar 15, 2026
daf12b3
chore: add glama.json for Glama.ai server ownership
agent-heidi[bot] Mar 15, 2026
55b2ddb
Merge pull request #118 from vikramgorla/chore/glama-json
agent-heidi[bot] Mar 15, 2026
4f91c5f
release: bump to v0.7.1
agent-heidi[bot] Mar 15, 2026
819a281
Merge pull request #119 from vikramgorla/release/v0.7.1
agent-heidi[bot] Mar 15, 2026
6b74bc0
Merge remote-tracking branch 'origin/main' into develop
github-actions[bot] Mar 15, 2026
eb98f88
chore: bump dev version to 0.7.2-dev
github-actions[bot] Mar 15, 2026
132d76b
Merge pull request #121 from vikramgorla/chore/bump-dev-0.7.2-dev
agent-heidi[bot] Mar 15, 2026
e3bbbb8
chore: update SECURITY.md — use GitHub issues instead of email
agent-heidi[bot] Mar 16, 2026
fea8e32
chore: remove SLAs, encourage contributor fixes
agent-heidi[bot] Mar 16, 2026
f08c500
Merge pull request #122 from vikramgorla/chore/security-md-update
agent-heidi[bot] Mar 16, 2026
c18c4a5
release: bump to v0.7.2
agent-heidi[bot] Mar 16, 2026
cde135c
Merge pull request #123 from vikramgorla/release/v0.7.2
agent-heidi[bot] Mar 16, 2026
8ef5e85
fix: make snow study-plot integration test resilient to 404 stations
agent-heidi[bot] Mar 16, 2026
326d5cf
Merge pull request #125 from vikramgorla/fix/snow-integration-test
agent-heidi[bot] Mar 16, 2026
a6a2c58
deps(deps-dev): bump the minor-and-patch group with 3 updates
dependabot[bot] Mar 16, 2026
eafdb80
Merge pull request #126 from vikramgorla/dependabot/npm_and_yarn/deve…
github-actions[bot] Mar 16, 2026
5582734
build(deps-dev): bump flatted from 3.3.4 to 3.4.2 (CWE-1321 fix)
agent-heidi[bot] Mar 22, 2026
ae51e37
Merge pull request #128 from vikramgorla/feature/bump-flatted-3.4.2
agent-heidi[bot] Mar 22, 2026
88052ee
deps(deps-dev): bump the minor-and-patch group with 2 updates
dependabot[bot] Mar 23, 2026
f4b8ed2
Merge pull request #129 from vikramgorla/dependabot/npm_and_yarn/deve…
github-actions[bot] Mar 23, 2026
d9fe129
build(deps): bump flatted 3.3.4→3.4.2 and picomatch 4.0.3→4.0.4 (secu…
agent-heidi[bot] Mar 27, 2026
9b0fe1a
Merge pull request #131 from vikramgorla/feature/depbot-security-updates
agent-heidi[bot] Mar 27, 2026
1e11c40
feat: add MeteoSwiss pollen module — real-time pollen concentrations
agent-heidi[bot] Mar 28, 2026
28be0d1
chore: update manifest.json and tools.schema.json to 79 tools
agent-heidi[bot] Mar 28, 2026
a41be40
Merge pull request #133 from vikramgorla/feature/pollen-module
agent-heidi[bot] Mar 28, 2026
ce23901
release: bump to v0.8.0
agent-heidi[bot] Mar 28, 2026
5f5ae6b
Merge pull request #134 from vikramgorla/release/v0.8.0
agent-heidi[bot] Mar 28, 2026
e540bf8
build(deps): bump the npm_and_yarn group across 1 directory with 2 up…
dependabot[bot] Mar 28, 2026
d6323bf
Merge pull request #136 from vikramgorla/dependabot/npm_and_yarn/npm_…
agent-heidi[bot] Mar 29, 2026
7b73189
deps(deps): bump the minor-and-patch group with 4 updates
dependabot[bot] Mar 30, 2026
c339e94
Merge pull request #137 from vikramgorla/dependabot/npm_and_yarn/deve…
github-actions[bot] Mar 30, 2026
e4c6a80
deps(deps): bump the minor-and-patch group with 4 updates
dependabot[bot] Apr 6, 2026
d9b9e05
Merge pull request #140 from vikramgorla/dependabot/npm_and_yarn/deve…
github-actions[bot] Apr 6, 2026
4fd1bcc
deps(deps-dev): bump typescript from 5.9.3 to 6.0.2
dependabot[bot] Apr 6, 2026
68302d0
Merge pull request #138 from vikramgorla/dependabot/npm_and_yarn/deve…
agent-heidi[bot] Apr 6, 2026
ee0dbde
deps(deps-dev): bump the minor-and-patch group with 4 updates
dependabot[bot] Apr 13, 2026
cf63b52
Merge pull request #143 from vikramgorla/dependabot/npm_and_yarn/deve…
github-actions[bot] Apr 13, 2026
59a1ef8
deps(deps-dev): bump the minor-and-patch group with 3 updates
dependabot[bot] Apr 20, 2026
33e4380
Merge pull request #145 from vikramgorla/dependabot/npm_and_yarn/deve…
github-actions[bot] Apr 20, 2026
e4bc9a8
deps(deps-dev): bump the minor-and-patch group with 3 updates
dependabot[bot] Apr 27, 2026
ccc0f24
Merge pull request #146 from vikramgorla/dependabot/npm_and_yarn/deve…
github-actions[bot] Apr 27, 2026
203e184
deps(deps-dev): bump the minor-and-patch group with 2 updates
dependabot[bot] May 4, 2026
3ba65e3
Merge pull request #147 from vikramgorla/dependabot/npm_and_yarn/deve…
github-actions[bot] May 4, 2026
c2c1a29
deps(deps-dev): bump the minor-and-patch group with 2 updates
dependabot[bot] May 11, 2026
853a2e3
Merge pull request #148 from vikramgorla/dependabot/npm_and_yarn/deve…
github-actions[bot] May 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 11 additions & 14 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,30 +25,27 @@

## Reporting a vulnerability

**Do not open a public GitHub issue for security vulnerabilities.**
**Open a GitHub issue:** https://github.com/vikramgorla/mcp-swiss/issues/new

Use one of:
Since mcp-swiss handles no credentials, tokens, or personal data (all upstream APIs are public Swiss open data), public issue reporting is fine. If you believe the issue is sensitive, use GitHub's private vulnerability reporting:

1. **GitHub private vulnerability reporting** — preferred
Go to [Security → Report a vulnerability](https://github.com/vikramgorla/mcp-swiss/security/advisories/new)

2. **Email**
Send details to: `security@[maintainer-domain]` *(update this before going public)*
- [Security → Report a vulnerability](https://github.com/vikramgorla/mcp-swiss/security/advisories/new)

Please include:
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if you have one)

## Response timeline
## Contributing a fix

This is a community-maintained open-source project. If you find a vulnerability, we'd love your help fixing it:

1. Open a GitHub issue describing the vulnerability
2. Fork the repo and submit a PR with the fix
3. We'll review and merge as quickly as we can

| Stage | Target |
|-------|--------|
| Acknowledgement | 48 hours |
| Triage & severity assessment | 7 days |
| Patch released | 30 days |
| Public disclosure | After patch is released |
We don't guarantee specific response timelines, but we take security seriously and will address issues as fast as possible.

## Notes

Expand Down
19 changes: 15 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

`mcp-swiss` is a [Model Context Protocol](https://modelcontextprotocol.io) server that gives any AI assistant direct access to Swiss open data — trains, weather, rivers, maps, and companies.

**76 tools. No API keys. No registration. No server to run. Just `npx mcp-swiss`.**
**79 tools. No API keys. No registration. No server to run. Just `npx mcp-swiss`.**

```
🚆 Transport — SBB, PostBus, trams, live departures, journey planning
Expand All @@ -48,6 +48,8 @@
🏠 Real Estate — Swiss property prices, rent index, housing data (BFS)
🚗 Traffic — ASTRA counting stations, daily volumes
🌍 Earthquakes — Swiss Seismological Service (SED/ETH Zürich), FDSN API
❄️ Snow — SLF snow depth, stations, and measurements
🌿 Pollen — MeteoSwiss pollen concentrations at 16 stations
```

---
Expand Down Expand Up @@ -280,7 +282,7 @@ docker pull ghcr.io/vikramgorla/mcp-swiss

## Module Filtering

By default, mcp-swiss loads all 21 modules (76 tools). For better token efficiency, load only the modules you need:
By default, mcp-swiss loads all 22 modules (79 tools). For better token efficiency, load only the modules you need:

### Select specific modules
```json
Expand Down Expand Up @@ -313,7 +315,7 @@ By default, mcp-swiss loads all 21 modules (76 tools). For better token efficien
| `business` | companies, geodata, post, energy, statistics, snb | 24 | 67% |
| `citizen` | parliament, voting, holidays, news | 17 | 77% |
| `minimal` | transport | 5 | 93% |
| `full` | all 21 modules (default) | 76 | — |
| `full` | all 22 modules (default) | 79 | — |

Combine preset + modules: `--preset commuter --modules parliament`

Expand Down Expand Up @@ -347,7 +349,7 @@ Once connected, try asking your AI:

## Tools

> 76 tools across 21 modules. Full specifications: [`docs/tool-specs.md`](docs/tool-specs.md) · Machine-readable: [`docs/tools.schema.json`](docs/tools.schema.json)
> 79 tools across 22 modules. Full specifications: [`docs/tool-specs.md`](docs/tool-specs.md) · Machine-readable: [`docs/tools.schema.json`](docs/tools.schema.json)

### 🚆 Transport (5 tools)

Expand Down Expand Up @@ -530,6 +532,14 @@ Once connected, try asking your AI:
| `list_snow_stations` | All 307 SLF snow measurement stations (IMIS automatic + manual study plots) |
| `get_snow_measurements` | Detailed snow and weather measurements for a specific SLF station |

### 🌿 Pollen / MeteoSwiss (3 tools)

| Tool | Description |
|------|-------------|
| `get_pollen_current` | Current hourly pollen concentrations at any of 16 MeteoSwiss stations (7 types: Alder, Birch, Hazel, Beech, Ash, Oak, Grasses) |
| `get_pollen_daily` | Daily pollen averages for trend analysis over configurable time range |
| `list_pollen_stations` | All 16 MeteoSwiss automatic pollen monitoring stations with location details |

---

## Data Sources
Expand Down Expand Up @@ -559,6 +569,7 @@ All official Swiss open data — no API keys required:
| [geo.admin.ch](https://api3.geo.admin.ch) — ASTRA | Traffic counting stations + daily volumes | [ASTRA](https://www.astra.admin.ch) |
| [arclink.ethz.ch](http://arclink.ethz.ch) | Swiss Seismological Service earthquakes (SED/ETH) | [SED](http://www.seismo.ethz.ch) |
| [measurement-api.slf.ch](https://measurement-api.slf.ch/public/api) | SLF snow depth + measurements (IMIS + study plots, CC BY 4.0) | [SLF](https://www.slf.ch) |
| [data.geo.admin.ch](https://data.geo.admin.ch/ch.meteoschweiz.ogd-pollen/) | MeteoSwiss pollen concentrations (16 automatic stations, CC BY) | [MeteoSwiss](https://www.meteoswiss.admin.ch) |

---

Expand Down
46 changes: 43 additions & 3 deletions docs/tool-specs.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# mcp-swiss Tool Specifications

> Complete human + machine-readable specification for all 73 MCP tools.
> Complete human + machine-readable specification for all 79 MCP tools.
> Generated from source

> **Module filtering:** You don't have to load all 73 tools. Use `--modules transport,weather` to pick specific modules, or `--preset commuter` for curated bundles. See [Module Filtering](../README.md#module-filtering) in the README.
> **Module filtering:** You don't have to load all 79 tools. Use `--modules transport,weather` to pick specific modules, or `--preset commuter` for curated bundles. See [Module Filtering](../README.md#module-filtering) in the README.

---

Expand All @@ -30,6 +30,7 @@
- [Traffic / ASTRA Module (3 tools)](#traffic)
- [Earthquakes / SED Module (3 tools)](#earthquakes)
- [Snow Conditions / SLF Module (3 tools)](#snow-conditions)
- [Pollen / MeteoSwiss Module (3 tools)](#pollen)

---

Expand Down Expand Up @@ -2514,5 +2515,44 @@ Get detailed snow and weather measurements for a specific SLF station. IMIS stat

---

## Pollen

### `get_pollen_current`

Get current hourly pollen concentrations at a MeteoSwiss pollen monitoring station. Returns the most recent hours of data for 7 pollen types: Alder, Birch, Hazel, Beech, Ash, Oak, and Grasses. Source: MeteoSwiss.

### Input

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| station | string | ✅ | Station code (e.g. "PZH" for Zürich, "PBE" for Bern, "PBS" for Basel). Use list_pollen_stations for all codes |

---

### `get_pollen_daily`

Get daily pollen concentration averages at a MeteoSwiss pollen monitoring station. Returns daily readings for 7 pollen types over the requested number of days. Source: MeteoSwiss.

### Input

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| station | string | ✅ | Station code (e.g. "PZH" for Zürich, "PBE" for Bern). Use list_pollen_stations for all codes |
| days | number | ❌ | Number of recent days to return (default: 7, max: 90) |

---

### `list_pollen_stations`

List all 16 MeteoSwiss automatic pollen monitoring stations in Switzerland. Returns station codes, names, cantons, altitude, and coordinates. Source: MeteoSwiss.

### Input

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| canton | string | ❌ | Filter by canton abbreviation (e.g. ZH, BE, GE, TI) |

---

*Specification generated from mcp-swiss source code.*
*API sources: transport.opendata.ch, api.existenz.ch, api3.geo.admin.ch, zefix.admin.ch, openholidaysapi.org, ws.parlament.ch, aws.slf.ch/whiterisk.ch, geo.admin.ch (NABEL), service.post.ch, strompreis.elcom.admin.ch, pxweb.bfs.admin.ch, opendata.swiss, data.snb.ch, openerz.metaodi.ch, srf.ch, data.bs.ch, geo.admin.ch (SFOE dams), geo.admin.ch (hiking), api3.geo.admin.ch (ASTRA traffic), arclink.ethz.ch (SED earthquakes), measurement-api.slf.ch (SLF snow)*
*API sources: transport.opendata.ch, api.existenz.ch, api3.geo.admin.ch, zefix.admin.ch, openholidaysapi.org, ws.parlament.ch, aws.slf.ch/whiterisk.ch, geo.admin.ch (NABEL), service.post.ch, strompreis.elcom.admin.ch, pxweb.bfs.admin.ch, opendata.swiss, data.snb.ch, openerz.metaodi.ch, srf.ch, data.bs.ch, geo.admin.ch (SFOE dams), geo.admin.ch (hiking), api3.geo.admin.ch (ASTRA traffic), arclink.ethz.ch (SED earthquakes), measurement-api.slf.ch (SLF snow), data.geo.admin.ch (MeteoSwiss pollen)*
Loading
Loading