# io.github.cyanheads/switzerland-parliament-mcp-server (remote · switzerland-parliament.caseyjhand.com)

Search Swiss parliamentary business, votes, debates, members, and declared interests.

- Trust score: 76/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `switzerland-parliament.caseyjhand.com`: 76/100 (this document), [markdown](https://verifymcp.io/servers/cyanheads-switzerland-parliament-mcp-server/switzerland-parliament.md), [page](https://verifymcp.io/servers/cyanheads-switzerland-parliament-mcp-server/switzerland-parliament)
- npm · `@cyanheads/switzerland-parliament-mcp-server`: 73/100, [markdown](https://verifymcp.io/servers/cyanheads-switzerland-parliament-mcp-server/cyanheads-switzerland-parliament-mcp-server.md), [page](https://verifymcp.io/servers/cyanheads-switzerland-parliament-mcp-server/cyanheads-switzerland-parliament-mcp-server)

## Channel facts

- Endpoint: `https://switzerland-parliament.caseyjhand.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.1.2`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 59/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2443 tokens (~349/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 33/100
  - Stability observed for 10 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the io.github.cyanheads/switzerland-parliament-mcp-server server?

io.github.cyanheads/switzerland-parliament-mcp-server is a hosted endpoint at https://switzerland-parliament.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http cyanheads-switzerland-parliament-mcp-server 'https://switzerland-parliament.caseyjhand.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "cyanheads-switzerland-parliament-mcp-server": {
      "url": "https://switzerland-parliament.caseyjhand.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "cyanheads-switzerland-parliament-mcp-server": {
      "type": "http",
      "url": "https://switzerland-parliament.caseyjhand.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.cyanheads-switzerland-parliament-mcp-server]
url = "https://switzerland-parliament.caseyjhand.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-switzerland-parliament-mcp-server": {
      "type": "remote",
      "url": "https://switzerland-parliament.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cyanheads-switzerland-parliament-mcp-server --url 'https://switzerland-parliament.caseyjhand.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  cyanheads-switzerland-parliament-mcp-server:
    url: "https://switzerland-parliament.caseyjhand.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "cyanheads-switzerland-parliament-mcp-server": {
      "Transport": "http",
      "Url": "https://switzerland-parliament.caseyjhand.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add cyanheads-switzerland-parliament-mcp-server -t streamable-http -u 'https://switzerland-parliament.caseyjhand.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "cyanheads-switzerland-parliament-mcp-server": {
      "type": "http",
      "url": "https://switzerland-parliament.caseyjhand.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-03 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-01 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-30 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-28 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-27 (score 72, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-26 (score 72)

First indexed and scored.

## MCP tools (7)

### `chparl_search_business` (~340 tokens)

Chparl Search Business

Search Swiss parliamentary business by title substring, published submitter label, type, current status, submission session, inclusive submission dates, or committee role. Use chparl_list_reference to resolve codes and chparl_get_business to read a returned businessId. Follow nextCursor with unchanged filters; newest canonical business IDs appear first. Author searches omit the business total. Committee searches page role candidates and may return short pages without a distinct business total. Metadata labels remain in de, fr, or it without translation fallback.

Input parameters:

- `author` (string): Substring of the published submitter label, not every co-signatory.
- `committeeId` (string): Committee number from chparl_list_reference topic committees; matches any published committee role.
- `cursor` (string): Opaque nextCursor from a previous call with identical filters; omit to start.
- `language` (string): Metadata language: de (default), fr, or it.
- `limit` (integer): Page request, default 20; clamped to 100. Committee pages count candidate roles, and byte fitting may return fewer businesses.
- `query` (string): One title substring, preserving punctuation and diacritics.
- `sessionId` (string): Submission session ID from chparl_list_reference topic sessions.
- `statusId` (string): Current status code from chparl_list_reference topic statuses.
- `submittedFrom` (string): Inclusive submission-date lower bound, YYYY-MM-DD.
- `submittedTo` (string): Inclusive submission-date upper bound, YYYY-MM-DD.
- `typeId` (string): Business type code from chparl_list_reference topic business_types.

Output parameters:

- `businesses` (array): Distinct complete business summaries on this page.
- `effectiveFilters` (object): Effective business discovery filters and defaults.
- `effectiveLimit` (integer): Effective business or role-candidate limit after clamping.
- `error` (object): Present when the call failed. Absent on success.
- `hasMore` (boolean): Whether older matching businesses remain.
- `nextCursor` (string): Continue after the smallest delivered business ID using identical filters.
- `notice` (string): Combined clamp, short-page, size-fitting, or empty-result guidance.
- `provenance` (object): Attribution, publication status, and source download dates.
- `returnedCount` (integer): Distinct businesses actually delivered.
- `totalCount` (integer): Original-filter business total, available only without author or committee filters.

### `chparl_get_business` (~245 tokens)

Chparl Get Business

Read a Swiss parliamentary business by canonical eight-digit businessId or exact published short number. Choose overview for metadata and available text sizes; texts for original published text, automatically outlined when several fields exceed the disclosure budget; or status_history, bills, related_business, preconsultations, or subjects for independently paged relationships. textFields selects complete original fields only in texts, even when large. Paging applies only to relationships. Use subjects to narrow chparl_search_transcripts; source text and HTML remain unchanged.

Input parameters:

- `businessId` (string, required): Canonical eight-digit businessId from chparl_search_business, or an exact published short number such as 99.1234.
- `language` (string): Metadata and business-text variant: de (default), fr, or it.
- `limit` (integer): Relationships only: requested page size, default 20, clamped to 100.
- `offset` (integer): Relationships only: source row offset, default zero; continue with returned nextOffset.
- `section` (string): Readable section, default overview.
- `textFields` (array): Texts only: named original fields; empty array means unset.

Output parameters:

- `bills` (array): Linked bill page; no enacted-law content is inferred.
- `business` (object): Business summary on every found result, with extra metadata on overview.
- `effectiveFilters` (object): Effective business identifier, section, selectors, and paging defaults.
- `effectiveLimit` (integer): Effective relationship limit after clamping.
- `error` (object): Present when the call failed. Absent on success.
- `found` (boolean): Whether the requested business metadata row exists.
- `guidance` (string): Discovery guidance when the business is missing.
- `hasMore` (boolean): Whether selected relationship rows remain; absent for non-collection results.
- `nextOffset` (integer): Original offset plus delivered rows when more remain.
- `notice` (string): Combined clamping, byte-fitting, empty-section, or past-end guidance.
- `preconsultations` (array): Published committee preconsultation page.
- `provenance` (object): Attribution, publication status, and source download dates.
- `relatedBusiness` (array): Related business page.
- `returnedCount` (integer): Complete relationship rows delivered; absent for overview, texts, or missing business.
- `section` (string): Selected section.
- `statusHistory` (array): Published status history page.
- `subjects` (array): Debate subjects usable in chparl_search_transcripts.
- `textDocument` (object): Original selected texts or automatic field outline.
- `totalCount` (integer): Whole selected relationship count when supplied by the source.

### `chparl_get_votes` (~441 tokens)

Chparl Get Votes

Find Nationalrat roll calls with mode votes and businessId, sessionId, or both. Use mode members with voteId for one paged roll call, or personNumber without voteId for member history optionally filtered by businessId and sessionId. Use mode groups with voteId for complete decision counts by parliamentary group. Member roll calls start in the 2003 winter session and exclude Ständerat member votes; an empty result does not prove no vote occurred. Member counts cover only delivered rows; groups mode reads all published member rows before reporting totals. Verbatim decisionTexts accompany code buckets when published. Code meanings include 1 yes, 2 no, 3 abstention, 4 present, 5 did not participate, 6 excused under Art. 57 para. 4, 7 president does not vote, and 8 resigned. Unknown codes and missing decisions are retained. Follow nextOffset with the same mode and filters.

Input parameters:

- `businessId` (string): Votes or member history only: canonical eight-digit businessId from chparl_search_business, or a published short number such as 99.1234.
- `language` (string): Metadata language: de (default), fr, or it; decision text remains as published.
- `limit` (integer): Paged modes only: votes default 10/max 50, members default 50/max 100; higher requests are clamped with notice.
- `mode` (string): Workflow: votes (default), members, or complete groups.
- `offset` (integer): Paged modes only: starting row offset, default zero; continue using returned nextOffset.
- `personNumber` (string): Members only: exact PersonNumber from chparl_search_members, distinct from Person.ID or current group affiliation.
- `sessionId` (string): Votes or member history only: positive Int32 Session.ID from chparl_list_reference topic sessions; combine with businessId to narrow discovery.
- `voteId` (string): Members or groups only: positive Int32 Vote.ID discovered through votes mode; omit for personNumber history. Cannot combine with businessId or sessionId.

Output parameters:

- `business` (object): Resolved business identity when supplied for vote discovery or member history.
- `coverage` (object): Coverage of the published member decisions.
- `decisionCounts`: Page counts in members mode or complete nonempty vote counts in groups mode.
- `effectiveFilters` (object): Normalized mode, identifiers, metadata language, and applicable paging defaults.
- `effectiveLimit` (integer): Effective page size after mode-specific clamping.
- `error` (object): Present when the call failed. Absent on success.
- `found` (boolean): Whether a supplied business or selected vote exists; unkeyed history/session searches succeed with true even when empty.
- `groups` (array): Complete group aggregates; empty when member data is unavailable.
- `guidance` (string): Identifier discovery guidance when the parent was not found.
- `hasMore` (boolean): Whether more rows remain after the delivered page; false for complete groups.
- `members` (array): Whole member decisions delivered in members mode.
- `mode` (string): Vote workflow returned.
- `nextOffset` (integer): Original offset plus delivered rows; absent when exhausted.
- `notice` (string): Combined clamping, whole-item fitting, empty-result, or coverage guidance.
- `provenance` (object): Attribution, publication status, and source download dates.
- `returnedCount` (integer): Number of delivered vote, member, or group records.
- `totalCount` (integer): Exact whole-query count of votes or filtered member rows, when supplied.
- `vote` (object): Resolved roll-call metadata in members or groups mode.
- `votes` (array): Whole metadata records delivered in votes mode.

### `chparl_search_transcripts` (~476 tokens)

Chparl Search Transcripts

Find Amtliches Bulletin passages by business, debate subject, speaker, session, council, or inclusive meeting dates. Supply at least a business, subject, speaker, session, or date bound. A text substring query additionally requires sessionId or a closed date range of at most 31 calendar days. Searches return metadata by default; includeText returns whole original passages, and an exact transcriptId defaults to full text. Metadata language never translates the speaker text; missing LanguageOfText remains unknown. Business searches cover every associated subject up to 20; larger debates require selecting subjectId through chparl_get_business section subjects. Follow nextOffset with unchanged filters.

Input parameters:

- `businessId` (string): Canonical eight-digit businessId from chparl_search_business or published short number; incompatible with subjectId and transcriptId.
- `council` (string): N or S; exact German, French, and Italian council names are also accepted.
- `dateFrom` (string): Inclusive meeting-day lower bound, YYYY-MM-DD.
- `dateTo` (string): Inclusive meeting-day upper bound, YYYY-MM-DD.
- `includeText` (boolean): Return whole original text and references; defaults true for transcriptId and false for searches. Explicit false always wins.
- `language` (string): Metadata language: de (default), fr, or it; original passage text stays in its published language.
- `limit` (integer): Search page request: metadata default 20/max 100, full text default 3/max 10; clamped with notice. Incompatible with transcriptId.
- `offset` (integer): Search starting row offset, default zero; use returned nextOffset. Incompatible with transcriptId.
- `personNumber` (string): Exact speaker PersonNumber from chparl_search_members, distinct from Person.ID.
- `query` (string): One original-text substring; requires sessionId or both dates spanning at most 31 inclusive calendar days.
- `sessionId` (string): Exact positive decimal session identifier from chparl_list_reference topic sessions.
- `subjectId` (string): Positive Int64 debate IdSubject string; incompatible with businessId and transcriptId.
- `transcriptId` (string): Exact positive Int64 transcriptId from a previous chparl_search_transcripts result; only language and includeText may accompany it.

Output parameters:

- `effectiveFilters` (object): Effective passage filters, disclosure mode, and applicable paging defaults.
- `effectiveLimit` (integer): Search page size after metadata or full-text clamping.
- `error` (object): Present when the call failed. Absent on success.
- `found` (boolean): Exact-ID mode only: whether the selected passage exists.
- `guidance` (string): How to discover a valid exact passage or missing business identifier.
- `hasMore` (boolean): Whether passages remain after the delivered search page; absent in exact-ID mode.
- `nextOffset` (integer): Original offset plus actually delivered passages, when more remain.
- `notice` (string): Combined clamp, whole-item fitting, empty-result, or indivisible-record guidance.
- `provenance` (object): Attribution, publication status, and source download dates.
- `returnedCount` (integer): Passages actually delivered on a search page; absent in exact-ID mode.
- `scopeFound` (boolean): Business searches only: whether the business exists, independently of published subjects or passages.
- `totalCount` (integer): Exact whole-scope passage count when supplied; absent when a business does not exist.
- `transcripts` (array): Whole matching passages or zero-or-one exact-ID result, without shortening original fields.

### `chparl_search_members` (~299 tokens)

Chparl Search Members

Find current or former Swiss Parliament affiliation records by name, council, canton, party, or parliamentary group. membership defaults to current; former selects inactive records and all omits the activity filter. query matches a substring of a published first, last, or official name. Use each record’s personNumber with chparl_get_member for identity, full council terms, committees, and declared interests. Follow nextOffset with the same filters.

Input parameters:

- `cantonId` (string): Optional Canton identifier from chparl_list_reference topic cantons.
- `council` (string): N or S; exact German, French, and Italian council names are accepted. Resolve codes with chparl_list_reference topic councils.
- `groupId` (string): Optional ParlGroupNumber from chparl_list_reference topic groups.
- `language` (string): Metadata language: de (default), fr, or it; uppercase is accepted.
- `limit` (integer): Requested page size, default 20, effective maximum 100 with notice. Whole records may be fitted to the response byte budget.
- `membership` (string): current (default), former, or all MemberCouncil records.
- `offset` (integer): Starting MemberCouncil record offset; continue with returned nextOffset.
- `partyId` (string): Optional Party identifier from chparl_list_reference topic parties.
- `query` (string): Optional name substring, trimmed without changing internal punctuation or diacritics.

Output parameters:

- `effectiveFilters` (object): Normalized search filters and resolved defaults.
- `effectiveLimit` (integer): Effective requested page size after clamping.
- `error` (object): Present when the call failed. Absent on success.
- `hasMore` (boolean): Whether further matching affiliation records remain.
- `members` (array): Complete MemberCouncil affiliation records delivered on this page.
- `nextOffset` (integer): Starting offset plus delivered records; absent when exhausted.
- `notice` (string): Combined clamping, byte fitting, empty-result, or past-end guidance.
- `provenance` (object): Attribution, publication status, and source download dates.
- `returnedCount` (integer): Number of complete MemberCouncil records delivered.
- `totalCount` (integer): Exact whole-query MemberCouncil record count when supplied upstream.

### `chparl_get_member` (~208 tokens)

Chparl Get Member

Read a Swiss Parliament member by PersonNumber, which need not equal Person.ID. overview returns identity and every base MemberCouncil affiliation without pagination. Select council_terms for historical council terms, committees for published MemberCommittee rows, or interests for declared interests; those sections accept limit and offset. Missing paid status means unknown, and empty interests do not establish absence of conflicts of interest. Metadata labels remain in the selected language.

Input parameters:

- `language` (string): Metadata language: de (default), fr, or it; uppercase is accepted.
- `limit` (integer): Relationship sections only: default 20, effective maximum 100 with notice. Omit for overview.
- `offset` (integer): Relationship sections only: default zero; continue with nextOffset. Omit for overview.
- `personNumber` (string, required): Required positive Int32 PersonNumber as a decimal string; discover with chparl_search_members.
- `section` (string): overview (default), council_terms, committees, or interests.

Output parameters:

- `committees` (array): Delivered published committee memberships; not a complete historical committee ledger.
- `councilTerms` (array): Delivered complete historical council-term records.
- `effectiveFilters` (object): Normalized profile parameters and defaults for the selected section.
- `effectiveLimit` (integer): Effective page size, present only for relationship sections.
- `error` (object): Present when the call failed. Absent on success.
- `found` (boolean): Whether a Person matched the requested PersonNumber and language.
- `guidance` (string): Discovery guidance when the person is absent.
- `hasMore` (boolean): Whether section records remain; false for complete overview affiliations.
- `interests` (array): Delivered declared interests; missing paid flags stay unknown, and emptiness does not prove no conflicts of interest.
- `memberships` (array): Complete base MemberCouncil affiliations in overview; source continuations are drained.
- `nextOffset` (integer): Starting offset plus delivered records; absent when exhausted or unpaged.
- `notice` (string): Combined clamping, size, empty-section, or past-end guidance.
- `person` (object): Resolved parliamentary identity, including the distinct Person.ID.
- `provenance` (object): Attribution, publication status, and source download dates.
- `returnedCount` (integer): Number of profile records returned; omitted for a missing person.
- `section` (string): Profile component returned.
- `totalCount` (integer): Exact section count when supplied upstream, or the fully enumerated overview membership count.

### `chparl_list_reference` (~222 tokens)

Chparl List Reference

List Swiss Parliament reference entries and source coverage. Choose identifiers, coverage, or languages for server explanations; statuses for the official legacy/current status snapshot; or business_types, councils, cantons, parties, groups, committees, or sessions for live dictionaries. Date filters apply only to sessions. Follow nextOffset with the same topic, language, and dates; labels remain in the requested metadata language and missing labels stay unknown.

Input parameters:

- `dateFrom` (string): Sessions only: inclusive StartDate lower bound, YYYY-MM-DD.
- `dateTo` (string): Sessions only: inclusive EndDate upper bound, YYYY-MM-DD.
- `language` (string): Metadata label language: de (default), fr, or it.
- `limit` (integer): Requested page size, default 50; values above 100 are clamped with a notice. Whole-item byte fitting may return fewer entries.
- `offset` (integer): Starting row offset, default zero. Use the returned nextOffset to continue.
- `topic` (string, required): Reference dictionary or explanatory topic to list.

Output parameters:

- `effectiveFilters` (object): Normalized reference filters and resolved paging defaults.
- `effectiveLimit` (integer): Effective row limit after clamping; response-size fitting may deliver fewer.
- `error` (object): Present when the call failed. Absent on success.
- `hasMore` (boolean): Whether entries remain beyond this delivered page.
- `items` (array): Complete reference entries delivered on this page.
- `nextOffset` (integer): Original offset plus delivered entries; absent when exhausted.
- `notice` (string): Combined limit, whole-item byte-budget, empty-result, or past-end guidance.
- `provenance` (object): Attribution, publication status, and source download dates.
- `returnedCount` (integer): Number of complete entries actually delivered.
- `topic` (string): Reference topic returned.
- `totalCount` (integer): Whole-query reference count when the source supplies one.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/cyanheads-switzerland-parliament-mcp-server/switzerland-parliament#diagnostics

## Score history

- 2026-11-05: 76
- 2026-11-04: 76
- 2026-11-03: 76
- 2026-11-02: 75
- 2026-11-01: 75
- 2026-10-31: 74
- 2026-10-30: 74
- 2026-10-29: 73
- 2026-10-28: 73
- 2026-10-27: 72
- 2026-10-26: 72

## Common questions

### What is the io.github.cyanheads/switzerland-parliament-mcp-server server?

io.github.cyanheads/switzerland-parliament-mcp-server is listed in the public MCP registry as io.github.cyanheads/switzerland-parliament-mcp-server. Search Swiss parliamentary business, votes, debates, members, and declared interests. This page covers its hosted endpoint (https://switzerland-parliament.caseyjhand.com/mcp).

### Is the io.github.cyanheads/switzerland-parliament-mcp-server server safe to use?

io.github.cyanheads/switzerland-parliament-mcp-server scores 76 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.cyanheads/switzerland-parliament-mcp-server server expose?

io.github.cyanheads/switzerland-parliament-mcp-server exposes 7 tools: chparl_search_business, chparl_get_business, chparl_get_votes, chparl_search_transcripts, chparl_search_members, and 2 more. Their descriptions and schemas cost roughly 2,231 tokens of context every time the server is loaded.

### Does the io.github.cyanheads/switzerland-parliament-mcp-server server require authentication?

No. We connected to io.github.cyanheads/switzerland-parliament-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the io.github.cyanheads/switzerland-parliament-mcp-server server still maintained?

io.github.cyanheads/switzerland-parliament-mcp-server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://switzerland-parliament.caseyjhand.com/mcp
- Repository: https://github.com/cyanheads/switzerland-parliament-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/cyanheads-switzerland-parliament-mcp-server/switzerland-parliament.xml
- Changelog JSON feed: https://verifymcp.io/servers/cyanheads-switzerland-parliament-mcp-server/switzerland-parliament.json
- HTML version of this page: https://verifymcp.io/servers/cyanheads-switzerland-parliament-mcp-server/switzerland-parliament
