{"id":24989,"date":"2026-01-03T17:01:02","date_gmt":"2026-01-03T10:01:02","guid":{"rendered":"https:\/\/huongdanjava.com\/?p=24989"},"modified":"2026-01-03T17:01:02","modified_gmt":"2026-01-03T10:01:02","slug":"introduction-to-model-context-protocol","status":"publish","type":"post","link":"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html","title":{"rendered":"Introduction to Model Context Protocol"},"content":{"rendered":"<p>Large Language Models (LLMs) or AI models like ChatGPT, Gemini, etc., are only trained on data up to a certain point in time, known as the cutoff point. For example, for ChatGPT at the time of writing this tutorial, its knowledge only extends to April 2024:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-24991 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/01\/introduction-to-model-context-protocol-1.png\" alt=\"\" width=\"700\" height=\"221\" \/><\/p>\n<p>Even Gemini only lasts until June 2024:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-24992 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/01\/introduction-to-model-context-protocol-2.png\" alt=\"\" width=\"700\" height=\"224\" \/><\/p>\n<p>This means that ChatGPT and Gemini don&#8217;t have the information to respond to us after the cutoff point.<\/p>\n<p>Another problem is that LLMs can&#8217;t respond to information related to our personal data, data on our machines, or other private content.<\/p>\n<p>For LLMs to access private information or information after the cutoff point, the only way is for us to provide it.<\/p>\n<p>We can provide information to LLMs, but the problem is that each LLM will have a different way of reading that information. How do we standardize them? That&#8217;s why <a href=\"https:\/\/modelcontextprotocol.io\/\" target=\"_blank\" rel=\"noopener\">the Model Context Protocol<\/a> (MCP) concept was born! MCP was introduced by Anthropic, the father of AI models, <a href=\"https:\/\/claude.ai\/\" target=\"_blank\" rel=\"noopener\">Claude<\/a>, defining a standard for AI models to access different data sources, thereby enabling them to respond to the information we want.<\/p>\n<h3>MCP General Architecture<\/h3>\n<p>To understand MCP, you need to grasp the following concepts:<\/p>\n<ul>\n<li>MCP Hosts: These are client programs of AI models, used to access personal data or data after the cutoff point.<\/li>\n<li><span style=\"font-size: 14px;\">MCP Clients: Within the MCP Host, they connect to the MCP Server to retrieve information.<\/span><\/li>\n<li><span style=\"font-size: 14px;\">MCP Servers: These are applications that expose data from data sources to AI models using the Model Context Protocol.<\/span><\/li>\n<\/ul>\n<p>The General Architecture of MCP can be redrawn as follows:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-24993 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/01\/introduction-to-model-context-protocol-3.png\" alt=\"\" width=\"671\" height=\"511\" \/><\/p>\n<p>As you can see, for each data source, we have a corresponding MCP Server. MCP Server 1 and 2 expose data to the data sources on the local machine, while MCP Server 3 connects to a Remote Service to retrieve information and expose data to AI models according to the MCP standard.<\/p>\n<p>Many ready-made MCP Servers are available here: <a href=\"https:\/\/github.com\/modelcontextprotocol\/servers?tab=readme-ov-file#-reference-servers\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/modelcontextprotocol\/servers?tab=readme-ov-file#-reference-servers<\/a>.<\/p>\n<p>Now, I will guide you on how to use a simple MCP server to understand how MCP servers work!<\/p>\n<h3>Configure the MCP Server with the MCP Host<\/h3>\n<p>The MCP Server I&#8217;ll be using for this example is the Filesystem at <a href=\"https:\/\/github.com\/modelcontextprotocol\/servers\/tree\/main\/src\/filesystem\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/modelcontextprotocol\/servers\/tree\/main\/src\/filesystem<\/a>. This MCP Server is written in Node.js!<\/p>\n<p>The Filesystem MCP Server allows you to perform various tasks using the tools listed at <a href=\"https:\/\/github.com\/modelcontextprotocol\/servers\/tree\/main\/src\/filesystem#tools\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/modelcontextprotocol\/servers\/tree\/main\/src\/filesystem#tools<\/a>. You can think of tools as features that we can use with the MCP Server.<\/p>\n<p>The MCP Host I&#8217;ll be using is <a href=\"https:\/\/claude.ai\/download\" target=\"_blank\" rel=\"noopener\">the Claude AI Desktop application<\/a>.<\/p>\n<p>To configure the MCP Server Filesystem with the Claude Desktop application as the MCP Host, open the Claude Desktop application, then go to the Settings menu. In the Settings window, select the Developer tab.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-24995 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/01\/introduction-to-model-context-protocol-5.png\" alt=\"\" width=\"700\" height=\"526\" \/><\/p>\n<p>then click the Edit Config button. A `claude_desktop_config.json` file will open.<\/p>\n<p>This `claude_desktop_config.json` file contains the definitions of all the MCP Servers for Claude Desktop! These MCP Servers will run every time we run Claude Desktop.<\/p>\n<p>You can configure the Filesystem MCP Server in the `claude_desktop_config.json` file with the following content:<\/p>\n<pre class=\"lang:java decode:true \">{\r\n  \"mcpServers\": {\r\n    \"filesystem\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\r\n        \"-y\",\r\n        \"@modelcontextprotocol\/server-filesystem\",\r\n        \"\/Users\/khanhnguyenj\/Documents\/code\/huongdanjava.com\"\r\n      ]\r\n    }\r\n  }\r\n}<\/pre>\n<p>With this configuration, Claude Desktop will install the Filesystem MCP Server by running the Node.js `eXecute` (NPX) command to download the `@modelcontextprotocol\/server-filesystem` package from <a href=\"https:\/\/www.npmjs.com\/package\/@modelcontextprotocol\/server-filesystem\" target=\"_blank\" rel=\"noopener\">https:\/\/www.npmjs.com\/package\/@modelcontextprotocol\/server-filesystem<\/a>. The directory &#8220;\/Users\/khanhnguyenj\/Documents\/code\/huongdanjava.com&#8221; is the directory on your machine that will be used by the Filesystem MCP server to query information. You can add more directories if you wish.<\/p>\n<p>After configuring the Filesystem MCP Server, restart Claude Desktop.<\/p>\n<p>After restarting, you will see the Filesystem MCP Server included in Claude Desktop as follows:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-24996 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/01\/introduction-to-model-context-protocol-6.png\" alt=\"\" width=\"700\" height=\"526\" \/><\/p>\n<p>Now, I just need to type the command &#8220;List out all folders&#8221; into the prompt. For example, Claude Desktop displays the following result:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-24997 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/01\/introduction-to-model-context-protocol-7.png\" alt=\"\" width=\"700\" height=\"526\" \/><\/p>\n<p>As you can see, Claude Desktop uses the `list_allowed_directories`, `directory_tree`, and `list_directory` tools to list all the directories within the configured directory. A great feature is that it can categorize the directories based on the information they contain and provide a general overview of each directory.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-24998 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/01\/introduction-to-model-context-protocol-8.png\" alt=\"\" width=\"700\" height=\"526\" \/><\/p>\n<p>Thus, the Filesystem MCP Server has enabled us to access information on our computer, something that Claude Desktop cannot do by default.<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-right kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;right&quot;,&quot;id&quot;:&quot;24989&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;4&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;0\\\/5 - (0 votes)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;Introduction to Model Context Protocol&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            <span class=\"kksr-muted\"><\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Large Language Models (LLMs) or AI models like ChatGPT, Gemini, etc., are only trained on data up to a certain point in time, known as the cutoff point. For example, for ChatGPT at the time of writing this tutorial, its knowledge only extends to April&hellip; <a href=\"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":23945,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2392],"tags":[],"class_list":["post-24989","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-spring-ai-en","clearfix"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Introduction to Model Context Protocol - Huong Dan Java<\/title>\n<meta name=\"description\" content=\"In this tutorial, I will introduce with you all about the Model Context Protocol.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introduction to Model Context Protocol - Huong Dan Java\" \/>\n<meta property=\"og:description\" content=\"In this tutorial, I will introduce with you all about the Model Context Protocol.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html\" \/>\n<meta property=\"og:site_name\" content=\"Huong Dan Java\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/nhkhanh2406\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/nhkhanh2406\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-03T10:01:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2025\/05\/spring-ai.png\" \/>\n\t<meta property=\"og:image:width\" content=\"300\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Khanh Nguyen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/KhanhNguyenJ\" \/>\n<meta name=\"twitter:site\" content=\"@KhanhNguyenJ\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Khanh Nguyen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/introduction-to-model-context-protocol.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/introduction-to-model-context-protocol.html\"},\"author\":{\"name\":\"Khanh Nguyen\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\"},\"headline\":\"Introduction to Model Context Protocol\",\"datePublished\":\"2026-01-03T10:01:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/introduction-to-model-context-protocol.html\"},\"wordCount\":716,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\"},\"image\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/introduction-to-model-context-protocol.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/spring-ai.png\",\"articleSection\":[\"Spring AI\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/huongdanjava.com\\\/introduction-to-model-context-protocol.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/introduction-to-model-context-protocol.html\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/introduction-to-model-context-protocol.html\",\"name\":\"Introduction to Model Context Protocol - Huong Dan Java\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/introduction-to-model-context-protocol.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/introduction-to-model-context-protocol.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/spring-ai.png\",\"datePublished\":\"2026-01-03T10:01:02+00:00\",\"description\":\"In this tutorial, I will introduce with you all about the Model Context Protocol.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/introduction-to-model-context-protocol.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/huongdanjava.com\\\/introduction-to-model-context-protocol.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/introduction-to-model-context-protocol.html#primaryimage\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/spring-ai.png\",\"contentUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/spring-ai.png\",\"width\":300,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/introduction-to-model-context-protocol.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/huongdanjava.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introduction to Model Context Protocol\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#website\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/\",\"name\":\"Huong Dan Java\",\"description\":\"Java development tutorials\",\"publisher\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/huongdanjava.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\",\"name\":\"Khanh Nguyen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\",\"contentUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\",\"width\":1267,\"height\":1517,\"caption\":\"Khanh Nguyen\"},\"logo\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\"},\"description\":\"I love Java and everything related to Java.\",\"sameAs\":[\"https:\\\/\\\/huongdanjava.com\",\"https:\\\/\\\/www.facebook.com\\\/nhkhanh2406\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/KhanhNguyenJ\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Introduction to Model Context Protocol - Huong Dan Java","description":"In this tutorial, I will introduce with you all about the Model Context Protocol.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html","og_locale":"en_US","og_type":"article","og_title":"Introduction to Model Context Protocol - Huong Dan Java","og_description":"In this tutorial, I will introduce with you all about the Model Context Protocol.","og_url":"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html","og_site_name":"Huong Dan Java","article_publisher":"https:\/\/www.facebook.com\/nhkhanh2406","article_author":"https:\/\/www.facebook.com\/nhkhanh2406","article_published_time":"2026-01-03T10:01:02+00:00","og_image":[{"width":300,"height":300,"url":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2025\/05\/spring-ai.png","type":"image\/png"}],"author":"Khanh Nguyen","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/KhanhNguyenJ","twitter_site":"@KhanhNguyenJ","twitter_misc":{"Written by":"Khanh Nguyen","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html#article","isPartOf":{"@id":"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html"},"author":{"name":"Khanh Nguyen","@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d"},"headline":"Introduction to Model Context Protocol","datePublished":"2026-01-03T10:01:02+00:00","mainEntityOfPage":{"@id":"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html"},"wordCount":716,"commentCount":0,"publisher":{"@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d"},"image":{"@id":"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html#primaryimage"},"thumbnailUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2025\/05\/spring-ai.png","articleSection":["Spring AI"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html","url":"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html","name":"Introduction to Model Context Protocol - Huong Dan Java","isPartOf":{"@id":"https:\/\/huongdanjava.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html#primaryimage"},"image":{"@id":"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html#primaryimage"},"thumbnailUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2025\/05\/spring-ai.png","datePublished":"2026-01-03T10:01:02+00:00","description":"In this tutorial, I will introduce with you all about the Model Context Protocol.","breadcrumb":{"@id":"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html#primaryimage","url":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2025\/05\/spring-ai.png","contentUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2025\/05\/spring-ai.png","width":300,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/huongdanjava.com\/introduction-to-model-context-protocol.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/huongdanjava.com\/"},{"@type":"ListItem","position":2,"name":"Introduction to Model Context Protocol"}]},{"@type":"WebSite","@id":"https:\/\/huongdanjava.com\/#website","url":"https:\/\/huongdanjava.com\/","name":"Huong Dan Java","description":"Java development tutorials","publisher":{"@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/huongdanjava.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d","name":"Khanh Nguyen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg","url":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg","contentUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg","width":1267,"height":1517,"caption":"Khanh Nguyen"},"logo":{"@id":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg"},"description":"I love Java and everything related to Java.","sameAs":["https:\/\/huongdanjava.com","https:\/\/www.facebook.com\/nhkhanh2406","https:\/\/x.com\/https:\/\/twitter.com\/KhanhNguyenJ"]}]}},"_links":{"self":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts\/24989","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/comments?post=24989"}],"version-history":[{"count":2,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts\/24989\/revisions"}],"predecessor-version":[{"id":24999,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts\/24989\/revisions\/24999"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/media\/23945"}],"wp:attachment":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/media?parent=24989"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/categories?post=24989"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/tags?post=24989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}