Jak działa serwer MCP? Tutorial: Jak Zrobić własny Serwer MCP z Vibe Coding w Cursor AI!
Mike Tomala
[{'start': '0.000', 'end': '4.179', 'text': 'Mike, I hear about MCP everywhere, but what is it exactly?'}, {'start': '4.500', 'end': '8.220', 'text': "You know what, maybe I'll draw it out for you first so you understand it better,"}, {'start': '8.640', 'end': '12.039', 'text': "and then I'll show you how to make your own MCP server, okay?"}, {'start': '12.420', 'end': '12.760', 'text': "Great!  Let's get"}, {'start': '12.979', 'end': '13.579', 'text': 'to work.'}, {'start': '14.260', 'end': '16.600', 'text': "Artificial intelligence alone can't do everything."}, {'start': '16.979', 'end': '20.139', 'text': "When you ask AI to turn off the light because you're going to sleep, the"}, {'start': '20.579', 'end': '22.639', 'text': "AI \u200b\u200bwon't do it."}, {'start': '23.280', 'end': '25.200', 'text': 'When we say artificial intelligence, we'}, {'start': '25.719', 'end': '28.239', 'text': 'usually refer to the language model,'}, {'start': '28.239', 'end': '31.280', 'text': 'i.e. the Large Language Model, or LLAM for short.'}, {'start': '32.000', 'end': '35.479', 'text': 'So how can AI use words to turn off the lights?'}, {'start': '35.959', 'end': '37.380', 'text': 'To turn words into actions,'}, {'start': '37.720', 'end': '40.779', 'text': 'we need to equip artificial intelligence with additional tools.'}, {'start': '41.119', 'end': '42.959', 'text': 'This is where MCP comes in handy.'}, {'start': '43.639', 'end': '45.759', 'text': 'MCP, or Model Context Protocol,'}, {'start': '45.979', 'end': '48.799', 'text': 'is a communication format between a language model'}, {'start': '49.220', 'end': '51.240', 'text': 'and a specially prepared server.  The'}, {'start': '51.979', 'end': '56.840', 'text': 'AI \u200b\u200bcan be connected to many different MCP servers at the same time,'}, {'start': '56.840', 'end': '59.500', 'text': 'although there are some limits, but more on that later.'}, {'start': '60.279', 'end': '62.340', 'text': 'Each server defines its own tools'}, {'start': '62.680', 'end': '65.500', 'text': 'that can be used by the language model.'}, {'start': '66.139', 'end': '68.779', 'text': "Now let's plan our first MCP server.  We"}, {'start': '69.400', 'end': '71.559', 'text': 'can prepare, for example, two tools.'}, {'start': '72.260', 'end': '74.400', 'text': 'Turn the light on and turn the light off.'}, {'start': '74.680', 'end': '77.800', 'text': 'Each tool must be described in such a way'}, {'start': '78.040', 'end': '81.180', 'text': 'that the language model can understand its operation'}, {'start': '81.180', 'end': '85.279', 'text': 'and decide to use the tool at the appropriate time.'}, {'start': '85.279', 'end': '88.540', 'text': 'We can execute any code inside these tools.'}, {'start': '89.059', 'end': '92.199', 'text': 'In this case we will make a call to the Smart Bulb API'}, {'start': '92.459', 'end': '94.279', 'text': 'to turn it on or off.'}, {'start': '94.419', 'end': '97.839', 'text': 'Moreover, tools can also define various parameters.  We'}, {'start': '98.480', 'end': '100.900', 'text': 'can create another tool "change_color".'}, {'start': '101.440', 'end': '105.019', 'text': 'In this tool we will define the required parameter called "new_color".  The'}, {'start': '105.519', 'end': '109.300', 'text': 'AI \u200b\u200bwill not only have to decide at the right moment'}, {'start': '109.860', 'end': '110.959', 'text': 'whether to use this tool,'}, {'start': '110.959', 'end': '116.519', 'text': 'but also provide an appropriately formatted new light color in hexadecimal format.'}, {'start': '116.739', 'end': '118.919', 'text': 'Similarly to the previous tools, a'}, {'start': '119.019', 'end': '121.879', 'text': 'request can then be made to the Smart Bulb API'}, {'start': '122.339', 'end': '123.239', 'text': 'to change its color.'}, {'start': '124.019', 'end': '127.400', 'text': 'Ok, so I can make such tools for everything'}, {'start': '127.400', 'end': '129.100', 'text': 'and build my own smart home, right?'}, {'start': '129.240', 'end': '130.419', 'text': "Yes and no.  Let's"}, {'start': '131.220', 'end': '132.500', 'text': 'go back to our server.'}, {'start': '133.220', 'end': '135.580', 'text': 'When you start a chat with AI,'}, {'start': '135.880', 'end': '138.259', 'text': 'information about the available tools'}, {'start': '138.259', 'end': '140.300', 'text': 'is included in the context of the message.  The'}, {'start': '140.300', 'end': '142.639', 'text': 'language model simply needs to know'}, {'start': '143.179', 'end': '144.559', 'text': 'what tools it has available.'}, {'start': '144.660', 'end': '147.399', 'text': 'Providing this information increases token consumption,'}, {'start': '147.539', 'end': '151.580', 'text': 'so it is a good idea to limit the number of tools available on the MCP server.'}, {'start': '152.259', 'end': '155.220', 'text': 'Instead of creating separate tools for similar tasks,'}, {'start': '155.899', 'end': '157.279', 'text': 'you can create one tool'}, {'start': '157.580', 'end': '159.479', 'text': 'that will accept different parameters'}, {'start': '159.479', 'end': '162.440', 'text': 'and perform different tasks based on them.'}, {'start': '163.259', 'end': '165.919', 'text': 'So let\'s create one tool "change_light"'}, {'start': '166.380', 'end': '168.600', 'text': 'which will require two parameters, a'}, {'start': '168.600', 'end': '170.059', 'text': 'new color and a state'}, {'start': '170.419', 'end': '174.360', 'text': 'which will determine whether the light should be turned on or off.'}, {'start': '174.460', 'end': '175.899', 'text': 'When you write the prompt'}, {'start': '175.899', 'end': '177.679', 'text': "I'm going to sleep, turn off the light in the chat, the"}, {'start': '178.139', 'end': '180.440', 'text': 'model, knowing about the available tools,'}, {'start': '180.440', 'end': '182.380', 'text': 'may decide to use them.'}, {'start': '182.940', 'end': '184.759', 'text': 'Using a special functionality'}, {'start': '185.080', 'end': '186.360', 'text': 'called Function Calling, the'}, {'start': '187.399', 'end': '189.039', 'text': 'language model determines the tool it'}, {'start': '189.600', 'end': '190.740', 'text': 'can use'}, {'start': '190.740', 'end': '192.860', 'text': 'to achieve its goal.  A'}, {'start': '193.639', 'end': '196.259', 'text': 'connection is then made to the MCP server.'}, {'start': '196.619', 'end': '197.740', 'text': 'Communication between the chat,'}, {'start': '197.740', 'end': '199.820', 'text': 'i.e. the MCP client, and the server'}, {'start': '199.820', 'end': '203.740', 'text': 'takes place via the JSON RPC 2.0 standard.'}, {'start': '204.559', 'end': '206.740', 'text': 'In the episode about the anatomy of AI agents,'}, {'start': '206.740', 'end': '208.539', 'text': 'I talked about the capabilities of'}, {'start': '208.539', 'end': '209.339', 'text': 'language models,'}, {'start': '209.479', 'end': '211.059', 'text': 'which is called Function Calling.'}, {'start': '211.720', 'end': '213.300', 'text': 'Thanks to this function it is possible to'}, {'start': '213.300', 'end': '215.720', 'text': 'use tools and pass the'}, {'start': '215.720', 'end': '217.000', 'text': 'appropriate parameters to them.'}, {'start': '217.460', 'end': '219.300', 'text': "If you haven't watched that episode yet, I"}, {'start': '219.639', 'end': '220.880', 'text': 'encourage you to do so.'}, {'start': '221.419', 'end': '222.880', 'text': 'Okay, I know how it works.'}, {'start': '223.679', 'end': '225.419', 'text': 'Will you show me how to make your own server now?'}, {'start': '225.419', 'end': '226.639', 'text': "Sure, I'll show you,"}, {'start': '226.880', 'end': '229.259', 'text': "but I won't create the code for this server, the"}, {'start': '229.479', 'end': '231.259', 'text': 'AI \u200b\u200bcursor editor will do it,'}, {'start': '231.759', 'end': '233.139', 'text': "so we'll create this server"}, {'start': '233.139', 'end': '234.500', 'text': 'in the Vipe Coding style.'}, {'start': '235.199', 'end': '237.940', 'text': 'I now open a completely new project in the AI \u200b\u200bcursor'}, {'start': '237.940', 'end': '239.419', 'text': 'and paste the'}, {'start': '239.419', 'end': '241.240', 'text': 'previously prepared prompt into the chat window.'}, {'start': '241.600', 'end': '243.440', 'text': 'In the prompt I described a few requirements'}, {'start': '243.440', 'end': '245.419', 'text': 'for the MCP server I want to receive.'}, {'start': '246.580', 'end': '247.419', 'text': 'I would like the'}, {'start': '248.080', 'end': '249.259', 'text': 'official'}, {'start': '249.259', 'end': '250.639', 'text': 'Model Context Protocol library to be used.  The'}, {'start': '251.360', 'end': '252.619', 'text': 'server must of course be compliant'}, {'start': '252.619', 'end': '254.779', 'text': 'with the MCP documentation, which is why I provided a'}, {'start': '254.779', 'end': '256.359', 'text': 'link to the documentation.  I'}, {'start': '256.640', 'end': '258.700', 'text': 'am providing information about the tool,'}, {'start': '258.760', 'end': '260.600', 'text': 'which I will expand on in a moment,'}, {'start': '260.600', 'end': '262.660', 'text': 'and, for example, that the project is to be'}, {'start': '262.660', 'end': '263.880', 'text': "created in TypeScript.  I'll"}, {'start': '264.459', 'end': '266.359', 'text': 'go into more detail'}, {'start': '266.359', 'end': '268.540', 'text': 'about the Change Light tool later.  I'}, {'start': '269.179', 'end': '270.299', 'text': 'describe the required parameters,'}, {'start': '270.500', 'end': '272.399', 'text': 'i.e. new color and condition.  I'}, {'start': '272.799', 'end': '274.660', 'text': 'also describe in simple words'}, {'start': '274.660', 'end': '276.119', 'text': 'how this tool is supposed to work.'}, {'start': '276.880', 'end': '278.260', 'text': "Below I've included some information"}, {'start': '278.260', 'end': '280.619', 'text': "about connecting to the Smart Bulb API.  I'll"}, {'start': '280.779', 'end': '283.839', 'text': 'use the Tuya cloud here.  However,'}, {'start': '284.059', 'end': '285.160', 'text': 'in your MCP tool'}, {'start': '285.160', 'end': '286.859', 'text': 'you can use any'}, {'start': '286.859', 'end': '288.799', 'text': 'API or simply'}, {'start': '288.799', 'end': '290.239', 'text': "execute any code.  I've"}, {'start': '290.839', 'end': '292.920', 'text': 'included a few additional requirements at the end'}, {'start': '292.920', 'end': '294.880', 'text': ".  Now I'll make sure"}, {'start': '295.040', 'end': '296.720', 'text': 'we have the right model selected,'}, {'start': '296.940', 'end': '299.239', 'text': 'i.e. CLAUDE-3.7-SONNET,'}, {'start': '299.239', 'end': '300.820', 'text': 'and we can start generating.'}, {'start': '301.380', 'end': '303.260', 'text': 'If you are new to Cursor AI, I'}, {'start': '303.420', 'end': '304.899', 'text': 'recommend watching another video'}, {'start': '304.899', 'end': '305.779', 'text': 'on my channel.'}, {'start': '306.260', 'end': '308.640', 'text': 'I showed how Cursor AI works'}, {'start': '308.640', 'end': '310.339', 'text': 'and how to'}, {'start': '310.339', 'end': '312.420', 'text': "create a full-stack application in four simple steps.  It'll"}, {'start': '312.920', 'end': '315.019', 'text': 'take a moment to generate the app,'}, {'start': '315.260', 'end': '316.839', 'text': "but in the meantime I'll show you a"}, {'start': '316.839', 'end': '318.359', 'text': 'cool Cursor AI feature I'}, {'start': '318.559', 'end': '319.679', 'text': 'recently discovered.'}, {'start': '320.380', 'end': '322.839', 'text': 'Go to the Features tab in the Cursor settings'}, {'start': '322.839', 'end': '324.700', 'text': 'and scroll down a little.'}, {'start': '325.420', 'end': '326.179', 'text': 'Here you will find the option'}, {'start': '326.179', 'end': '327.640', 'text': 'Play sound on finish.'}, {'start': '328.260', 'end': '330.600', 'text': 'This will allow you to hear a gentle beep'}, {'start': '330.799', 'end': '332.519', 'text': 'when the code generation is complete.'}, {'start': '333.619', 'end': '334.899', 'text': 'Oh, just like now.'}, {'start': '335.440', 'end': '337.019', 'text': 'Code generation has been completed'}, {'start': '337.019', 'end': '338.959', 'text': 'and according to the AI \u200b\u200bthe project is'}, {'start': '338.959', 'end': '340.059', 'text': 'ready to use.'}, {'start': '340.600', 'end': '342.839', 'text': "I'll do a quick code review.  I"}, {'start': '343.540', 'end': '345.200', 'text': "'ll start with the package.json file"}, {'start': '345.200', 'end': '347.019', 'text': 'and check if the'}, {'start': '347.019', 'end': '348.380', 'text': 'correct dependencies are installed.'}, {'start': '349.500', 'end': '350.920', 'text': "Everything looks ok, so let's move on"}, {'start': '350.920', 'end': '353.320', 'text': 'to the main MCP server file.'}, {'start': '354.559', 'end': '355.000', 'text': 'First'}, {'start': '355.000', 'end': '356.760', 'text': 'we have the code related to integration'}, {'start': '356.760', 'end': '359.000', 'text': 'with the Tuya API to manage a'}, {'start': '359.000', 'end': '360.059', 'text': 'smart bulb.'}, {'start': '360.540', 'end': '363.019', 'text': 'To connect to the API they need to configure the'}, {'start': '363.019', 'end': '365.220', 'text': 'appropriate keys in the .env file.'}, {'start': '365.220', 'end': '366.980', 'text': 'Next we have the'}, {'start': '367.040', 'end': '369.320', 'text': 'MCP server initialization.'}, {'start': '369.640', 'end': '370.839', 'text': 'We provide the'}, {'start': '370.839', 'end': '373.440', 'text': 'server name and version number as parameters.'}, {'start': '373.799', 'end': '375.160', 'text': 'Next, an'}, {'start': '375.160', 'end': '377.019', 'text': 'auxiliary function was generated to'}, {'start': '377.019', 'end': '379.000', 'text': 'change the color notation from'}, {'start': '379.000', 'end': '381.239', 'text': 'hexadecimal to HSV.'}, {'start': '381.779', 'end': '383.320', 'text': 'Below is another'}, {'start': '383.320', 'end': '385.260', 'text': 'auxiliary function that controls the bulb.'}, {'start': '385.700', 'end': '387.299', 'text': 'This function'}, {'start': '387.299', 'end': '390.160', 'text': 'connects to the Tuya API'}, {'start': '390.160', 'end': '390.959', 'text': 'and sends'}, {'start': '390.959', 'end': '392.779', 'text': 'appropriate commands to turn'}, {'start': '392.779', 'end': '394.880', 'text': 'the bulb off or on'}, {'start': '394.880', 'end': '396.359', 'text': 'or change its color.'}, {'start': '396.820', 'end': '398.660', 'text': 'At this point I need to make a small'}, {'start': '398.660', 'end': '400.739', 'text': 'modification to the AI \u200b\u200bgenerated code.'}, {'start': '401.440', 'end': '402.899', 'text': 'My bulb is compatible'}, {'start': '402.899', 'end': '404.799', 'text': 'with version two of the'}, {'start': '404.799', 'end': '406.019', 'text': 'bulb color change command.'}, {'start': '406.679', 'end': '408.420', 'text': 'The AI \u200b\u200bmight not have known this.  The'}, {'start': '409.019', 'end': '410.660', 'text': 'following section contains very'}, {'start': '410.660', 'end': '412.559', 'text': 'important code directly related'}, {'start': '412.559', 'end': '413.820', 'text': 'to the MCP server.  The'}, {'start': '414.500', 'end': '416.380', 'text': 'tool method defines the'}, {'start': '416.380', 'end': '418.380', 'text': 'MCP server tools.  This method'}, {'start': '418.380', 'end': '420.239', 'text': 'takes three parameters.  The'}, {'start': '420.239', 'end': '422.279', 'text': 'first one is the name of the tool.  The'}, {'start': '422.519', 'end': '424.320', 'text': 'next step is the definition of the parameters'}, {'start': '424.320', 'end': '426.720', 'text': 'that must be passed to the tool.'}, {'start': '427.000', 'end': '428.440', 'text': 'Here we have defined exactly'}, {'start': '428.440', 'end': '430.239', 'text': 'the parameters that we declared'}, {'start': '430.760', 'end': '432.459', 'text': 'in the prompt, i.e. the new'}, {'start': '432.459', 'end': '433.739', 'text': 'color and state.  The'}, {'start': '434.140', 'end': '436.100', 'text': 'generated code uses the'}, {'start': '436.100', 'end': '438.239', 'text': 'IOD library to validate schemas.'}, {'start': '438.640', 'end': '440.279', 'text': 'Therefore, the notation may seem'}, {'start': '440.279', 'end': '441.359', 'text': 'a bit complicated.  The'}, {'start': '442.079', 'end': '443.899', 'text': 'third parameter is the function executed'}, {'start': '443.899', 'end': '445.700', 'text': 'when this tool is run.'}, {'start': '446.220', 'end': '448.220', 'text': 'This function takes the'}, {'start': '448.220', 'end': '450.339', 'text': 'parameters defined for the tool as arguments.'}, {'start': '450.859', 'end': '452.239', 'text': 'Our tool uses an'}, {'start': '452.239', 'end': '454.299', 'text': 'auxiliary function called control the'}, {'start': '454.299', 'end': '456.359', 'text': 'bulb, which turns'}, {'start': '456.359', 'end': '458.420', 'text': 'the light on or off or changes'}, {'start': '458.420', 'end': '460.160', 'text': 'its color.  Each tool'}, {'start': '460.160', 'end': '462.320', 'text': 'must return an appropriately formatted'}, {'start': '462.320', 'end': '464.100', 'text': 'object with the content of the'}, {'start': '463.940', 'end': '466.220', 'text': 'return message.  The generated code'}, {'start': '466.220', 'end': '468.000', 'text': 'also includes simple error handling.'}, {'start': '468.420', 'end': '470.079', 'text': 'Below is some code related'}, {'start': '470.079', 'end': '472.579', 'text': 'to starting and shutting down the server.  The'}, {'start': '473.480', 'end': '474.160', 'text': 'code looks ok,'}, {'start': '474.380', 'end': '476.339', 'text': "so it's time to test our server."}, {'start': '476.339', 'end': '478.399', 'text': "We'll start by building the"}, {'start': '478.399', 'end': '480.540', 'text': 'resulting files using the'}, {'start': '480.540', 'end': '482.440', 'text': 'npm build command.  This will'}, {'start': '482.440', 'end': '484.140', 'text': 'create a dist directory'}, {'start': '484.140', 'end': '486.559', 'text': 'with transpiled javascript files'}, {'start': '486.559', 'end': '488.140', 'text': 'and mcp server code.'}, {'start': '488.640', 'end': '490.480', 'text': 'Before we test our server in conjunction'}, {'start': '490.480', 'end': '491.859', 'text': 'with artificial intelligence, we will'}, {'start': '492.440', 'end': '494.440', 'text': 'dry-test it.  A special tool, inspector, is available'}, {'start': '494.640', 'end': '496.720', 'text': 'for debugging servers in mcpu'}, {'start': '498.440', 'end': '500.679', 'text': '.'}, {'start': '500.679', 'end': '502.320', 'text': 'This command will launch a'}, {'start': '502.320', 'end': '504.299', 'text': 'special interface that will'}, {'start': '504.299', 'end': '506.380', 'text': 'help us test the created'}, {'start': '506.179', 'end': '508.399', 'text': 'mcp server.  The'}, {'start': '508.399', 'end': '510.200', 'text': 'inspector application has been started'}, {'start': '510.200', 'end': '511.380', 'text': 'on local port'}, {'start': '512.520', 'end': '514.059', 'text': "6274, so let's"}, {'start': '514.059', 'end': '515.179', 'text': 'open it now.'}, {'start': '516.960', 'end': '518.280', 'text': 'Here is the application interface'}, {'start': '518.280', 'end': '520.219', 'text': 'for debugging mcp servers.'}, {'start': '520.739', 'end': '522.140', 'text': 'On the left side there are'}, {'start': '522.140', 'end': '524.179', 'text': 'some settings related to connecting'}, {'start': '524.179', 'end': '526.400', 'text': 'to the mcp server.  However, we are'}, {'start': '526.400', 'end': '528.260', 'text': 'most interested in the connect button'}, {'start': '528.840', 'end': '530.419', 'text': 'to check whether it is possible to connect'}, {'start': '530.419', 'end': '532.359', 'text': 'to the server.  You can'}, {'start': '532.359', 'end': '534.200', 'text': 'now see a green dot at the bottom that says'}, {'start': '534.200', 'end': '535.919', 'text': 'connected, so everything is working.  The'}, {'start': '536.539', 'end': '538.299', 'text': 'window at the bottom shows the history of'}, {'start': '538.299', 'end': '540.239', 'text': 'communication with the mcp server.'}, {'start': '540.679', 'end': '542.200', 'text': 'During the connection,'}, {'start': '542.200', 'end': '544.119', 'text': 'one initialization message was sent,'}, {'start': '544.559', 'end': '546.440', 'text': 'and then our server returned information'}, {'start': '546.440', 'end': '547.960', 'text': 'about its name and version.'}, {'start': '548.520', 'end': '550.280', 'text': 'At the top of the inspector there are'}, {'start': '550.280', 'end': '552.479', 'text': 'several tabs.  However, we are most'}, {'start': '552.479', 'end': '553.780', 'text': 'interested in the tools tab.'}, {'start': '554.419', 'end': '556.539', 'text': 'In this tab we can simulate the'}, {'start': '556.539', 'end': '558.780', 'text': 'execution of the tool from the mcp server.'}, {'start': '559.419', 'end': '560.520', 'text': "First, I'll click the"}, {'start': '560.520', 'end': '562.479', 'text': 'list tools button.  This'}, {'start': '562.479', 'end': '564.400', 'text': 'will display a list of tools'}, {'start': '564.400', 'end': '566.260', 'text': 'available from our server.'}, {'start': '566.380', 'end': '568.679', 'text': 'In our case there is only one tool available'}, {'start': '568.679', 'end': '570.020', 'text': 'change light.'}, {'start': '570.659', 'end': '572.679', 'text': 'In the communication history we can see'}, {'start': '572.679', 'end': '574.419', 'text': 'the content of the message that was'}, {'start': '574.419', 'end': '576.280', 'text': 'returned by the server.  We can'}, {'start': '576.280', 'end': '578.400', 'text': 'also see the toolbar.  We'}, {'start': '578.700', 'end': '580.719', 'text': 'also see a diagram of the parameters that are'}, {'start': '580.820', 'end': '582.440', 'text': 'necessary for the'}, {'start': '582.440', 'end': '584.880', 'text': 'tool to operate.  This will allow the language model to'}, {'start': '584.880', 'end': '586.659', 'text': 'know what parameters to'}, {'start': '586.659', 'end': '588.359', 'text': 'send to the mcp server when'}, {'start': '588.359', 'end': '589.960', 'text': 'executing this tool.'}, {'start': '590.960', 'end': '592.479', 'text': 'We will now perform a manual'}, {'start': '592.479', 'end': '594.619', 'text': 'test of this tool.'}, {'start': '594.619', 'end': '596.280', 'text': 'Select the change light tool from the list'}, {'start': '596.659', 'end': '598.679', 'text': 'and a form'}, {'start': '598.679', 'end': '600.359', 'text': 'with fields corresponding to the'}, {'start': '600.359', 'end': '602.260', 'text': 'tool parameters will appear on the right.  I will now fill in'}, {'start': '602.260', 'end': '604.400', 'text': 'these fields accordingly and'}, {'start': '604.400', 'end': '606.140', 'text': 'click the run tool button.'}, {'start': '609.940', 'end': '610.520', 'text': 'See for yourself'}, {'start': '610.700', 'end': '611.640', 'text': 'what happened now.'}, {'start': '612.239', 'end': '614.460', 'text': 'My light changed color and I got a'}, {'start': '614.460', 'end': '616.359', 'text': 'message that the bulb was'}, {'start': '616.359', 'end': '618.080', 'text': 'turned on with the set color.'}, {'start': '618.700', 'end': '620.460', 'text': "I'll try disabling it now and"}, {'start': '620.460', 'end': '621.340', 'text': 'running the tool again.'}, {'start': '622.919', 'end': '624.280', 'text': 'As you can see,'}, {'start': '624.280', 'end': '625.580', 'text': 'darkness has fallen.'}, {'start': '626.140', 'end': '627.739', 'text': 'The light bulb behind me turned off.'}, {'start': '628.140', 'end': '629.859', 'text': 'Our'}, {'start': '629.859', 'end': '632.140', 'text': 'mcp tool and server seem to be working properly.'}, {'start': '633.140', 'end': '634.320', 'text': "Now it's high time to"}, {'start': '634.320', 'end': '636.059', 'text': 'connect our server to'}, {'start': '636.059', 'end': '637.940', 'text': 'real artificial intelligence.'}, {'start': '639.400', 'end': '640.140', 'text': 'We will use the'}, {'start': '640.140', 'end': '641.679', 'text': 'Cloud Desktop application for this.'}, {'start': '642.119', 'end': '643.940', 'text': 'This is probably the most popular application'}, {'start': '643.940', 'end': '645.679', 'text': 'that supports mcp servers.'}, {'start': '646.039', 'end': '648.119', 'text': 'After all, the mcp protocol was created'}, {'start': '648.119', 'end': '649.799', 'text': 'by the creators of the Cloud series models'}, {'start': '649.799', 'end': '651.679', 'text': ', Antropic.'}, {'start': '652.419', 'end': '653.919', 'text': 'However, there are already a large'}, {'start': '653.919', 'end': '655.640', 'text': 'number of other tools on the market that'}, {'start': '655.640', 'end': '657.799', 'text': 'support the mcp protocol.'}, {'start': '658.419', 'end': '659.900', 'text': 'You will find a link to a list of these tools'}, {'start': '659.900', 'end': '661.099', 'text': 'in the description.'}, {'start': '661.500', 'end': '663.840', 'text': "Now let's go to the Cloud Desktop settings"}, {'start': '663.840', 'end': '665.340', 'text': 'and the Developer tab.'}, {'start': '666.140', 'end': '667.820', 'text': 'Here we will get information'}, {'start': '667.820', 'end': '669.960', 'text': 'about the mcp servers used.'}, {'start': '670.719', 'end': '672.400', 'text': "We don't have"}, {'start': '672.400', 'end': '674.179', 'text': 'any tools configured yet, so click the'}, {'start': '674.179', 'end': '675.539', 'text': 'Edit Config button.'}, {'start': '676.020', 'end': '677.919', 'text': 'At this point, a'}, {'start': '678.099', 'end': '679.799', 'text': 'configuration file in JSON format will be specified,'}, {'start': '680.400', 'end': '682.479', 'text': 'which should be opened with any editor.'}, {'start': '683.000', 'end': '684.440', 'text': 'In this file you need to configure the'}, {'start': '684.440', 'end': '685.359', 'text': 'mcp server.'}, {'start': '686.200', 'end': '688.500', 'text': 'We do this using a specially prepared'}, {'start': '688.500', 'end': '689.159', 'text': 'JSON structure.'}, {'start': '689.979', 'end': '692.340', 'text': 'This is an object with the server name as the key.'}, {'start': '692.960', 'end': '694.219', 'text': 'Inside the object there are'}, {'start': '694.219', 'end': '696.020', 'text': 'several properties that define'}, {'start': '696.020', 'end': '697.940', 'text': 'how the server is to be started.'}, {'start': '698.460', 'end': '699.619', 'text': 'In this case we use'}, {'start': '699.619', 'end': '701.900', 'text': 'Node.js to run the application.  The'}, {'start': '702.719', 'end': '703.960', 'text': 'parameter should be the'}, {'start': '703.960', 'end': '705.940', 'text': 'path to the output file'}, {'start': '705.940', 'end': '707.580', 'text': 'with our mcp server.'}, {'start': '708.119', 'end': '709.440', 'text': 'Additionally, it also defines'}, {'start': '709.440', 'end': '711.460', 'text': 'environment variables with connection keys'}, {'start': '711.460', 'end': '712.640', 'text': 'to the Tuya API.'}, {'start': '713.280', 'end': '715.400', 'text': 'Once you have completed the file, you must save it'}, {'start': '715.640', 'end': '717.400', 'text': 'and then restart the entire'}, {'start': '717.400', 'end': '718.799', 'text': 'Cloud Desktop application.'}, {'start': '720.119', 'end': '721.780', 'text': 'After restarting the application,'}, {'start': '721.780', 'end': '723.460', 'text': 'we see an additional icon in the chat window,'}, {'start': '723.820', 'end': '725.239', 'text': 'which indicates that we are using'}, {'start': '725.239', 'end': '726.679', 'text': 'one mcp server.'}, {'start': '726.679', 'end': '729.039', 'text': 'After clicking on it we see a list of tools'}, {'start': '729.340', 'end': '730.260', 'text': 'that are available.'}, {'start': '730.780', 'end': '732.840', 'text': 'Here we see our Change Light tool,'}, {'start': '733.140', 'end': '735.559', 'text': 'so everything is set up correctly.'}, {'start': '736.419', 'end': '736.960', 'text': "So now let's try to"}, {'start': '736.960', 'end': '738.419', 'text': 'use this tool.  Let'}, {'start': '739.140', 'end': '740.239', 'text': "'s start with the prompt"}, {'start': '740.239', 'end': '742.760', 'text': "I'm going to bed, turn off the light.  The"}, {'start': '743.479', 'end': '744.539', 'text': 'model wishes us good night'}, {'start': '744.820', 'end': '746.919', 'text': 'and then announces its intention to use the'}, {'start': '746.919', 'end': '747.960', 'text': 'Change Light tool.'}, {'start': '748.559', 'end': '750.559', 'text': 'However, before he uses it, we must give our'}, {'start': '750.559', 'end': '751.440', 'text': 'consent.'}, {'start': '752.000', 'end': '754.080', 'text': 'In the window that pops up, click the'}, {'start': '754.080', 'end': '755.340', 'text': 'Hello for this chat button.'}, {'start': '757.659', 'end': '758.619', 'text': 'And now as you can see'}, {'start': '758.640', 'end': '760.020', 'text': 'the light has gone out.'}, {'start': '760.440', 'end': '762.039', 'text': 'Here we can see'}, {'start': '762.039', 'end': '764.000', 'text': 'what parameters were sent'}, {'start': '764.000', 'end': '765.679', 'text': 'to our tool and'}, {'start': '765.679', 'end': '767.739', 'text': "what response was returned.  It's"}, {'start': '768.280', 'end': '769.799', 'text': 'gotten a little too dark,'}, {'start': '770.000', 'end': '772.020', 'text': "so I'll turn the bulb back on"}, {'start': '772.239', 'end': '773.500', 'text': 'without moving from my spot.'}, {'start': '774.599', 'end': '776.159', 'text': "I'll do some more tests"}, {'start': '776.159', 'end': '778.020', 'text': 'changing the light color settings.'}, {'start': '779.359', 'end': '781.140', 'text': "Okay, that's the end of the fun."}, {'start': '782.280', 'end': '784.340', 'text': 'Our MCP server to control the'}, {'start': '784.340', 'end': '786.119', 'text': 'light bulb is very simple,'}, {'start': '786.619', 'end': '788.580', 'text': 'but of course MCP servers'}, {'start': '788.580', 'end': '790.500', 'text': 'can support many tools,'}, {'start': '790.940', 'end': '792.140', 'text': 'and these tools can be'}, {'start': '792.140', 'end': '793.599', 'text': 'much more extensive'}, {'start': '793.599', 'end': '794.700', 'text': 'and complex.'}, {'start': '795.460', 'end': '797.419', 'text': 'My team and I are working on an'}, {'start': '797.719', 'end': '799.500', 'text': 'advanced MCP server'}, {'start': '800.020', 'end': '801.440', 'text': 'for WordPress'}, {'start': '801.659', 'end': '803.559', 'text': 'that will connect via REST API'}, {'start': '804.140', 'end': '806.280', 'text': 'to retrieve data and change settings.'}, {'start': '806.280', 'end': '808.280', 'text': 'It will also run WPCLI commands,'}, {'start': '809.400', 'end': '810.599', 'text': 'create themes, plugins,'}, {'start': '810.599', 'end': '812.239', 'text': 'and Gutenberg blocks,'}, {'start': '812.280', 'end': '814.419', 'text': 'while also testing and analyzing'}, {'start': '814.419', 'end': '816.460', 'text': 'code to increase the accuracy of'}, {'start': '816.479', 'end': '817.960', 'text': 'generated solutions.'}, {'start': '818.559', 'end': '820.640', 'text': 'If you would like to use such a server, please'}, {'start': '821.059', 'end': '822.619', 'text': 'sign up for the waiting list'}, {'start': '822.619', 'end': '824.719', 'text': 'available at the link in the description.'}, {'start': '824.900', 'end': '826.640', 'text': 'There are also a large number of community-created'}, {'start': '826.640', 'end': '828.260', 'text': 'MCP servers already ready to use'}, {'start': '828.260', 'end': '829.840', 'text': '.  You will also find a'}, {'start': '830.679', 'end': '832.659', 'text': 'link to the repository with other servers'}, {'start': '832.659', 'end': '834.760', 'text': 'in the description.'}, {'start': '834.760', 'end': '837.239', 'text': 'If you liked this episode, please'}, {'start': '837.320', 'end': '839.020', 'text': 'give it a thumbs up'}, {'start': '839.020', 'end': '841.080', 'text': 'and be sure to let us know in the comments'}, {'start': '841.080', 'end': '842.760', 'text': 'which MCP servers you use'}, {'start': '843.280', 'end': '845.059', 'text': 'or which ones you would like to create.'}, {'start': '845.580', 'end': '847.140', 'text': 'See you in the next episode.'}]