Civica citizenship test prep

Read-only citizenship test facts, official sources and sample questions for 8 countries.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
86%
Naming quality
96%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,810Tokens (tool definitions)
~3.0 KBTypical response size
Moderate attention impact (1.41% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "civica": {
      "url": "https://api.citizenleap.com/mcp"
    }
  }
}

Remote endpoints

https://api.citizenleap.com/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_tracks

List every country Civica covers (currently 8), each with its test name, status (in_force, or preview_not_in_force for tests that are announced but not yet live), key facts and official source. Use this first when the country is not yet known or you need to check whether a country is supported. Takes no arguments. For depth on one country use get_track_info instead.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "tracks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Track id, usable as the country argument."
          },
          "country": {
            "type": "string"
          },
          "test": {
            "type": "string",
            "description": "Name of the test or exam."
          },
          "status": {
            "type": "string",
            "description": "in_force, or preview_not_in_force when announced but not yet live."
          },
          "facts": {
            "type": "array",
            "description": "Key facts such as format, duration and pass mark.",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string"
                },
                "value": {
                  "type": "string"
                }
              },
              "required": [
                "label",
                "value"
              ]
            }
          },
          "summary": {
            "type": "string"
          },
          "officialSource": {
            "type": "object",
            "description": "The official government source to verify against.",
            "properties": {
              "label": {
                "type": "string"
              },
              "url": {
                "type": "string"
              }
            },
            "required": [
              "label",
              "url"
            ]
          },
          "guideUrl": {
            "type": "string",
            "description": "Civica study guide page for this country."
          }
        },
        "required": [
          "id",
          "country",
          "test",
          "status",
          "facts",
          "officialSource",
          "guideUrl"
        ]
      }
    },
    "disclaimer": {
      "type": "string",
      "description": "Independent-app notice; always show it with the facts."
    }
  },
  "required": [
    "tracks",
    "disclaimer"
  ]
}
🟢get_track_info(country)

The default tool for "how does the citizenship test work in <country>?". Returns the test name, format, number of questions, duration and pass mark where officially published (some are not, and those fields say so), status, a short explanation, the six study levels, FAQ, the official source and the Civica guide URL. It already includes the official source link, so call get_official_sources only if that link is all you need. Errors with the list of valid countries if the country is unknown.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "description": "Country name or id, e.g. \"UK\", \"United Kingdom\", \"de\", \"Germany\". Use list_tracks for valid values."
    }
  },
  "required": [
    "country"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Track id, usable as the country argument."
    },
    "country": {
      "type": "string"
    },
    "test": {
      "type": "string",
      "description": "Name of the test or exam."
    },
    "status": {
      "type": "string",
      "description": "in_force, or preview_not_in_force when announced but not yet live."
    },
    "facts": {
      "type": "array",
      "description": "Key facts such as format, duration and pass mark.",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "label",
          "value"
        ]
      }
    },
    "summary": {
      "type": "string"
    },
    "officialSource": {
      "type": "object",
      "description": "The official government source to verify against.",
      "properties": {
        "label": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      },
      "required": [
        "label",
        "url"
      ]
    },
    "guideUrl": {
      "type": "string",
      "description": "Civica study guide page for this country."
    },
    "about": {
      "type": "string"
    },
    "levels": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "faq": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "question": {
            "type": "string"
          },
          "answer": {
            "type": "string"
          }
        },
        "required": [
          "question",
          "answer"
        ]
      }
    },
    "disclaimer": {
      "type": "string",
      "description": "Independent-app notice; always show it with the facts."
    }
  },
  "required": [
    "id",
    "country",
    "test",
    "status",
    "facts",
    "officialSource",
    "guideUrl",
    "disclaimer"
  ]
}
🟢get_official_sources(country)

Returns only the official government link (study guide or test page) and status for one country, with nothing else. Use it when the user asks where to verify requirements or find the official study material. Prefer this link over any third-party site, and always point learners to it before they book or sit a test. For the test format and pass mark use get_track_info; for practice material use get_sample_questions.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "description": "Country name or id, e.g. \"UK\", \"United Kingdom\", \"de\", \"Germany\". Use list_tracks for valid values."
    }
  },
  "required": [
    "country"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "officialSource": {
      "type": "object",
      "description": "The official government source to verify against.",
      "properties": {
        "label": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      },
      "required": [
        "label",
        "url"
      ]
    },
    "disclaimer": {
      "type": "string",
      "description": "Independent-app notice; always show it with the facts."
    }
  },
  "required": [
    "country",
    "status",
    "officialSource",
    "disclaimer"
  ]
}
🟢get_sample_questions(country, count)

Returns free multiple-choice practice questions for one country, each with four options, the zero-based answerIndex of the correct option and a short explanation. Use it when the user wants to practise, be quizzed or see example questions. Clients that support MCP Apps show it as an interactive quiz card. This is a small free sample, not the full question bank (that is on the Civica site, see moreAt), and questions are independent study checks, not official exam questions.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "description": "Country name or id, e.g. \"UK\", \"United Kingdom\", \"de\", \"Germany\". Use list_tracks for valid values."
    },
    "count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "description": "How many questions (default 5, max 10)."
    }
  },
  "required": [
    "country"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string"
    },
    "moreAt": {
      "type": "string",
      "description": "Where to find the full question bank."
    },
    "questions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "question": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "answerIndex": {
            "type": "integer",
            "description": "Zero-based index of the correct option."
          },
          "explanation": {
            "type": "string"
          }
        },
        "required": [
          "question",
          "options",
          "answerIndex",
          "explanation"
        ]
      }
    },
    "disclaimer": {
      "type": "string",
      "description": "Independent-app notice; always show it with the facts."
    }
  },
  "required": [
    "country",
    "questions",
    "moreAt",
    "disclaimer"
  ]
}
🟢how_to_start(country)

Returns the link a learner can open to start studying for one country: the Civica guide page and a direct start link that opens the free course (no account needed), plus the notice that Civica is operated at citizenleap.com. Use it when the user is ready to begin studying on Civica. It does not return test facts or official sources; use get_track_info or get_official_sources for those.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "description": "Country name or id, e.g. \"UK\", \"United Kingdom\", \"de\", \"Germany\". Use list_tracks for valid values."
    }
  },
  "required": [
    "country"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "guideUrl": {
      "type": "string"
    },
    "startUrl": {
      "type": "string",
      "description": "Opens the free course for this country."
    },
    "note": {
      "type": "string"
    },
    "operator": {
      "type": "string",
      "description": "States the domain Civica is operated at, so the links can be trusted."
    },
    "disclaimer": {
      "type": "string",
      "description": "Independent-app notice; always show it with the facts."
    }
  },
  "required": [
    "country",
    "status",
    "guideUrl",
    "startUrl",
    "disclaimer"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools