Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -172,3 +172,5 @@ cython_debug/

# PyPI configuration file
.pypirc

.DS_Store
1 change: 1 addition & 0 deletions quiz/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# MCP Course quiz scripts
10 changes: 10 additions & 0 deletions quiz/data/unit_1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[
{
"question": "Which of the following best describes a Large Language Model (LLM)?",
"answer_a": "A model specializing in language recognition",
"answer_b": "A massive neural network that understands and generates human language",
"answer_c": "A model exclusively used for language data tasks like summarization or classification",
"answer_d": "A rule-based chatbot used for conversations",
"correct_answer": "B"
}
]
31 changes: 31 additions & 0 deletions quiz/push_questions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import json
from pathlib import Path
from datasets import Dataset

ORG_NAME = "mcp-course"


def main():
"""Push quiz questions to the Hugging Face Hub"""

for file in Path("data").glob("*.json"):
print(f"Processing {file}")

with open(file, "r") as f:
quiz_data = json.load(f)

repo_id = f"{ORG_NAME}/{file.stem}_quiz"

dataset = Dataset.from_list(quiz_data)

print(f"Pushing {repo_id} to the Hugging Face Hub")

dataset.push_to_hub(
repo_id,
private=True,
commit_message=f"Update quiz questions for {file.stem}",
)


if __name__ == "__main__":
main()
12 changes: 12 additions & 0 deletions quiz/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[project]
name = "agents-course"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"datasets>=3.2.0",
"huggingface-hub>=0.27.1",
"ipykernel>=6.29.5",
"requests>=2.32.3",
]
1,252 changes: 1,252 additions & 0 deletions quiz/uv.lock

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions units/en/_toctree.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,22 @@
title: Key Concepts and Terminology
- local: unit1/architectural-components
title: Architectural Components
- local: unit1/quiz1
title: Quiz 1 - MCP Fundamentals
- local: unit1/communication-protocol
title: The Communication Protocol
- local: unit1/capabilities
title: Understanding MCP Capabilities
- local: unit1/sdk
title: MCP SDK
- local: unit1/quiz2
title: Quiz 2 - MCP SDK
- local: unit1/mcp-clients
title: MCP Clients
- local: unit1/gradio-mcp
title: Gradio MCP Integration
- local: unit1/certificate
title: Get your certificate!

- title: "2. Use Case: End-to-End MCP Application"
sections:
Expand Down
19 changes: 19 additions & 0 deletions units/en/unit1/certificate.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Get your certificate!

Well done! You've completed the first unit of the MCP course. Now it's time to take the exam to get your certificate.

Below is a quiz to check your understanding of the unit.

<iframe
src="https://mcp-course-unit-1-quiz.hf.space"
frameborder="0"
width="850"
height="450"
></iframe>

<Tip>

If you're struggling to use the quiz above, go to the space directly [on the Hugging Face Hub](https://huggingface.co/spaces/mcp-course/unit_1_quiz). If you find errors, you can report them in the space's [Community tab](https://huggingface.co/spaces/mcp-course/unit_1_quiz/discussions).

</Tip>

129 changes: 129 additions & 0 deletions units/en/unit1/quiz1.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
---
title: Quiz 1 - MCP Fundamentals
---

# Quiz 1: MCP Fundamentals

Test your knowledge of the core concepts of Model Context Protocol.

### Q1: What is the primary purpose of Model Context Protocol (MCP)?

<Question
choices={[
{
text: "To limit the training data of AI models",
explain: "MCP aims to expand, not limit, the contexts AI models can access."
},
{
text: "To enable AI models to connect with external data sources, tools, and environments",
explain: "Correct! MCP's main goal is to facilitate interoperability.",
correct: true
},
{
text: "To replace prompting when using Large Language Models",
explain: "MCP is a protocol that enhances prompting, not a replacement for it."
},
{
text: "To create a new programming language for AI",
explain: "MCP is a protocol, not a programming language."
}
]}
/>

### Q2: What problem does MCP primarily aim to solve?

<Question
choices={[
{
text: "The lack of AI models",
explain: "MCP addresses integration challenges, not the availability of AI models themselves."
},
{
text: "The high cost of training LLMs",
explain: "While MCP can improve efficiency, its primary focus is not on reducing training costs directly."
},
{
text: "The M×N Integration Problem",
explain: "Correct! MCP standardizes connections to avoid M×N custom integrations.",
correct: true
},
{
text: "The difficulty in creating new AI algorithms",
explain: "MCP facilitates using existing algorithms and tools, not creating new ones from scratch."
}
]}
/>

### Q3: Which of the following is a key benefit of MCP?

<Question
choices={[
{
text: "Reduced AI model accuracy",
explain: "MCP aims to enhance AI capabilities, which should ideally lead to improved or maintained accuracy, not reduced."
},
{
text: "Increased complexity in AI development",
explain: "MCP aims to simplify integration, thereby reducing complexity."
},
{
text: "Standardization and interoperability in the AI ecosystem",
explain: "Correct! This is a primary goal and benefit of MCP.",
correct: true
},
{
text: "Isolation of AI models from external systems",
explain: "MCP promotes connection and interaction, not isolation."
}
]}
/>

### Q4: In MCP terminology, what is a "Host"?

<Question
choices={[
{
text: "The external program exposing capabilities",
explain: "This describes an MCP Server."
},
{
text: "The user-facing AI application",
explain: "Correct! The Host is the application users interact with.",
correct: true
},
{
text: "A read-only data source",
explain: "This describes a type of MCP Capability (Resource)."
},
{
text: "A pre-defined template for interactions",
explain: "This describes a type of MCP Capability (Prompt)."
}
]}
/>

### Q5: What does "M×N Integration Problem" refer to in the context of AI applications?

<Question
choices={[
{
text: "The difficulty of training M models with N datasets",
explain: "This relates to model training, not the integration problem MCP addresses."
},
{
text: "The challenge of connecting M AI applications to N external tools without a standard",
explain: "Correct! MCP provides the standard to solve this M*N complexity.",
correct: true
},
{
text: "The problem of managing M users across N applications",
explain: "This is a user management or identity problem, not the focus of MCP."
},
{
text: "The complexity of developing M features for N different user segments",
explain: "This relates to product development strategy, not system integration in the way MCP defines."
}
]}
/>

Congrats on finishing this Quiz 🥳! If you need to review any elements, take the time to revisit the chapter to reinforce your knowledge.
129 changes: 129 additions & 0 deletions units/en/unit1/quiz2.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
---
title: Quiz 2 - MCP SDK
---

# Quiz 2: MCP SDK

Test your knowledge of the MCP SDKs and their functionalities.

### Q1: What is the main purpose of the MCP SDKs?

<Question
choices={[
{
text: "To define the MCP protocol specification",
explain: "The SDKs implement the protocol, they don't define it. The specification is separate."
},
{
text: "To make it easier to implement MCP clients and servers",
explain: "Correct! SDKs abstract away low-level protocol details.",
correct: true
},
{
text: "To provide a visual interface for MCP interactions",
explain: "While some tools might offer this (like MCP Inspector), it's not the primary purpose of the SDKs themselves."
},
{
text: "To replace the need for programming languages",
explain: "SDKs are libraries used within programming languages."
}
]}
/>

### Q2: Which of the following functionalities do the MCP SDKs typically handle?

<Question
choices={[
{
text: "Optimizing MCP Servers",
explain: "This is outside the scope of MCP SDKs, which focus on protocol implementation."
},
{
text: "Defining new AI algorithms",
explain: "This is outside the scope of MCP SDKs, which focus on protocol implementation."
},
{
text: "Message serialization/deserialization",
explain: "Correct! This is a core function for handling JSON-RPC messages.",
correct: true
},
{
text: "Hosting Large Language Models",
explain: "MCP enables connection to LLMs, but the SDKs themselves don't host them."
}
]}
/>

### Q3: According to the provided text, which company maintains the official Python SDK for MCP?

<Question
choices={[
{
text: "Google",
explain: "The text lists Anthropic as the maintainer."
},
{
text: "Anthropic",
explain: "Correct! The course material indicates Anthropic maintains the Python SDK.",
correct: true
},
{
text: "Microsoft",
explain: "Microsoft maintains the C# SDK according to the text."
},
{
text: "JetBrains",
explain: "JetBrains maintains the Kotlin SDK according to the text."
}
]}
/>

### Q4: What command is used to start a development MCP server using a Python file named `server.py`?

<Question
choices={[
{
text: "python server.py run",
explain: "While you run Python scripts with `python`, MCP has a specific CLI command."
},
{
text: "mcp start server.py",
explain: "The command is `mcp dev`, not `mcp start`."
},
{
text: "mcp dev server.py",
explain: "Correct! This command initializes the development server.",
correct: true
},
{
text: "serve mcp server.py",
explain: "This is not the standard MCP CLI command shown in the course material."
}
]}
/>

### Q5: What is the role of JSON-RPC 2.0 in MCP?

<Question
choices={[
{
text: "As a primary transport mechanism for remote communication",
explain: "HTTP+SSE or Streamable HTTP are transport mechanisms; JSON-RPC is the message format."
},
{
text: "As the message format for all communication between Clients and Servers",
explain: "Correct! MCP uses JSON-RPC 2.0 for structuring messages.",
correct: true
},
{
text: "As a tool for debugging AI models",
explain: "While its human-readable nature helps in debugging communications, it's not a debugging tool for AI models themselves."
},
{
text: "As a method for defining AI capabilities like Tools and Resources",
explain: "Capabilities are defined by their own schemas; JSON-RPC is used to invoke them and exchange data."
}
]}
/>

Congrats on finishing this Quiz 🥳! If you need to review any elements, take the time to revisit the chapter to reinforce your knowledge.