Skip to main content
Glama

get_parliament_members

Retrieve Swiss Parliament members from the National Council and Council of States. Filter results by canton, political party, or active status to find specific representatives.

Instructions

List current or past Swiss Parliament members (National Council and Council of States). Filter by canton or party.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cantonNoCanton name in German to filter by (e.g. 'Zürich', 'Bern', 'Genf', 'Waadt')
partyNoParty name or abbreviation to search (e.g. 'SVP', 'SP', 'FDP', 'Grüne', 'Mitte')
activeNoOnly active (currently seated) members (default: true)
limitNoMax results (default: 10, max: 50)

Implementation Reference

  • The implementation of the get_parliament_members tool handler function.
    async function getParliamentMembers(args: {
      canton?: string;
      party?: string;
      active?: boolean;
      limit?: number;
    }): Promise<string> {
      const limit = Math.min(args.limit ?? 10, 50);
      const active = args.active !== false;
    
      const params: Record<string, string | number | boolean | undefined> = {
        body_key: "CHE",
        active,
        lang: "de",
        lang_format: "flat",
        limit,
      };
    
      // Filter by canton using electoral_district_de (German canton name)
      if (args.canton) {
        params.electoral_district_de = args.canton;
      }
    
      // Filter by party using search
      if (args.party) {
        params.search = args.party;
      }
    
      const url = buildUrl("/persons/", params);
      const resp = await apiFetch<PersonRecord>(url);
    
      const members = resp.data.map((p) => ({
        id: p.id,
        name: p.fullname,
        party: p.party_de,
        partyFull: p.party_harmonized_de,
        canton: p.electoral_district_de,
        council: p.parliament_sector,
        group: p.parliamentary_group_name_de,
        occupation: p.occupation_de,
        gender: p.gender,
        active: p.active,
        url: p.website_parliament_url_de,
      }));
    
      return truncate(
        JSON.stringify({
          count: members.length,
          total: resp.meta.total_records,
          members,
        })
      );
    }
    
    interface VotingRecord {
      id: number;
      affair_id: number;
      meaning_yes_de: string;
      meaning_no_de: string;
      total_yes: number;
      total_no: number;
  • The tool definition and schema registration for get_parliament_members.
    name: "get_parliament_members",
    description:
      "List current or past Swiss Parliament members (National Council and Council of States). Filter by canton or party.",
    inputSchema: {
      type: "object" as const,
      properties: {
        canton: {
          type: "string",
          description:
            "Canton name in German to filter by (e.g. 'Zürich', 'Bern', 'Genf', 'Waadt')",
        },
        party: {
          type: "string",
          description:
            "Party name or abbreviation to search (e.g. 'SVP', 'SP', 'FDP', 'Grüne', 'Mitte')",
        },
        active: {
          type: "boolean",
          description: "Only active (currently seated) members (default: true)",
        },
        limit: {

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vikramgorla/mcp-swiss'

If you have feedback or need assistance with the MCP directory API, please join our Discord server