Cert Made Easy MCP
An MCP server that allows AI agents to search for certification exams, retrieve exam details, and practice with exam-style questions including answers and explanations. It supports tools for searching exams, listing available exams, getting study paths, and checking answers, facilitating self-paced certification preparation.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://certmadeeasy.com/mcpWhat you can do with it
- Search for certification exams by code or topic
- Retrieve official exam details and fees
- Practice with sample exam questions and explanations
- Get recommended study paths for career roles
Source and maintenance
Protocol and capabilities
- Server
- com.certmadeeasy/exam-practice 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 6 advertised
- Resources
- 0 advertised
- Resource templates
- 0 advertised
- Prompts
- 0 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
6 advertised
search_exams — Search certification exams
Find certification exams by official code (e.g. "SAA-C03", "CIPP/E"), name (e.g. "Azure Administrator") or topic (e.g. "GDPR"). Returns the matching practice sets with their size, free questions and price. Use it when the user names an exam or certification, to see whether it is covered and get its set_id.
{
"type": "object",
"title": "search_exams_toolArguments",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 5
},
"query": {
"type": "string",
"title": "Query"
}
}
}{
"type": "object",
"$defs": {
"ExamSummary": {
"type": "object",
"title": "ExamSummary",
"required": [
"set_id",
"exam_code",
"title",
"vendor",
"practice_questions",
"free_questions",
"price",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"price": {
"type": "string",
"title": "Price",
"description": "Our one-time price for the full practice set."
},
"title": {
"type": "string",
"title": "Title"
},
"set_id": {
"type": "string",
"title": "Set Id"
},
"vendor": {
"type": "string",
"title": "Vendor"
},
"exam_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Exam Code"
},
"free_questions": {
"type": "integer",
"title": "Free Questions",
"description": "Questions anyone can practise free with an account."
},
"practice_questions": {
"type": "integer",
"title": "Practice Questions",
"description": "Size of our practice set, not of the real exam."
}
}
}
},
"title": "SearchResults",
"required": [
"query",
"results",
"catalog_url"
],
"properties": {
"query": {
"type": "string",
"title": "Query"
},
"results": {
"type": "array",
"items": {
"$ref": "#/$defs/ExamSummary"
},
"title": "Results"
},
"catalog_url": {
"type": "string",
"title": "Catalog Url"
}
}
}{
"title": "Search certification exams",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_exams — List exams by vendor
Without a vendor, list the certification vendors covered and how many exams each has. With a vendor (a name such as "Microsoft Azure" or a code such as "aws", "iapp", "isc2"), list that vendor's exams. Use it when the user asks which vendors or exams are covered.
{
"type": "object",
"title": "list_examsArguments",
"properties": {
"vendor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Vendor",
"default": null
}
}
}{
"type": "object",
"$defs": {
"ExamSummary": {
"type": "object",
"title": "ExamSummary",
"required": [
"set_id",
"exam_code",
"title",
"vendor",
"practice_questions",
"free_questions",
"price",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"price": {
"type": "string",
"title": "Price",
"description": "Our one-time price for the full practice set."
},
"title": {
"type": "string",
"title": "Title"
},
"set_id": {
"type": "string",
"title": "Set Id"
},
"vendor": {
"type": "string",
"title": "Vendor"
},
"exam_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Exam Code"
},
"free_questions": {
"type": "integer",
"title": "Free Questions",
"description": "Questions anyone can practise free with an account."
},
"practice_questions": {
"type": "integer",
"title": "Practice Questions",
"description": "Size of our practice set, not of the real exam."
}
}
},
"VendorSummary": {
"type": "object",
"title": "VendorSummary",
"required": [
"vendor",
"vendor_code",
"exam_count"
],
"properties": {
"vendor": {
"type": "string",
"title": "Vendor"
},
"exam_count": {
"type": "integer",
"title": "Exam Count"
},
"vendor_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Vendor Code"
}
}
}
},
"title": "ExamList",
"required": [
"catalog_url"
],
"properties": {
"exams": {
"type": "array",
"items": {
"$ref": "#/$defs/ExamSummary"
},
"title": "Exams",
"default": []
},
"vendor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Vendor",
"default": null
},
"vendors": {
"type": "array",
"items": {
"$ref": "#/$defs/VendorSummary"
},
"title": "Vendors",
"default": []
},
"catalog_url": {
"type": "string",
"title": "Catalog Url"
}
}
}{
"title": "List exams by vendor",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_exam_details — Get exam details
Describe one exam: the vendor's real exam (official code, question count, fee, domains and their weights) and our practice set for it (size, free questions, price, timed mock exam). `exam` is a set_id from search_exams or an official exam code. Use it when the user asks about an exam's format, length, fee or domains, or about our practice set for it.
{
"type": "object",
"title": "get_exam_detailsArguments",
"required": [
"exam"
],
"properties": {
"exam": {
"type": "string",
"title": "Exam"
}
}
}{
"type": "object",
"$defs": {
"MockExam": {
"type": "object",
"title": "MockExam",
"required": [
"questions",
"minutes",
"pass_mark_pct"
],
"properties": {
"minutes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Minutes"
},
"questions": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Questions"
},
"pass_mark_pct": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Pass Mark Pct",
"description": "Published pass mark as a percentage, when the vendor states one."
}
}
},
"DomainOut": {
"type": "object",
"title": "DomainOut",
"required": [
"name",
"weight"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"weight": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Weight",
"description": "The vendor's published weight: a share or a question count."
}
}
},
"ExamSummary": {
"type": "object",
"title": "ExamSummary",
"required": [
"set_id",
"exam_code",
"title",
"vendor",
"practice_questions",
"free_questions",
"price",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"price": {
"type": "string",
"title": "Price",
"description": "Our one-time price for the full practice set."
},
"title": {
"type": "string",
"title": "Title"
},
"set_id": {
"type": "string",
"title": "Set Id"
},
"vendor": {
"type": "string",
"title": "Vendor"
},
"exam_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Exam Code"
},
"free_questions": {
"type": "integer",
"title": "Free Questions",
"description": "Questions anyone can practise free with an account."
},
"practice_questions": {
"type": "integer",
"title": "Practice Questions",
"description": "Size of our practice set, not of the real exam."
}
}
},
"OfficialExam": {
"type": "object",
"title": "OfficialExam",
"required": [
"exam_code",
"question_count",
"fee_usd"
],
"properties": {
"fee_usd": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Fee Usd",
"description": "The vendor's exam fee in USD, when it publishes one."
},
"exam_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Exam Code"
},
"question_count": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Question Count",
"description": "Questions on the vendor's real exam."
}
}
}
},
"title": "ExamDetails",
"required": [
"official_exam",
"practice_set",
"description",
"domains",
"mock_exam",
"try_free_url"
],
"properties": {
"domains": {
"type": "array",
"items": {
"$ref": "#/$defs/DomainOut"
},
"title": "Domains"
},
"mock_exam": {
"anyOf": [
{
"$ref": "#/$defs/MockExam"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"practice_set": {
"$ref": "#/$defs/ExamSummary"
},
"try_free_url": {
"type": "string",
"title": "Try Free Url"
},
"official_exam": {
"$ref": "#/$defs/OfficialExam"
}
}
}{
"title": "Get exam details",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_study_paths — Get certification study paths
Recommended exam order for each career role at one vendor (e.g. "aws", "Microsoft Azure"), from first exam to last. Use it when the user asks which exam to take first, or in what order, for a role.
{
"type": "object",
"title": "get_study_pathsArguments",
"required": [
"vendor"
],
"properties": {
"vendor": {
"type": "string",
"title": "Vendor"
}
}
}{
"type": "object",
"$defs": {
"PathStepOut": {
"type": "object",
"title": "PathStepOut",
"required": [
"exam_code",
"title",
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"title": {
"type": "string",
"title": "Title"
},
"exam_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Exam Code"
}
}
},
"StudyPathOut": {
"type": "object",
"title": "StudyPathOut",
"required": [
"name",
"summary",
"steps"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"steps": {
"type": "array",
"items": {
"$ref": "#/$defs/PathStepOut"
},
"title": "Steps"
},
"further": {
"type": "array",
"items": {
"$ref": "#/$defs/PathStepOut"
},
"title": "Further",
"default": []
},
"summary": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Summary"
}
}
}
},
"title": "StudyPaths",
"required": [
"vendor",
"paths"
],
"properties": {
"paths": {
"type": "array",
"items": {
"$ref": "#/$defs/StudyPathOut"
},
"title": "Paths"
},
"vendor": {
"type": "string",
"title": "Vendor"
}
}
}{
"title": "Get certification study paths",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_practice_questions — Get free practice questions
Return up to five free sample multiple-choice questions for one certification exam, each with its correct option letters and a written explanation. Use it when the user wants to practise, be quizzed or test themselves on an exam this server covers. `exam` is a set_id from search_exams or an official exam code such as "SAA-C03".
{
"type": "object",
"title": "get_practice_questionsArguments",
"required": [
"exam"
],
"properties": {
"exam": {
"type": "string",
"title": "Exam"
},
"count": {
"type": "integer",
"title": "Count",
"default": 5
}
}
}{
"type": "object",
"$defs": {
"PracticeQuestion": {
"type": "object",
"title": "PracticeQuestion",
"required": [
"question_id",
"question",
"options",
"select",
"answer",
"explanation"
],
"properties": {
"answer": {
"type": "array",
"items": {
"type": "string"
},
"title": "Answer",
"description": "The correct option letters. Do not reveal before the user answers."
},
"select": {
"type": "integer",
"title": "Select",
"description": "How many options the answer has."
},
"options": {
"type": "array",
"items": {
"type": "string"
},
"title": "Options"
},
"question": {
"type": "string",
"title": "Question"
},
"explanation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Explanation",
"description": "Why the answer is right and the others are not. Show it after the user answers."
},
"question_id": {
"type": "string",
"title": "Question Id"
}
}
}
},
"title": "PracticeQuestions",
"required": [
"exam_code",
"title",
"questions",
"how_to_use",
"more_questions_url"
],
"properties": {
"title": {
"type": "string",
"title": "Title"
},
"exam_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Exam Code"
},
"questions": {
"type": "array",
"items": {
"$ref": "#/$defs/PracticeQuestion"
},
"title": "Questions"
},
"how_to_use": {
"type": "string",
"title": "How To Use"
},
"more_questions_url": {
"type": "string",
"title": "More Questions Url"
}
}
}{
"title": "Get free practice questions",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}check_answer — Check an answer
Check the user's answer to a question from get_practice_questions. Use it when the user answers one of those questions. `selected` is the option letters the user chose, e.g. ["B"] or ["A", "D"]. Returns whether it is right, the correct letters and the explanation.
{
"type": "object",
"title": "check_answerArguments",
"required": [
"exam",
"question_id",
"selected"
],
"properties": {
"exam": {
"type": "string",
"title": "Exam"
},
"selected": {
"type": "array",
"items": {
"type": "string"
},
"title": "Selected"
},
"question_id": {
"type": "string",
"title": "Question Id"
}
}
}{
"type": "object",
"title": "AnswerCheck",
"required": [
"question_id",
"correct",
"selected",
"correct_options",
"explanation",
"more_questions_url"
],
"properties": {
"correct": {
"type": "boolean",
"title": "Correct"
},
"selected": {
"type": "array",
"items": {
"type": "string"
},
"title": "Selected"
},
"explanation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Explanation"
},
"question_id": {
"type": "string",
"title": "Question Id"
},
"correct_options": {
"type": "array",
"items": {
"type": "string"
},
"title": "Correct Options"
},
"more_questions_url": {
"type": "string",
"title": "More Questions Url"
}
}
}{
"title": "Check an answer",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
0 advertised
Resources
0 advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1388 ms
- 95th percentile latency
- 1388 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1388 ms · metadata changed · 6 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http cert-made-easy-mcp https://certmadeeasy.com/mcpCodex
codex mcp add cert-made-easy-mcp --url https://certmadeeasy.com/mcpCursor
{
"mcpServers": {
"cert-made-easy-mcp": {
"url": "https://certmadeeasy.com/mcp"
}
}
}Cline
{
"mcpServers": {
"cert-made-easy-mcp": {
"type": "streamableHttp",
"url": "https://certmadeeasy.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"cert-made-easy-mcp": {
"type": "http",
"url": "https://certmadeeasy.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http cert-made-easy-mcp https://certmadeeasy.com/mcpClaude Desktop
{
"mcpServers": {
"cert-made-easy-mcp": {
"url": "https://certmadeeasy.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"cert-made-easy-mcp": {
"serverUrl": "https://certmadeeasy.com/mcp"
}
}
}Let your agent find its tools
Find servers like Cert Made Easy MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run Cert Made Easy MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.