HomeVideos

¡Aprende MCP! Para principiantes + Crear nuestro primer MCP DESDE CERO

Now Playing

¡Aprende MCP! Para principiantes + Crear nuestro primer MCP DESDE CERO

Transcript

1981 segments

0:00

Hoy te voy a explicar qué es el MCP

0:04

Model Context Protocol. El protocolo de

0:07

contextos de modelo. Básicamente es un

0:09

protocolo que está sonando muy fuerte

0:12

por todas las redes, por todos los

0:15

sitios y que se está poniendo muy de

0:16

moda. ¿Y por qué? Porque estamos

0:18

hablando nada más y nada menos que un

0:21

protocolo de comunicación que permite a

0:23

los modelos de lenguaje como puede ser

0:26

CHGPT, Cloue y todos estos interactuar

0:30

con el mundo exterior porque amigos

0:31

tenemos un problema con CH GPT, cloue y

0:35

cualquier inteligencia artificial que te

0:37

guste. Y es que tú muchas veces

0:38

seguramente dices, "Ah, vale, pues

0:40

quiero preguntarle una cosa." Su

0:42

conocimiento puede ser muy grande, pero

0:45

lo que puede llegar a hacer es más bien

0:47

limitado. Por ejemplo, tu HGPT no le

0:49

puedes pedir que te cree un repositorio

0:52

o una pull request directamente en

0:53

GitHub. Te puede decir cómo hacerlo,

0:55

pero no lo hace. Eso es porque está

0:57

limitada, su campo de acción está

0:59

limitado. En cambio, ¿qué pasa? Pues que

1:01

con los MCP, con este protocolo, lo que

1:03

podemos hacer es muy fácil. De hecho,

1:06

vamos a hacer un croquis para que lo

1:08

veamos todos s super bien. Tú imagínate

1:11

que tenemos aquí pues nuestro chat GPT o

1:14

Cloue o lo que vosotros queráis o por

1:16

ejemplo también puede ser GH copilot o

1:19

incluso Winsurf o Cursor, lo que

1:22

queráis. Aquí estamos hablando, aquí

1:25

estaríamos hablando justamente de los

1:28

clientes. Esto sería el cliente en

1:31

realidad, ¿vale? El cliente. ¿Por qué?

1:32

porque es la, digamos, la parte que está

1:35

como más pendiente de consumir, ¿no? Y

1:39

nosotros muchas veces lo que hacemos es

1:41

preguntarle algo. Nosotros decimos,

1:43

"Bueno, vamos a ponerle aquí un

1:45

desarrollador, ¿vale?" Y este

1:47

desarrollador que está en modo oscuro,

1:49

me hace mucha gracia que cuando se pone

1:51

en modo oscuro se le va la se le va la

1:53

olla. Claro, cuando tú le pides

1:54

información, pues la información que él

1:57

se sabe, pues perfecto, te la devuelve y

1:59

ya está. ¿Vale? Esto es como, por

2:00

ejemplo, si le haces una pregunta, le

2:03

haces una pregunta, ¿vale? Le dices una

2:04

pregunta y lo que te devuelve es la

2:07

respuesta. Esto está muy bien porque

2:09

esto es fácil. Ahora, ¿qué pasa si tú en

2:12

lugar de hacerle una pregunta, ¿vale?, y

2:15

una pregunta de la respuesta, lo que

2:16

dices, "No, no, yo lo que quiero es que

2:18

haga una acción, ¿vale? Por ejemplo, una

2:21

acción, yo qué sé, puede ser, mira, esto

2:24

vamos a decir que haga una acción. El

2:26

problema es que al hacer una acción no

2:28

es capaz, no tiene forma de de decir,

2:31

ostras, ¿cómo lo puedo hacer esto? ¿Cómo

2:33

puedo crear un repositorio? O cómo o

2:35

cosas incluso que son en tiempo real,

2:37

como por ejemplo, ¿qué tiempo hace hoy?

2:39

Vale, ¿qué tiempo hace? ¿Hay sol en mi

2:41

ciudad? ¿Hay sol? Claro, ahora mismo,

2:44

por ejemplo, CHGPT no es capaz de darte

2:46

cosas en tiempo real. Tendría que buscar

2:48

a internet, que al menos eso ya sería un

2:50

MCP, ¿no? Un model context protocol que

2:53

al menos puede buscar en internet. Pero

2:55

a mí me gustaría que tuviese como más

2:57

acciones diferentes. Vale, pues, ¿qué

2:59

pasa ahora? Pues que no es capaz de

3:01

hacerla. Para arreglar esto, lo que

3:03

vamos a hacer es otra cosa que vamos a

3:05

poner aquí en medio. Aquí vamos a tener,

3:07

mira, vamos a tener aquí la acción. Yo

3:10

le digo, "Vale, acción." Y lo que va a

3:12

hacer aquí, en este caso, en lugar de

3:14

devolvernos directamente, vamos a crear

3:17

nosotros lo que le vamos a llamar un

3:20

MCP, ¿vale? que lo vamos a poner eh aquí

3:22

en medio, lo vamos a poner de color

3:23

verde, un MCP. ¿Y qué es el MCP? Este,

3:28

el MCP que vamos a tener aquí, que este

3:29

va a ser pues el servidor. De hecho, la

3:32

comunicación, la comunicación realmente

3:34

sería el MCP, ¿vale? Y ahora os

3:36

explicaré, luego veremos por qué, ¿vale?

3:38

Pero esto sería más servir el MCP porque

3:40

es un protocolo de comunicación. Y aquí

3:43

lo que tendríamos es lo que lo que sea

3:45

que queramos hacer. Por ejemplo,

3:47

imagínate que es conectarse a la API de

3:51

GitHub, por ejemplo. Vale, imagínate que

3:53

lo estamos diciendo acción, crea una

3:56

pool request con una solución. Esto lo

3:58

vamos a ver hoy, ¿eh? O sea, no os

3:59

preocupéis que lo vamos a ver hoy

4:01

perfectamente de cómo hacer esto, ¿vale?

4:03

Vamos a ver cómo lo podemos crear

4:05

nosotros e incluso cómo podemos ya

4:07

utilizar servidores que otra gente ha

4:08

hecho, que eso es lo que lo hace todavía

4:09

más interesante de que la gente ahora va

4:11

a poder comerciar con estos MCPs. Bueno,

4:14

pues aquí lo tendríamos. tendría que

4:16

aquí pasa, aquí le pregunta, "Oye, ¿cómo

4:18

puedo hacer esto?" El servidor le trata,

4:21

le dice, "Vale, esto es conectándose a

4:23

la Gijcam, no sé qué." Le vamos a pasar

4:25

aquí toda la información con toda la

4:28

información que le tengamos que enviar.

4:30

Esto al final lo que hace es devolverle

4:33

todo lo que ha hecho, ¿vale? El servidor

4:35

se lo devuelve aquí, ¿vale? se lo

4:38

devuelve al cliente, en este caso, al

4:40

modelo, y el modelo una vez que ya tiene

4:43

esta respuesta, es que entonces se lo

4:46

pasa a devolver al al a nuestro usuario,

4:50

¿vale? O sea, voy a ponerlo justo aquí

4:52

para que se note. O sea, que tened en

4:54

cuenta que primero la acción, segundo lo

4:57

que hace el cliente en este caso es

5:00

mirar cuál es el MCP que tiene que

5:02

utilizar y pasarle la información.

5:03

Tercero, tendríamos aquí la respuesta,

5:07

¿vale? La respuesta del servidor. Y

5:09

finalmente lo que hace nuestro modelo o

5:13

nuestra inteligencia artificial es

5:15

tratar esa información y enviársela de

5:18

forma ya tratada, ¿vale? O sea, que ya

5:20

lo que va a decir es entender la

5:22

respuesta y decir, "Vale, esta es la

5:24

respuesta que quiere mi usuario."

5:25

Perfecto, pues le voy a dar una

5:28

respuesta tratada con. Y esto es

5:31

importante porque vais a ver que aunque

5:32

nosotros desde el servidor le pasemos un

5:35

Jason, ¿vale? Si nosotros en el servidor

5:38

hacemos, le pasamos un Jason, un voleano

5:40

o lo que sea, la inteligencia artificial

5:42

va a ser capaz de entender esta

5:45

respuesta y decir, "Ostras, si me está

5:47

devolviendo este Jason", significa tal,

5:50

sin necesidad de hacer ningún tipo de

5:52

programación, la inteligencia artificial

5:53

va a entender la respuesta del Jason y

5:55

la va a tratar para dársela bien al

5:58

usuario. ¿Vale? No te preocupes que todo

6:00

esto, todo esto que estamos haciendo hoy

6:02

lo vamos a ver todo, todo lo vamos a

6:04

hacer hoy y lo vamos a ver paso a paso y

6:05

desde cero, ¿vale? Tanto creándolo

6:08

nosotros desde cero como eh utilizar

6:11

MCPs que ya existen. ¿Vale? Muy bien.

6:14

Entonces, para que entendamos

6:15

rápidamente qué es MCP es Model Context

6:18

Protocol, un protocolo de comunicación.

6:21

Comunicación entre qué, pues entre los

6:23

modelos de inteligencia artificial y

6:25

servidores donde vamos a poder

6:27

conectarnos con APIs, con bases de

6:30

datos, con servicios externos, con el

6:32

sistema de archivos de nuestro

6:33

ordenador. Para que lo entiendas fácil,

6:35

el model Context Protocol sería como un

6:38

USB donde mientras que el USB para

6:41

conectar dispositivos a diferentes

6:43

periféricos y accesorios, el MCP es una

6:46

forma estandarizada para conectar

6:48

modelos de inteligencia artificial a

6:50

fuentes de datos y herramientas

6:51

externas. ¿Vale? Eso es lo más

6:53

importante. Ahora, la pregunta del

6:55

millón, ¿de dónde sale esto del Model

6:57

Contest Protocol? ¿De dónde ha salido

6:58

este protocolo? Este protocolo que

7:01

sepáis que lo creó la gente de

7:03

Anthropic, ¿vale? Que son los de Cloue y

7:05

ahora mismo es totalmente abierto. De

7:07

hecho, tenéis repositorios donde puedes

7:10

hacer y puedes mirar un montón de cosas.

7:12

Tienes SDC, los tienes en TypeScript, en

7:16

Python, en Java, en Codlin y en CSARP.

7:20

Vale, ahí los tienes. Type, Python,

7:22

Java, Colin y Csarp. Por ahora son los

7:26

SDK oficiales, así que puedes crear MCPs

7:29

en cualquier lenguaje de estos. Ahora,

7:31

en la documentación, la documentación es

7:33

impresionante, está muy bien, muy bien

7:35

explicada, la de Python, la de

7:37

TypeScript, todas está muy bien. Y en

7:39

todas te va a explicar cómo empezar

7:41

desde cero. Mira, aquí tenemos un poco

7:42

lo que os comentaba. Yo lo he hecho de

7:44

otra forma, pero aquí tendríais un poco

7:45

esto, ¿vale? Nosotros no vamos a pasar

7:47

por esto. Os lo voy a explicar yo, o

7:49

sea, lo haremos sobre la marcha, ¿vale?

7:51

para no perder mucho el tiempo. Pero

7:53

cuando veáis aquí que pone, por ejemplo,

7:55

para desarrolladores server y para

7:57

desarrolladores de cliente, para que

7:59

entendáis esto, para los clientes sería

8:03

CHGPT, Winsurf, Cursor, Visual Studio

8:06

Code, eh Clou, eso serían los clientes,

8:09

esos son los client developers. Nosotros

8:12

nos vamos a enfocar hoy en los server

8:14

developers porque lo más interesante es

8:16

que creamos nosotros los MCPs que vamos

8:18

a consumir, ¿vale? Entonces, no vamos a

8:20

hacer la parte del cliente porque ya

8:22

tenemos clientes como Visual Studio Code

8:24

y eso no no es necesario que lo hagamos

8:26

nosotros, pero por otro lado vamos a

8:28

hacer la parte del servidor. Eh, dice,

8:30

mira, me dice sistemas argentinos que

8:32

dice que hay más SDC. Como ya os he

8:34

comentado, estos son los oficiales de

8:36

Model Contest Protocol, pero hay muchos

8:38

más. Por ejemplo, hay de Rust, hay de

8:39

Go, pero no están aquí porque no son

8:41

oficiales. Hay algunos que están un

8:43

poquito que les falta una cosita.

8:45

funcionar más o menos funcionan bien

8:46

todos, pero los oficiales de Model

8:48

Contex Protocol que ellos están ahora

8:50

mismo manteniendo son estos de aquí,

8:52

¿vale? Entonces, esto, como os he dicho

8:55

al inicio, como lo creó la gente de

8:57

Anthropic, solo se podía utilizar con

9:00

cloud. Ahora, este protocolo, como se ha

9:02

hecho bastante abierto, pues se ha

9:04

convertido en un estándar que ya todo el

9:06

mundo lo está utilizando. De hecho, hoy

9:08

veremos cómo utilizarlo en Cloude, pero

9:10

también podríamos ver lo vamos a ver

9:11

cómo se utiliza con Visual Studio Code y

9:13

vas a ver que se utiliza exactamente lo

9:15

mismo. Y ahora la pregunta del millón,

9:17

¿por qué deberías aprender MCPs? A ver,

9:20

¿por qué aprender Model Context

9:22

Protocol? ¿Y por qué me debería quedar?

9:24

Mira, te voy a decir, ten en cuenta que

9:26

los MCPs una de las cosas más

9:28

importantes es que te va a permitir

9:31

crear agentes de inteligencia

9:33

artificial. ¿Por qué? Porque eso es el

9:36

futuro y además necesitamos que las

9:38

inteligencias artificiales sean

9:40

autónomas para hacer un montón de cosas

9:42

y para eso vamos a necesitar MCPs. Así

9:44

que como lo más normal para que una

9:47

agente funcione es que pueda de forma

9:49

independiente hacer cosas, vas a tener

9:51

que crear MCPs. Pero hay un montón de

9:53

cosas también. Necesitas al menos saber

9:55

lo que es porque cada vez hay más

9:56

integraciones. Hoy vamos a ver unas

9:58

cuantas, pero así vas a entender cómo

10:00

utilizarlos y cuándo utilizarlos. La

10:02

flexibilidad para poder cambiar entre

10:04

proveedores y vendedores de lenguajes. O

10:06

sea, podrías cambiar de CH GPT a Cloue

10:09

gracias a que tienes un MCP que de

10:11

alguna forma te va a servir como puente

10:14

entre ellos para no tener que ser

10:16

específico de Char GPT o cloue porque el

10:18

MCP va a ser compatible con los dos.

10:20

mejores prácticas para asegurar datos

10:22

dentro de tu infraestructura. Son los

10:24

MCPs son mucho más privados en el

10:26

sentido de que lo mantienes tú, vas a

10:28

poder llamar a APIs, vas a poder hacer

10:29

lo que quieras. Es un estándar abierto y

10:31

es un estándar de facto y la comunidad

10:33

cada vez es más grande. De hecho, para

10:36

que veáis cómo es la comunidad, fijaos

10:38

que hay páginas como esta de mcp.so

10:41

en las que tienes un montón de

10:43

servidores que la gente ya ha creado de

10:45

MCPs, por ejemplo, para conectarte con

10:47

los servicios de Clfler, para conectarte

10:49

directamente con la base de datos que

10:51

tienes en Neon, con, yo que sé, para

10:53

preguntarle directamente a Perplexity

10:55

desde la inteligencia artificial. Es que

10:57

hay un montón y cada vez hay más. De

10:59

hecho, hoy vamos a ver unos cuantos y

11:01

los vamos a utilizar para que veas cómo

11:02

de potente es. ¿Vale? Y aquí la idea

11:04

también, y esto también es interesante

11:06

para eh aprenderlo, es que va a haber

11:08

mucho mercado. Como puedes ver, aquí

11:10

estamos viendo que hay ya un catálogo de

11:13

MCPs. Y la idea, quién sabe, es que ya

11:16

están hablando de por qué no hacer MCPs

11:19

que sean de pago, ¿sabes? Que tengan una

11:21

suscripción. Todo ese tipo de cosas se

11:23

pueden hacer. Al final del curso os

11:25

comentaré cómo se está empezando ya a

11:27

trabajar en esto, porque incluso los

11:29

MCPs puedes iniciar sesión. es bastante

11:32

interesante y luego te lo comentaré,

11:34

¿vale? Mucho más adelante cuando ya

11:35

veamos los ejemplos más más típicos. Y

11:38

la mejor noticia de todas, ¿vale?, es

11:40

que Open AI, la gente de HGPT, ya ha

11:44

aceptado este protocolo como la forma

11:47

correcta de proveer de contexto y

11:49

herramientas a los LLM, o sea, ya para

11:52

el SDK de agentes de Open AI, el

11:54

oficial, ya ellos están utilizando

11:57

también MCPS, así que ya podéis ver que

11:59

no es una cosa que sea de un sitio en

12:02

concreto, sino que es que cada vez más y

12:04

más lo están utilizando. Es que ya se ha

12:06

convertido en el estándar de facto, así

12:08

que te tiene que sonar. Vale, ya tenemos

12:09

esto, ya tenemos la explicación. Vamos a

12:13

probar nuestro primer MCP para ver, oye,

12:17

¿cuál es la utilidad real de todo esto?

12:19

¿No? ¿Para qué sirve realmente los MCPs?

12:22

Bueno, si vamos directamente al

12:24

repositorio de la parte de servidores

12:27

del Model Context Protocol, aquí tenemos

12:29

un ritmi brutal, pero fíjate que tenemos

12:31

ya una selección de servidores de

12:34

referencia de Google Maps, Google Drive,

12:37

de Cir Party, hay un montón, ¿vale?

12:39

Podríamos elegir uno, el que el que

12:41

queramos, pero yo me voy a quedar y

12:44

vamos a probar. El primero que vamos a

12:45

probar va a ser uno que es bastante, hay

12:47

bastante sencillitos, ¿vale? Pero vas a

12:49

ver con esto ya cómo de potentes son.

12:51

Por ejemplo, hay aquí ya uno que es data

12:54

and file system, por ejemplo, un MCP que

12:56

lo que te permite es utilizar tu sistema

13:00

de archivos. Esto es un MCP que lo que

13:02

te da la posibilidad de hacer

13:04

operaciones en tu sistema de archivos.

13:06

Imagínate que estás hablando a

13:07

inteligencia artificial y le dices,

13:09

"Léeme este archivo, elimina este

13:11

archivo, mu mueve este fichero aquí, eh,

13:13

recupera los metadatos, todo este tipo

13:15

de cosas, ¿no? Vale, pues aquí lo

13:17

tendríamos. Ahora, para utilizar esto,

13:19

esto no hace falta programarlo porque ya

13:21

está hecho, ¿no? Y por lo tanto ya no

13:22

tendríamos que hacer absolutamente nada.

13:24

Hay dos formas normalmente de utilizar

13:26

MCPs, una utilizando Docker, ¿vale? Y

13:29

otra utilizando NPX, que suele ser un

13:31

poco la más sencilla de todas. Ahora

13:34

vamos a hacer una cosa. Voy a abrir

13:36

cursor. Ay, cursor Clou, perdón, cursor,

13:39

no, vale, aquí lo tenemos. Lo cierto es

13:41

que es raro porque aunque Cloue es el

13:44

primero, o sea, es de Antropic, lo

13:46

cierto es que es un poco complicadeta al

13:49

principio cómo entrar y cómo

13:50

configurarlo, ¿vale? Así que tendríamos

13:53

que hacer deamos aquí settings y aquí en

13:56

settings te aparecerá esta ventana y

13:58

aquí en developer vas a ver que tienes

14:00

cloud, puedes recibir información como

14:02

promps, bueno, eh archivos adjuntos

14:04

especializado en servidor utilizando los

14:06

model context protocol, ¿vale? Y te dice

14:08

get started o te dice edit config. Si tú

14:10

le das a edit config, lo que te hace es

14:13

que está muy bien, muy mal montado por

14:14

ahora, ¿eh? Vale, lo que hace es

14:16

directamente decirte el archivo en el

14:19

que tienes la configuración Jason.

14:21

Bueno, vamos a abrirlo con Visual Studio

14:23

Code y ya tenemos por aquí, ¿vale? Ya

14:26

tenemos aquí el archivo. Fíjate que es

14:28

un archivo Jason MCP Servers y aquí

14:30

tiene un objeto vacío. Justamente ese

14:32

objeto vacío es donde tengo que poner

14:36

este file system. Este de aquí me lo voy

14:38

a copiar todo para no cagarla, ¿vale?

14:42

Así que vamos a poner esto. Así hay unas

14:45

cositas aquí que tenemos que cambiar.

14:47

Vamos a ver cómo funciona esto. En MCP

14:49

Servers tendríamos el nombre del MCP,

14:51

que esto es un nombre decorativo. O sea,

14:53

esto tú le puedes poner aquí lo que tú

14:55

quieras, ¿vale? Pero bueno, está bien

14:57

que tenga sentido el nombre. En este

14:59

caso está utilizando el comando NPX.

15:01

Este argumento es para aceptar la

15:04

instalación de lo que haga falta. Y esto

15:06

sería el paquete que va a ejecutar,

15:09

¿vale? El Model Context Protocol Server

15:11

File System. Esto es un model context

15:14

protocol, digamos, oficial dentro de lo

15:16

que cabe, que te permite llegar y

15:19

utilizar el sistema de archivos de tu

15:20

ordenador. Aquí tendrías que pasarle los

15:23

directorios a los que les das permiso.

15:26

Importante, ¿no? Porque no va a tener

15:28

acceso a todo tu ordenador de repente,

15:30

sino que tú le vas a indicar a qué

15:32

directorios quieres que tenga permiso.

15:34

Yo le voy a indicar, por ejemplo, que le

15:36

vamos a dar permiso solo al escritorio.

15:39

¿Vale? Voy a guardar los cambios. Aquí

15:41

guardo los cambios. Y aquí en Cloud

15:43

ahora lo que voy a hacer porque ya os

15:44

digo que no está muy bien montado, luego

15:47

vais a ver que Visual Studio Code está

15:48

mucho mejor montado. Voy a cerrar Cloud,

15:51

voy a volver a abrirlo y ahora vamos a

15:54

ver un pequeño cambio. Fíjate que ahora

15:57

aquí ha aparecido como una caja de

15:59

herramientas y me pone 11 y me dice 11

16:02

herramientas MCP disponibles. Si tú le

16:05

das un clic, te va a indicar todas las

16:07

herramientas MCP que tiene, que ha

16:10

cargado, ¿no? crear directorios, ver el

16:12

sistema de ver la lista de de de

16:15

directorios, veritar un archivo, retomar

16:19

o tomar lo la información de un archivo,

16:22

listar un directorio, mover un archivo.

16:24

¿Ves? Aquí tenemos como las diferentes

16:26

herramientas que tiene un MCP. Luego

16:28

vamos a crear nosotros un MCP para que

16:29

veas cómo se crea esto y de dónde sale

16:32

esta información. Pero ahora ya que

16:33

tenemos esto, le puedo decir, "Venga,

16:35

pues ya, ¿qué archivos tengo en mi

16:37

escritorio?"

16:38

Vale, le preguntamos y lo que va a hacer

16:41

automáticamente la inteligencia

16:43

artificial va a decir, "Ostras, teniendo

16:45

en cuenta que tiene un MCP con el

16:48

contexto de de es del sistema de

16:50

archivos, fíjate que ya he entendido que

16:53

tiene que preguntar y utilizarlo. Te va

16:55

a pedir justamente permisos porque, y

16:58

ojo, cuidado con esto, tened mucho

17:00

cuidado con los MCPs que instaláis por

17:02

ahí. Hay muchos MCPs que lo que hacen es

17:05

robarte tokens, robarte información, que

17:09

te puede intentar enviar la información

17:11

de la conversación, un montón de cosas.

17:13

Tened cuidado con este tipo de cosas.

17:14

Siempre instalad MCPs que sean de

17:16

confianza, ¿vale? Porque se están

17:18

encontrando ahora como está tanto el

17:19

hype, mucha gente los está instalando y

17:22

ya te lo está avisando por aquí.

17:23

Entonces, le puedes decir, le puedes dar

17:25

permiso una vez o para todo el chat. Yo

17:27

le voy a decir para todo el chat, ¿vale?

17:29

O sea, la conversación que estamos

17:30

teniendo. Fíjate que ya ahora como tiene

17:33

que ejecutar otra herramienta, pues

17:36

también me está pidiendo permiso, ¿vale?

17:37

Otra vez. Ahora, siempre que sea la

17:39

misma conversación, ya no me pedirá otra

17:40

vez. Fíjate que aquí pues ya tenemos

17:43

todos los archivos y ya me lo está

17:44

indicando. Ahora ya tenemos aquí como

17:46

esa integración de algo externo que es

17:49

mi ordenador con esto que podría haber

17:51

sido CH GPT Visual Studio Code, hubiera

17:53

sido lo que queramos, pero fijaos que me

17:55

ha dado la información que tengo

17:57

justamente si voy aquí a mi desktop,

18:00

¿vale? ¿Veis aquí que tengo estos vídeos

18:02

y tal? Pues justamente ha encontrado

18:04

esto. Le podríamos pedir más cosas. Por

18:06

ejemplo, le podría decir, mira, voy a

18:08

hacer más pequeño esto. Y le puedo

18:10

decir, crea una carpeta vídeos y mete

18:14

ahí todos los ficheros

18:16

punp. ¿Y por qué te quiero enseñar esto?

18:18

Para que veas cómo de potente son los

18:21

MCPs, porque de alguna forma lo que está

18:25

haciendo es que ya estamos controlando

18:27

nuestro ordenador. Fíjate ahora. Claro,

18:30

como son diferentes herramientas las que

18:31

tengo que ejecutar, me va a pedir

18:33

permiso para cada herramienta, ¿vale?

18:35

Pero fíjate que ya está moviendo cada

18:37

uno de los ficheros. No va muy rápido,

18:39

pero lo va haciendo porque claro, como

18:41

que te lo va explicando, no sé qué, pero

18:43

fíjate que los está moviendo y los está

18:45

moviendo aquí en vídeos. justo lo que le

18:47

he pedido que haga de forma, yo se lo

18:49

estoy pidiendo de una forma, eh, claro,

18:52

se lo estoy hablando y luego vais a ver

18:54

cuando nosotros creemos nuestro MCP que

18:57

no le vamos a indicar cómo lo tiene que

18:59

hacer, sino que es mucho más declarativo

19:00

que eso. Con la inteligencia artificial

19:02

vas a ver cómo utilizar MCP

19:04

automáticamente. ¿Vale? Fíjate que

19:06

además, mucho más lejos que esto, una

19:09

vez que ya tienes acceso a lo que sería

19:11

tu sistema de archivos, puedes ir mucho

19:13

más allá, porque al final lo que puedes

19:15

hacer es, imagínate, le voy a decir,

19:17

crea el guion de un curso para explicar

19:21

los MCP, model Context

19:24

Protocol en formato row mardown y

19:29

guárdalo en el desktop con el nombre de

19:33

guion.md. ¿Qué estamos haciendo aquí?

19:35

Ahora ya estamos haciendo que tenga una

19:37

integración de, por un lado, estamos

19:40

generando con la inteligencia artificial

19:42

cierta información y por otro lado lo

19:45

que estamos haciendo aquí es

19:47

directamente que lo guarden nuestro

19:50

sistema de archivos. ¿Vale? Aquí es

19:51

donde ya os estoy comentando esto, que

19:54

es tan importante de cómo potenciar o

19:56

elevar el nivel de nuestra inteligencia

19:58

artificial, porque nuestra inteligencia

20:00

artificial digamos que tiene pues eh la

20:02

posibilidad de hacer cosas más estáticas

20:06

utilizando su inteligencia y todo esto,

20:08

pero lo que estamos haciendo aquí es que

20:10

tenga una integración mayor. Esto es con

20:12

nuestro ordenador, pero ya veréis más

20:13

adelante que podríamos tener incluso

20:16

incluso para otra otro tipo de cosas.

20:18

Todavía está escribiendo esto, por eso

20:19

está tardando, ¿eh? Vale, ahora me dice

20:20

claro, write file todavía no había

20:22

utilizado. Vale, entonces

20:26

allow desktop, veis, aquí tengo el guion

20:29

creado. Bueno, esto va a ser una

20:31

salvajada con un ejemplo tan sencillo.

20:33

Ya veis aquí lo que hemos hecho en un

20:35

momento. Mira, vamos a abrirlo con set

20:38

en un momento. Y ya lo tenemos aquí, el

20:40

guion que me lo ha creado directamente

20:42

en el ordenador. Vale, muy bien. Bueno,

20:44

pues perfecto. Esto es uno de los

20:46

ejemplos. Vamos con otro ejemplo

20:48

todavía. más brutal, porque normalmente

20:52

una cosa que vais a querer hacer es

20:54

poder hablar con una base de datos.

20:56

Claro, lo que pasa es que CHGPT o Cloud

20:59

o todos estos lo que hacemos muchas

21:00

veces es directamente pasarle los datos

21:03

porque no le podemos decir, "Oye,

21:05

directamente conéctate a la base de

21:07

datos y extrae la información, pero con

21:10

un MCP sí que lo podemos hacer." ¿Cómo

21:12

lo podemos hacer? Bueno, igual que

21:14

tenemos aquí el de File System, vamos a

21:17

ver que tenemos uno, por ejemplo, de

21:18

Postgress. Aquí veis que tenemos unos

21:20

cuantos de Slack, Schoolight, GitHub.

21:24

Vamos a ver este de Postgress, ¿vale? Y

21:26

este model context Protocol lo que tiene

21:29

es que se puede conectar a una base de

21:30

datos, a cualquiera, no hace falta que

21:33

sea local, se puede conectar a una base

21:34

de datos que esté en producción, o sea,

21:36

eso no hay ningún tipo de problema. Y os

21:38

voy a explicar una cosita por si tenéis

21:41

problemas con esto, ¿eh? Pero ahora os

21:42

comento, ahora os comento. Primero me

21:44

copio esto, ¿vale? Que este ya está

21:46

hecho. No os preocupéis que luego vamos

21:47

a crear nosotros uno desde cero para que

21:49

veáis cómo se crea, ¿vale? Para que

21:51

veáis cómo se tiene que hacer esto

21:52

nosotros mismos. O sea, que no os

21:54

preocupéis, pero primero os quiero

21:55

enseñar un poco esto para que tengamos

21:57

el contexto de para qué sirven. ¿Okay?

22:00

Vale, entonces nos vamos otra vez aquí a

22:02

cloud, vamos aquí al settings. A ver si

22:05

tengo por aquí. Vale, fijaos que ahora

22:08

en settings me aparece el de file

22:09

system, que aquí lo podríamos borrar,

22:11

pero bueno, lo vamos a dejar. Le vamos a

22:13

poner edit config otra vez. A ver,

22:15

Visual Studio Code. En este caso, ¿qué

22:18

qué necesitamos? Necesitamos aquí

22:20

ponerle el connection string de la base

22:22

de datos. Yo voy a levantar una base de

22:24

datos en DB Engine. A ver, mira, tengo

22:27

aquí una demo database que no me acuerdo

22:28

qué tendrá, así que voy a conectarme.

22:31

Creo que tengo Outer Base Studio, que es

22:34

como un cliente de bases de datos. Vale,

22:36

demo database. A ver, voy a copiarme el

22:38

connection string. Voy a entrar a ver

22:40

qué tiene, que no me acuerdo. Ah, mira,

22:42

tiene vídeos. Mira, es como son de

22:44

ejemplo. Está muy chulo este cliente de

22:46

tablas de base de datos. No sé si lo

22:48

conocéis. Lo han comprado la gente de

22:49

Clfler. Es totalmente gratuito. Funciona

22:52

con SQ, con MySQL, PostGress SQL. Está

22:56

bastante bien. Y una cosa muy

22:57

interesante es que además tiene

22:59

inteligencia artificial. Le puedes dar

23:00

aquí y puedes decirle recupera todos o

23:04

el nombre.

23:06

de todos los vídeos, ¿vale? Y con

23:09

inteligencia artificial que funciona en

23:10

local, se integra totalmente con Bueno,

23:13

a ver, este era bastante fácil, ¿eh?

23:15

Pero bueno, que está bastante bien, que

23:16

está muy integrado y funciona muy bien.

23:18

Bueno, esta es la base de datos que

23:19

tengo y a la que nos vamos a a conectar,

23:22

¿vale? Entonces, a ver si ahora soy

23:24

capaz de A ver, voy a aquí me voy a

23:27

copiar el connection string y aquí vamos

23:29

a cambiar esto por esto de aquí. Una

23:33

cosa importante, sí, espérate, porque el

23:37

dominio yo creo que tiene que ser, o

23:39

sea, el protocolo tiene que ser este.

23:41

Este es el connection string, pero

23:43

normalmente el connection string

23:45

tendrías obviamente con password, con

23:48

nombre de usuario. En este caso, el

23:49

nombre de usuario es Postgress, porque

23:51

es el nombre por defecto que le hace

23:52

porque lo tengo ahí de demo. Pero tened

23:54

en cuenta que aquí pues podría ser que

23:56

le podáis poner el password o lo que

23:58

sea, ¿vale? Pero en este caso yo no

24:01

tengo, más que nada porque no tengo,

24:02

pero no porque no se pueda hacer. Así

24:04

que ya teníamos npx, esto sería lo

24:07

mismo. NPX, el menos es para aceptar que

24:10

instale todas las dependencias que

24:12

necesite sin preguntarnos. Esto es

24:14

importante porque si no nos haría una

24:16

pregunta y entonces no podría seguir

24:18

ejecutándose. Este es el paquete que

24:20

queremos instalar, en este caso Server

24:22

Postgress. Y aquí tenemos que pasarle,

24:24

sería la cadena de conexión. Entonces,

24:27

ahora que ya tenemos esto, voy a cerrar

24:29

esto por aquí. Esto lo puedo quitar.

24:31

Esto importante que la base de datos

24:33

esté levantada porque si no funciona.

24:35

Ahora no aparece, tengo que cerrar.

24:38

Vamos a abrir ahora otra vez cloud y a

24:40

ver ahora fíjate que ahora me ha añadido

24:44

una herramienta más, solo una. En este

24:46

caso está bastante más limitado, ¿no? No

24:49

se puede. Mira, query run run a read

24:52

only SQL query, por ejemplo, no se puede

24:54

hacer inserts, pero podríais crear

24:55

vosotros un MCP que sí que puede hacer

24:57

inser. Entonces, le podríamos preguntar

24:59

ahora va a entender que si le digo,

25:01

"Vale, enseña todos los usuarios que hay

25:04

en la tabla, ¿vale?" Lo que va a hacer

25:06

ahora es conectarse con el MCP. Bueno,

25:09

que se lo he puesto en inglés. Ves, me

25:11

ha dicho cuál es la query y ya me dice,

25:12

"Vale, voy a utilizar el MCP." Venga,

25:14

pues venga. Y ahora, vale, dice, aquí

25:18

tienes los usuarios de la base de datos,

25:21

o sea, como si tuviéramos un cliente. Y

25:22

esto es exactamente lo mismo que si yo

25:25

conecto aquí y me voy al users, ¿vale?

25:27

Pues vais a ver que es exactamente la

25:29

misma información entre uno y otro. Es

25:31

la misma información, pero claro, con la

25:34

diferencia que le podemos hacer

25:35

preguntas mucho más interesantes. Is

25:38

there any migle among the users? Claro,

25:43

le podemos preguntar preguntas mucho más

25:44

concretas, ¿sabes? Le podemos decir,

25:46

"Mira, no hay ningún usuario que se

25:47

llame Miguel porque estos son los

25:49

usuarios." O yo que sé, le podemos

25:51

decir, "Dime las tablas disponibles en

25:54

la base de datos." Porque a veces, a

25:56

veces se equivoca con esto. ¿Por qué?

25:59

Porque no sabe. Mira, ahora se ha

26:01

equivocado. ¿Ves? Igualmente, cuando se

26:04

equivoca intentando ejecutar un comando,

26:07

vais a ver que reintenta de una forma

26:10

distinta. Esto es una cosa que gracias a

26:11

que la inteligencia artificial es

26:13

inteligente permite hacer este tipo de

26:15

cosas, ¿no? De que intenta ejecutar este

26:18

SQL con nuestro MCP, se ha dado cuenta

26:21

que está mal y lo vuelve a intentar con

26:23

otra sentencia diferente y me está

26:25

dando. Como podéis ver, estas tablas que

26:27

tenemos aquí son exactamente las mismas

26:30

tablas que tenemos por aquí. Así que

26:32

ahora ya le podríamos llegar a decir,

26:34

"Busca en la tabla vídeos el vídeo más

26:39

reciente y dame la

26:42

URL y sugiéreme y sugiere una posible,

26:48

bueno, y sugiere una descripción para

26:51

subir a mi YouTube. Esto es lo que es

26:53

interesante, no solo lo conectamos a la

26:55

base de datos, sino que empezamos a

26:57

reutilizar también la inteligencia

26:58

artificial. utiliza el MCP para sacar la

27:01

información. El vídeo más reciente es

27:03

introducción a Python. Esta es el URL,

27:05

fue creado hoy mismo y aquí te sugiero

27:07

una descripción. ¿Vale? Entonces, ya

27:09

estamos viendo aquí una mejor

27:11

integración. Este sería el MCP, por

27:13

ejemplo, de base de datos, pero nos

27:14

falta otro tipo de MCP. Hemos visto uno

27:18

para para conectarnos de forma local a

27:21

nuestro ordenador. Hemos visto

27:24

conectarnos a una base de datos que

27:25

puede ser remota. Y ahora vamos a ver el

27:27

tercer tipo de MCP. que es utilizar una

27:30

API, que es el que vamos a crear desde

27:32

cero, pero antes vamos a utilizar

27:34

justamente el de GitC porque es uno de

27:36

los más interesantes. Pasa una tabla,

27:38

mira, me dice, "¿Puedes decir que pase

27:40

una tabla a CSV y guardarlo en un

27:41

fichero?" Vamos a intentarlo. Pasa la

27:44

tabla vídeos a CSV y guárdalo como

27:48

fichero vídeos.CSV en el desktop. Vamos

27:51

a ver. Normalmente sí, o sea, ya te digo

27:53

yo que normalmente eh se puede conectar

27:56

un MCP con otro, ¿sabes? Los puedes ir

27:59

conectando uno con otro. Mira, vamos a

28:00

darle aquí. Normalmente sí que no habría

28:03

ningún tipo de problema de que esto lo

28:04

hiciera. Eh, ves, tengo acceso al

28:06

desktop. Ahora está creando aquí. Vale,

28:09

aquí tenemos la información. Ahora me

28:11

pregunta para escribir el archivo porque

28:13

en esta conversación no lo ha hecho.

28:14

Entonces, claro, o sea, lo más

28:16

interesante de los MCP justamente es que

28:19

de repente lo que estamos haciendo es

28:21

dotarle de superpoderes a nuestra

28:24

inteligencia artificial. Entonces, por

28:26

un lado, lo que ha hecho es conectarse a

28:28

la base de datos. Los ha convertido en

28:30

formato CSV porque lo ha hecho la

28:31

inteligencia artificial. Ha obtenido la

28:33

información de la base de datos gracias

28:35

a uno del MCP. Luego ha verificado si

28:37

tiene acceso al desktop, luego ha

28:39

escrito el archivo CSV en el desktop y

28:41

ya está, ya lo ha hecho. Y me dice

28:43

justamente, "Vale, lo tienes aquí."

28:45

Vamos a ver si justamente aquí lo

28:47

tenemos. Aquí podéis ver que me ha

28:49

creado el punto CSV con la información.

28:52

O sea, que sí, los MCPs lo bueno que

28:54

tiene es que justamente tú puedes ir

28:56

integrando uno con otro sin ningún tipo

28:58

de de problema. ¿Qué diferencia hay

29:00

entre un RA y un MCP? Pues justamente lo

29:02

estamos viendo, Chapius, tú con un RA no

29:04

puedes hacer este tipo de herramienta.

29:07

No puedes hacer una herramienta que sea

29:09

eh leer o escribir en una base de datos

29:12

o en tu sistema de archivos. es

29:14

totalmente distinto. Un rag al final es

29:16

proveerle de documentos, texto,

29:18

referencia, pero no es tanto de que

29:21

pueda interactuar con ciertas cosas,

29:23

¿vale?, que se podría hacer, pero el RAG

29:25

sería simplemente para proporcionarle

29:27

información y aquí lo que estamos viendo

29:28

es más como para darle darle superperes,

29:31

es una cosa diferente, ¿vale? Entonces,

29:34

ya hemos visto dos que no está nada mal,

29:36

pero vamos a ver un tercero que sería el

29:38

de GitHub, ¿vale? Vamos a ver un tercero

29:41

que es para utilizar GitHub y es que

29:44

vamos para aquí atrás, vamos aquí

29:47

GitHub, ta ta. Aquí podemos ver que ya

29:49

tenemos un montón de de todo lo que

29:51

vamos a poder hacer, crear repositorios,

29:53

crear pullquest. Con este os va a volar

29:55

la cabeza, ¿eh? Y de hecho, os comentaré

29:57

un spoiler. Mirad, esto es todo lo que

29:59

podéis hacer con este. Aquí tenemos este

30:01

de GitHC. Esto es con Docker. Vamos a

30:02

utilizar NPX, ¿vale? Una cosa importante

30:06

por si os da problemas esto de NPX,

30:08

¿vale? Si os da problemas al utilizar

30:10

esto de NPX, es posible que os diga, "No

30:14

consigo el comando npx." Y vosotros

30:17

digáis, "Pero, ¿cómo puede ser si yo

30:19

cuando voy a la terminal sí que me

30:21

funciona el NPX?" Vale, vale. Tenéis que

30:24

tener en cuenta una cosa, es que el npx

30:27

es un comando de note. Si estáis

30:29

utilizando FNM o NVM o cosas así, no

30:34

estáis instalando Node global y por lo

30:37

tanto solo está para vuestro usuario y

30:40

no va a estar accesible desde cloud o

30:43

desde ciertas herramientas, ¿vale? Si

30:45

queréis aseguraros, por si os da ese

30:47

problema y no queréis tener problemas,

30:48

que sepáis que Node lo podéis eh

30:51

instalar de forma h global, lo

30:53

descargáis de aquí, ejecutáis el package

30:56

y ya está y ya lo tenéis en el sistema

30:58

de forma global, ¿vale? Por si tenéis

31:00

este problema, que lo sepáis que se

31:02

soluciona así de fácil, por si estáis

31:04

utilizando FNM, que en mi caso, pues

31:06

normalmente os puede dar ese problema.

31:07

Vamos a vamos a copiarnos el MCP de

31:10

GitHub. Hacemos otra vez lo mismo, ¿no?

31:12

Vamos aquí settings. Aquí en en

31:14

settings, en developer ya tenemos dos.

31:17

Vamos a añadir un tercero. Para eso

31:19

vamos a abrirlo con Z mismo para que no

31:21

entre en conflicto con Visual Studio

31:22

Code. Vale, ya tenemos el de File

31:24

System, tenemos el de Postgress y ahora

31:26

aquí vamos a poner el de GitHub, ¿vale?

31:30

El de Gitub me va a dar problemas con

31:32

una cosita porque claro, aquí tengo que

31:34

poner el Ghubal Access Token, pero

31:37

bueno, os voy a explicar una cosa. A

31:39

ver, una, voy a ver una cosa. Si yo

31:42

pongo esto, vale, vale, perfecto. Vale,

31:45

genial. Es que así puedo copiar el

31:46

Ghaubal token sí que lo veáis. Vale, voy

31:49

a hacer esto así y aquí pues lo copiaré

31:51

y ya está. GH personal access token.

31:53

Claro, necesitamos un token para poder

31:56

controlar todos nuestros repositorios de

31:59

GHub. Tenéis que ir a vuestras settings.

32:02

me pide ahí el authentication

32:04

code. Tenéis que ir hasta URL.

32:11

Gijha.com/settings/personal-access/new.

32:12

Si no, vais a settings y aquí en

32:14

personal access tokens en el fine grain

32:16

tokens. Os recomiendo mucho este y no el

32:20

clásico. El clásico es que te da acceso

32:22

a todo sin ningún tipo de control y no

32:24

tiene mucho sentido. En cambio este tú

32:26

le puedes decir, "Mira, voy a crear uno

32:27

para que lo veáis." Vale, aquí podéis

32:29

ponerle el nombre, eh, por ejemplo, pues

32:31

yo que sé, MCP token, una descripción,

32:34

el owner, cuándo expira. Podéis hacer

32:36

que no expire nunca, no es recomendable,

32:39

pero bueno, lo podéis hacer. Y aquí le

32:41

podéis dar acceso a repositorios en

32:43

concreto. Imagínate que solo quieres

32:44

trabajar en unos repositorios en

32:45

concreto o a todos los repositorios,

32:48

solo a los repositorios públicos. Aparte

32:50

de esto, también aquí tienes los

32:53

permisos. por ejemplo, es que claro, en

32:55

GH puedes hacer de todo, así que ten

32:57

cuidado con esto. Pero normalmente lo

32:59

que más vais a querer es que pueda

33:01

hacer, por ejemplo, pull request. Aquí

33:03

le diríais, "Vale, le voy a dar acceso

33:05

de escritura en las pull request y a

33:07

partir de aquí pues lo que veáis que

33:09

tenga sentido." Igual con los permisos

33:11

de cuenta, yo que sé, para bloquear a

33:12

usuarios, por ejemplo, para ISUS

33:14

también. Aquí veis, tenéis ISUS, pues

33:16

también le vais a querer dar a lo mejor

33:18

para cerrar ISUS, lo que sea. Vale, yo

33:20

ya he creado un personal access token

33:22

con un montón de de permisos para no

33:24

tener que hacerlo ahora, pero esto es lo

33:26

que tendríais que hacer para conseguir

33:28

el vuestro, ¿vale? Una vez que lo

33:30

tenéis, pues nada, os vais aquí, Gij

33:32

Personal Access token, lo pegáis. Bueno,

33:34

menos mal que solo os sale una parte y

33:36

no sale toda. Voy a ver si sale

33:38

demasiado. Nada, queda un montón.

33:40

Entonces ahí lo pegáis, ¿vale? Lo

33:42

guardáis y una vez que lo guardáis vamos

33:44

a cerrar. Aquí ya lo tendríamos. Pues de

33:46

nuevo tenemos que cerrar esto y volver a

33:50

abrir. Vale, vamos a Cloude. Y ahora,

33:53

fijaos que ahora tenemos 38

33:55

herramientas. Esto es una locura. Mira,

33:59

dame toda la información del usuario de

34:02

GitHub, Midudep. Y ahora lo que va a

34:05

hacer es utilizar este MCP donde vamos a

34:07

tenerlo. Vale. Vale. Ahora va a hacer

34:09

buscar usuarios y esto es brutal porque

34:13

vais a ver la potencia que tiene, porque

34:17

no solo va a hacer una llamada, una app

34:20

y ya está, sino lo que va a hacer es,

34:22

fijaos, mira, me ha buscado el usuario,

34:25

luego está buscando 1000 repositorios,

34:28

¿vale? está buscando mis repositorios y

34:30

me dice, "Vale, ya he buscado

34:31

repositorios. Ahora, get fill contents

34:33

from GitHub." ¿Por qué? Porque va a, no

34:36

sé qué está leyendo, pero está Ah, para

34:38

leer el ritmi. Mmd. Tu

34:41

ritmi. Vale, mira, aquí ha dicho que no

34:44

ha encontrado. Bueno, pues igual se ha

34:46

equivocado. No pasa nada, no pasa nada.

34:48

Error. Vale, ta. Basándome en toda la

34:50

información, bueno, igual ha tenido un

34:52

error ahí. Bet sabe por qué, pero bueno,

34:54

aquí podéis ver un montón de información

34:55

que ha sacado. Según se puede deducir,

34:58

estos son sus repositorios,

34:59

especialidad, no sé qué, no sé, esto es

35:02

totalmente gratis, eh, esto no hay que

35:03

pagar absolutamente nada. Actividad en

35:04

la comunidad, presencia en redes,

35:06

actividad reciente, o sea, contribución

35:09

a comunidad, o sea, todo esto lo está

35:10

sacando justamente gracias a hacer la

35:14

petición dentro de GitHub. Pensad,

35:15

bueno, dices, bueno, es que esto lo ha

35:17

hecho porque tiene esta información.

35:19

Pues mira, vamos a hacer algo. ¿Cuántas

35:22

tengo por revisar del proyecto de la web

35:26

oficial de la velada 5? Fíjate que ni

35:30

siquiera le estoy dando exactamente el

35:32

nombre, ¿sabes? Le estoy dando como un

35:34

nombre así. ¿Cuántas issos tengo por

35:36

revisar? la web oficial de la velada 5

35:38

ya buscado, dice, la velada web oficial,

35:40

ya detectado por el histórico, ha

35:43

entendido que que es la velada web

35:46

oficial, pero fíjate que yo no le he

35:47

dado exactamente el nombre del

35:49

repositorio, sino que por el contexto ha

35:52

entendido que me refería a este

35:55

repositorio, porque ya ha sacado antes

35:57

los repositorios y digamos que con esa

35:59

memoria ha dicho, "Ostras, es esta."

36:01

Vale, pues tienes 25 IS, debo tener más.

36:03

Seguramente las ha paginado, ¿no? Pero

36:05

mira, ya me está dando aquí una

36:07

respuesta. Soporte para múltiples vídeos

36:08

de entrenamiento por luchador. Isus de

36:10

corrección como mejoras visuales y de

36:13

accesibilidad. Vale, todo esto está muy

36:15

bien el tema de las ISUS, pero quiero ir

36:17

un poco más allá porque me he dado

36:19

cuenta que la web de la web oficial de

36:22

la velada, si no me equivoco, en el pack

36:25

Jason, Astro está en la 5.6.0

36:29

Y resulta que Astro acaba de sacar la

36:33

5.7, pues le podíamos decir, y aquí es

36:36

donde te puede volar un poco la cabeza,

36:38

es que le podemos decir, "Vale, crea una

36:41

pull request en el repositorio de la web

36:44

oficial de la velada para actualizar

36:49

Astro a su última versión disponible y

36:53

haz todos los cambios que sean

36:56

necesarios." Esto es lo que es brutal,

36:58

¿no? El tema de que claro, como tenemos

37:01

todo la potencia de la inteligencia

37:02

artificial, tenemos la integración con

37:04

nuestro repositorio de GitHub, esto lo

37:07

que nos va a hacer es que, bueno, vais a

37:09

alucinar porque no solo nos va a crear

37:10

una p request, nos va a hacer todos los

37:12

cambios de código y además nos va a

37:14

generar una descripción para la P

37:17

request, o sea, lo va a hacer todo de

37:19

una. Y es gracias a que tenemos el MCP

37:21

que puede ir mirando el contenido del

37:24

repositorio, ver todos los cambios que

37:25

tenemos, lo todo lo que tiene que hacer.

37:27

Así que está recuperando todo. ¿Ves?

37:29

Ahora ha recuperado el contenido del

37:31

packat Jason. Ahora dice, "Vale, hacer

37:34

un forket de repositorio, que no va a

37:36

necesitar hacer esto, pero seguramente

37:37

ahora fallará." Vale, pero esto está

37:39

bien que falle para que veamos también.

37:41

Mira, parece que hubo un error. Vale,

37:43

dice, "Pero voy a intentar crear una

37:45

rama directamente en el repositorio

37:46

original." Vale, vale. Pues le decimos,

37:48

"Venga, hazlo." ¿Por qué? Se ha dado

37:51

cuenta que sí ha cometido un error, pero

37:53

está creando la rama y ahora está

37:55

haciendo una query en postgres por culpa

37:58

de que tenemos todavía esto está

38:00

intentando aquí ahora mismo a ver si

38:02

cuela, ¿sabes? Pero mira, vamos a asumir

38:04

que la última versión de Astro es la

38:05

5.8, lo cual yo creo que puede ser que

38:08

sea la 5.8, no lo sé. Vale, ahora me

38:10

está diciendo editar el archivo del file

38:12

system.

38:14

Vale, ahora me está cambiando. No sé si

38:16

la 5.8. Igual se ha ido la olla. Parece

38:19

que no tengo permisos para editar

38:20

archivos directamente en el repositorio.

38:21

Obviamente no los tienes, ¿vale? Así que

38:24

me tendrías que crear la pull request y

38:25

ya está. A ver si me lo me la creas o

38:27

no. A ver si es capaz. La 5.7 es la

38:30

última. ¿Por qué? ¿Por qué habrá hecho

38:31

la

38:32

5.8? Bueno, a ver, vamos a ver hasta

38:34

dónde llega. Eh, mira, actualicemos el

38:36

archivo para que sea compatible as 3.8.

38:38

Vale, ahora está creando no sé qué.

38:42

Vale, en as ya no sé en 5.8.

38:46

fijaos en esto. Ha detectado que en la

38:48

última versión de Astro ya no es

38:50

experimental lo de SVG, lo cual es

38:52

verdad, lo cual es totalmente cierto. O

38:54

sea, que tenía tiene toda la razón en

38:57

eso. Lo de 5.8 se lo ha inventado un

38:59

poco. Vale, vamos a actualizar el

39:00

archivo Rmi para reflejar la

39:01

actualización a 5.8. Yo no sé dónde ha

39:03

alucinado. Ahí, ahí ha alucinado, pero

39:06

esperaos que vamos a ver el tema de la

39:08

PR, que es tremendo, ¿eh? Vamos a

39:10

actualizar el archivo RI para reflejar

39:12

la actualización a 5.8. Bueno, aquí se

39:14

le está yendo también un poco de las

39:15

manos porque me está tocando el Ritmi

39:17

cuando no sería necesario que me toque

39:18

el RM, pero bueno, está bien si lo

39:21

quiere hacer. Vamos a ver si quiera el

39:22

APR. A ver si lo si lo hace. Mira. Ah,

39:25

claro, es que fijaos que es que está

39:26

generando todo el ritme. Claro, está

39:28

generando, fijaos todo el ritmy. Por eso

39:30

está tardando aquí, porque está

39:32

generando todo el ritm. Madre mía, mira,

39:34

Zoom Fork, o sea, está generándolo todo

39:36

otra vez. Me imagino que a lo mejor ha

39:38

añadido alguna mención de que estamos

39:40

utilizando Astro 5.8 por lo que sea,

39:41

¿eh? Vale, venga. Tol stack. Ah, mira,

39:44

notas de la versión. Abril 2025.

39:47

Actualizado Astra, la versión 5.8.

39:49

Actualizado simap 3.5 Versel. Venga, que

39:52

van a crear un archivo change lock. Esto

39:54

es lo malo cuando le dejas la a a le

39:56

dejas los mandos, ¿eh? Venga, va a crear

39:58

la pull request, que al final esto es lo

40:00

que hace Devin. Esto es exactamente lo

40:01

que hace Devin, ¿eh? Venga, he creado

40:03

una P request. ¿Será verdad o no?

40:05

¿Creéis que ha hecho una pull request?

40:08

Vamos a verlo. Vamos a verlo. Ojo,

40:12

actualización de Astro, la última

40:13

versión

40:15

5.8.0. Fijaos lo que ha hecho.

40:17

Descripción. Esta PR actualiza Astro y

40:19

sus dependencias a las últimas versiones

40:21

disponibles para mejorar rendimiento.

40:22

Seguridad y agregar nuevas

40:24

funcionalidades. Cambios principales.

40:26

Mejoras técnicas. Beneficios. Tipo de

40:28

cambio. Captura de pantalla. Checklist.

40:31

Todos los cómics. Todos los cómics que

40:33

tenía que hacer. Obviamente, ya os digo

40:36

yo, ha hecho cosas que no debía hacer.

40:37

Ha hecho aquí un chalck que no le he

40:39

pedido. Aquí en el RMI no sé por qué ha

40:41

tenido que tocar el Rme. Esto sí que

40:43

está bien porque esto ya no es

40:44

experimental. Esto sí que es raro porque

40:46

me ha añadido lo del Image que yo no le

40:48

he pedido. Vale. E lo de Astro 5.8 yo

40:51

juraría que no existe. Astro 5.8 yo

40:54

juraría que no existe. ¿Qué es lo que

40:56

pasa con esto? Latest 5.7.2. Vale, ahora

41:00

alguien dirá, "Está mal, o sea, quiero

41:02

decir, se ha equivocado." Pero, ¿y si

41:04

hubiera tenido un MCP para poder

41:07

preguntarle a MPM cuál es la última

41:09

versión de Astro? ¿Entendéis ya por

41:11

dónde van los tiros? El tema es que no

41:14

ha sido capaz, porque no tiene esa

41:15

información, no ha sido capaz de saber

41:19

cuál es la última versión de Astro. Pero

41:21

si por lo que sea hubiéramos tenido un

41:24

MCP que se hubiera podido podido

41:26

conectar a MPM y preguntar la última

41:28

versión de Astro, pues ya hubiéramos

41:30

cerrado un poco justamente ese problema.

41:33

Esto es justo lo que viene a solucionar

41:35

el MCP. datos en tiempo real que la

41:38

inteligencia artificial no puede tener,

41:40

buscarlo le podría ser muy difícil, pero

41:42

un MCP concreto que le conectase con ese

41:44

servicio, pues ya lo tendría

41:46

solucionado, o sea, lo hubiera hecho. De

41:48

hecho, ha intentado con SQL, con lo de

41:50

Posgre, ha intentado sacar es esa

41:52

información, ¿no? Eh, ya veis que no es

41:54

perfecto. ¿Qué hizo en la base de datos?

41:56

En la base de datos lo que ha intentado

41:58

es buscar la última versión de Astro. Ha

42:00

dicho, "Ostras, no sé cuál es la última

42:02

versión de Astro. Voy a intentar

42:03

utilizar el MCP de la base de datos para

42:06

ver si ahí aparece la última versión de

42:08

Astro. No, no es peligroso que se

42:10

conecte a NPM, ¿no? Si es solo de para

42:13

tratar información, no tiene por qué. Y

42:15

al final siempre tú deberías ver cómo

42:18

cómo están las cosas, ¿no? Lo nuestro

42:20

que vamos a crear nuestro primer MCP.

42:23

Vamos a crear nuestro primer MCP. Vamos

42:26

a crear el primero. Le voy a llamar eh

42:28

start, ¿vale? Por decir algo, start. Voy

42:31

a iniciar el proyecto con pnpm init para

42:34

que me cree un pack jason. En este caso,

42:36

bueno, vamos a utilizar Visual Studio

42:38

Code, eh, que está interesante porque el

42:40

este lo vamos a cargar no solo en Cloud,

42:42

sino en Visual Studio Code para que

42:43

veamos cómo se hace. Vale, voy a crear

42:46

un main. TS. Vamos a utilizar

42:48

Typescapip, luego veréis cómo cómo vamos

42:50

a hacer esto. Y en el package Jason

42:52

vamos a poner que el tipo sea tipo

42:55

módulo. Pues vais a ver que se pueden

42:57

hacer MCPs con Typescript, con

42:59

JavaScript, con Python, con lo que

43:00

queráis, pero TyScript no hay ningún

43:02

tipo de problema. Y lo que vamos a

43:03

necesitar seguro es la dependencia de

43:07

Model Context Protocol SDK, el del SDK

43:11

oficial de Typesc, este que tenemos por

43:13

aquí. Si miramos aquí en la instalación,

43:15

esta dependencia necesitamos instalarla

43:18

en nuestro proyecto. Así que vamos a ir

43:20

aquí, voy a ejecutar PNPM ADT y voy a

43:23

añadir esta dependencia para que esté

43:25

aquí en el pack Jason. Vale, ya la

43:27

tenemos aquí. Pero también tenemos que

43:29

añadir una segunda dependencia que la

43:32

que nos va a permitir es validar la

43:34

entrada del usuario. Y para eso vamos a

43:36

instalar Z Thot, que ya sabéis, mira, el

43:38

otro día estamos hablando de ello, que

43:40

sirve para validar entradas y salidas o

43:44

para validar esquemas de datos. ¿Vale?

43:46

Muy bien. Ahora, ¿qué vamos a hacer?

43:48

Vamos a importar mcp server de modelce

43:51

context protocol/sdk/server/mcp.js.

43:56

JS y ahora vamos a importar Z desde ZOT.

44:01

Muy bien. Primero tenemos que crear el

44:04

servidor. El servidor crea es la

44:07

interfaz principal para con el protocolo

44:11

MCP. Maneja la comunicación entre

44:14

cliente y servidor, ¿vale? Así que

44:16

creamos el servidor MCP server y aquí le

44:19

vamos a decir el nombre del MCP. En este

44:22

caso ahora le voy a poner demo, luego ya

44:24

lo haremos un poquito más complicado y

44:26

le vamos a poner la versión 1. Vale,

44:29

esto es lo mínimo, lo mínimo necesario.

44:32

Luego vais a ver que podemos pasarle

44:34

pues más, hay más opciones que le podéis

44:36

pasar, pero esto es lo mínimo necesario

44:39

para poder utilizar nuestro MCP. Ya

44:41

tenemos el servidor. Ahora tenemos

44:44

diferentes cosas que puede tener un MCP.

44:46

Hemos visto, cuando hemos ido aquí a

44:48

Cloue, hemos visto que todos tenía,

44:51

veis, a este 38 herramientas. Esto es lo

44:55

más interesante e importante que tiene,

44:58

aunque puede tener promps, puede tener

45:00

recursos, puede tener otras cosas, pero

45:03

lo más lo más importante que puede tener

45:05

son herramientas. Así que vamos a crear

45:07

una primera herramienta para nuestro

45:10

nuestro MCP, definir las herramientas. Y

45:15

las herramientas le permite al LMM

45:18

realizar acciones a través de tu

45:21

servidor a diferencia. Bueno, Vale, ya

45:23

está. Tu servidor, ya está. Vamos a

45:25

poner server punto. Fijaos aquí que

45:29

tenemos prom, resource y tool. Estos son

45:31

los tres que os decía. tienen proms, que

45:34

son promps que además pues puede hacerte

45:36

preguntas que pueden ser reutilizables.

45:38

Los recursos que serían solo de lectura,

45:40

por si quieres devolver la

45:41

configuración, si quieres devolver una

45:44

cosa en concreto y tienes herramientas.

45:46

¿Qué herramienta suele ser lo más

45:47

típico? Porque no solo puede ser de

45:50

escritura, sino que puede ser de

45:52

lectura, pero que tenga algún tipo de

45:54

estado o que tenga que dependa de algo

45:56

externo o que tenga que hacer un

45:58

cálculo. O sea, que normalmente vamos a

46:00

utilizar herramientas. Lo que tenemos

46:02

que decirle aquí es el nombre de la

46:04

herramienta. Imaginad que vamos a hacer

46:06

una herramienta sencilla pero potente

46:08

para recuperar el tiempo, ¿vale? Pues le

46:10

vamos a decir fetch weather. Y ahora le

46:13

podemos decir una descripción tool to

46:16

fetch the weather of a city. Vale, ahora

46:19

le tendríamos que decir qué parámetros

46:22

necesita esta herramienta para

46:24

funcionar. Así que le vamos a pasar un

46:26

objeto y le vamos a decir que tiene una

46:28

ciudad, que en este caso sería una

46:30

cadena de texto que va a ser el nombre

46:33

de la ciudad. ¿Vale? Esto lo podríais

46:35

describir o no lo podéis describir, esto

46:37

es como queráis, esto es más opcional,

46:39

pero lo mejor es que cuanto más

46:40

información le deis, mejor contexto

46:43

tendrá la inteligencia artificial para

46:44

entenderlo. Y finalmente tenemos el

46:47

callback para poder recuperar la ciudad

46:50

que va a introducir el usuario y aquí

46:53

hacer lo que lo que queramos que haga.

46:56

Ahora lo más sencillo, luego lo haremos

47:00

mejor con llamadas a APIs y haciendo

47:01

cosas, pero lo más sencillo aquí sería

47:04

devolver una rey donde vamos a tener el

47:07

contenido, ¿vale? El contenido que esto

47:09

tiene que devolver, que de nuevo es una

47:11

rey donde tiene que tener todos los

47:13

mensajes que está devolviendo. Vamos a

47:15

decirle que devuelve de tipo texto y el

47:18

texto va a ser

47:20

el clima de City es soleado. Luego lo

47:25

arreglaremos, ¿vale? Pero por ahora

47:27

vamos a decir que tenga esto. Espérate.

47:28

No se puede asignar promesa. ¿Por qué no

47:31

se puede asignar esto? Server tour, que

47:33

he hecho yo aquí ahora que no le gusta

47:34

esto. Puede ser que la descripción no le

47:37

guste. Ajá.

47:39

Espérate, alguna cosa se me ha escapado

47:42

aquí. Se me ha escapado alguna cosa.

47:43

¿Cómo que un express? No sé paraar city.

47:46

Promise content. A ver, el content lo

47:49

estoy poniendo bien, ¿no? Es que he

47:50

puesto que sea una rey y me he

47:51

equivocado, ¿eh? Esto yo creo que esto

47:54

tiene que ser. Es que aquí he puesto a

47:55

rey y esto no es un arrey. Esto no es un

47:58

arrey. El arrey es

48:01

dentro. Vale, esto fuera. Puede ser. Ah,

48:04

pues no. Ay, la madre que lo parió. Se

48:07

esperaba una asignación de A ver,

48:10

espérate que ahora como me ha me ha

48:12

creado esto. Uno aquí, ¿vale? Este aquí,

48:15

este conten va aquí, este va aquí, este

48:18

va aquí, este va aquí. Ahora sí, ahora

48:21

sí. Es que me ha creado ahí uno de más y

48:22

ya me ha vuelto loco. Ahora sí que lo

48:24

tenemos. Vale. Vale. Es importante que

48:26

cada herramienta tenga un título. Esto

48:29

sería el título de la herramienta. El

48:32

título de la herramienta es lo que

48:34

veremos cuando vemos aquí. Fijaos, este

48:36

es el título de la herramienta. Esta es

48:38

la descripción de la herramienta. ¿Vale?

48:40

Pues esto es el título, esta es la

48:42

descripción de la herramienta, estos son

48:44

los parámetros que puede recibir la

48:47

herramienta, que esto, fíjate que no

48:49

tenemos que hacer absolutamente nada.

48:51

Esto de forma interna, la inteligencia

48:53

artificial va a saber dónde está la

48:56

ciudad cuando el usuario nos lo pase. No

48:58

le tenemos que decir absolutamente nada,

48:59

¿vale? Así que le decimos city, que

49:02

tiene que ser de una cadena de texto, le

49:04

describimos, esto es el nombre de la

49:05

ciudad y esto es lo que tenemos que

49:07

hacer con esa información. Ahora es

49:08

sencillo porque simplemente lo que

49:10

estamos haciendo aquí es devolver el

49:13

clima de la ciudad es soleado, pero

49:15

luego veremos que esto se puede ir

49:17

complicando. Ahora lo último que nos

49:19

queda es escuchar las conexiones del

49:22

cliente y aquí lo que hacemos es tener

49:24

un transporte que ahora mismo el

49:27

transporte va a ser STD IO Server

49:31

Transport, ¿vale? Esto va a ser el

49:34

estándar de entrada y de salida porque

49:36

lo estamos utilizando local. Como lo

49:38

estamos utilizando en local y queremos

49:40

que se ejecute no en internet, sino que

49:42

lo ejecutemos en nuestra máquina, lo que

49:44

estamos haciendo es simplemente decirle

49:46

que queremos el estándar de entrada y de

49:47

salida de nuestro ordenador y que

49:49

transporte esa información por ahí,

49:51

¿vale? No se tiene que conectar a

49:52

internet, no tiene que hacer

49:53

absolutamente nada porque este MCP lo

49:55

tenemos en nuestra máquina. Y ahora lo

49:57

que vamos a hacer es que nuestro

49:59

servidor se va a conectar a este

50:01

transporte de datos, ¿vale? Así que

50:04

tenemos la importación de las

50:06

dependencias, la creación del servidor,

50:08

definir las herramientas que queremos

50:11

tener y finalmente escuchar las

50:13

dependenci las las conexiones a este a

50:17

este servidor por parte del cliente,

50:19

¿vale? Así que ya teníamos esto. Esto

50:22

sería todo lo que tenemos que hacer. Y

50:23

para ejecutar esto ahora aquí podríamos

50:26

hacer TSX, o sea, npx TSX. TSX, ¿por

50:30

qué? Porque es un archivo que es de

50:32

TypeScript y para poder ejecutar

50:35

TypeScript sin necesidad de hacer ningún

50:37

tipo de compilación en tu código de de

50:39

NOs, podemos hacer esto. TSX y el nombre

50:43

del fichero de Typescript. Esto lo que

50:44

hace es que te ejecuta directamente al

50:47

vuelo un archivo Typescript sin ningún

50:49

tipo de compilación, sin que tengas que

50:51

hacer absolutamente nada. Así que NPX lo

50:54

vamos a utilizar para ejecutar TSX al

50:56

vuelo, ¿vale? Sin necesidad de tener que

50:59

instalarlo con una dependencia. npx TSX.

51:02

Le ponemos la I para que no nos pregunte

51:04

si lo tiene que instalar.

51:06

Main.ts. Pero, ¿cuál? Si yo ejecuto

51:08

esto, ay, perdón, esto va aquí. Si yo

51:12

ejecuto esto, se queda así. ¿Por qué?

51:16

Porque eso es que está funcionando bien.

51:18

Eso es porque el servidor se ha

51:20

levantado, pero no está haciendo nada,

51:22

¿vale? No está haciendo ningún tipo de

51:24

de cosa, sino que yo he levantado esto,

51:27

ahora está escuchando los cambios, las

51:30

conexiones, pero nadie se está

51:31

conectando. Así que para poder utilizar

51:34

realmente esto, no hace falta levantar

51:37

tú manualmente el servidor. No se tiene

51:40

que hacer así con los MCP. La forma

51:43

correcta de hacer esto es que vamos a ir

51:45

otra vez a cloud, ¿vale? Y vamos a ir de

51:48

nuevo aquí a los settings. Vamos de

51:51

nuevo aquí al developer que tenemos file

51:53

system, Postgress, GitCup, que son todos

51:55

los que hemos ido viendo antes. Y aquí

51:57

en la configuración voy a abrir ahora

51:59

mismo el Visual Studio Code. Ahora te

52:00

enseñaré otras formas de hacerlo porque

52:02

esta es para que veamos. la

52:04

madre que me parió. Ay, que se me ha

52:06

colado el personal access token. Voy a

52:07

quitarlo antes de que sea demasiado

52:09

tarde. Voy a quitarlo. Ahora podé podéis

52:12

ir para atrás y podéis ver ahí el

52:14

personal access token. Cago en la leche.

52:17

Bueno, ya está quitado. No pasa nada, no

52:19

ha pasado nada. No ha pasado nada. Ya

52:21

está, ya está. No ha pasado nada, no ha

52:23

pasado nada. Uy, uy. Ay, claro, alguien

52:25

podía haber ido para atrás y para

52:27

adelante y ver el que tenía antes y ya

52:29

está. Bueno, no pasa nada, ¿eh? Y de

52:31

hecho lo voy a quitar, ya que no vamos a

52:33

utilizar Ghub. Ya lo quito y ya está.

52:36

Vale, ahora lo que vamos a hacer es

52:39

teníamos el de file system, el de

52:40

Postgress, pues vamos a añadir uno nuevo

52:43

que le vamos a llamar weather, ¿vale?

52:45

Porque es del tiempo. El comando que

52:47

tenemos que utilizar para levantarlo,

52:49

hemos visto que es npx. Los argumentos

52:52

que tenemos que pasarle es el -i para

52:54

que no nos pregunte si te qui instalar

52:56

nada. Y aquí le vamos a decir que

52:58

utilice tsx. Y aquí deberíamos decirle

53:01

dónde está este main.ts, donde está

53:04

localmente nuestro mcp. En nuestro caso,

53:08

lo que podemos hacer aquí es hacer

53:10

PwD. Ya me da aquí toda la ruta, así que

53:14

aquí podemos añadir la

53:16

[Música]

53:18

ruta/main.ts. Vale, con esto lo que

53:21

vamos a hacer es levantar el servidor de

53:23

nuestro MCP. Con este comando le tenemos

53:26

que pasar toda la ruta absoluta porque

53:29

cuando Cloud no sabe dónde tenemos el

53:31

archivo, le tenemos que dar la ruta

53:32

entera, ¿vale? Y ahora ya con esto

53:34

cerramos esto, entramos otra vez a Cloud

53:37

y vamos a ver si ahora nos da algún

53:39

problema. Espero que no. Vale, tenemos

53:41

13. Vamos a buscar por aquí fetch

53:44

weather, tool to fetch the weather of a

53:47

city. Vale. Y si le digo qué tiempo hace

53:51

en Barcelona. Vamos a ver. debería

53:54

decirme que está soleado. ¿Por qué?

53:56

Porque ahora mismo le estamos poniendo

53:57

hard coding que está soleado. Vale,

54:00

allow. Vale, ya le hemos dado permiso. Y

54:03

me dice, "Actualmente el clima en

54:04

Barcelona es soleado." Vale, me ha dicho

54:07

que es soleado porque justamente yo le

54:08

estoy diciendo que está soleado. Si yo

54:11

aquí le cambiase esto, pues obviamente

54:13

me funcionaría mejor, ¿no? Me diría,

54:15

"Ah, vale, pues así." Ahora la pregunta

54:17

del millón que seguro te estás haciendo.

54:18

Vaya rollo tener que ir a Cloude, tener

54:21

que refrescar y hacer. No te preocupes,

54:25

tranquilo, tengo una solución para ti.

54:27

No hace falta que utilices Cloue

54:29

mientras estás desarrollando una

54:30

herramienta como esta para estar

54:33

haciendo pues pruebas de tu MCP, ¿vale?

54:37

De hecho, hay una herramienta mucho

54:39

mejor que es la de Inspector, un MCP

54:42

Inspector que te permite testear y

54:44

depurar servidores de Model Context

54:47

Protocol de forma mucho más sencilla.

54:49

Por ejemplo, en lugar de tener que venir

54:51

aquí a Cloud, tener que cambiar todo

54:53

esto y tal, vamos a cerrar esto. Vamos a

54:55

ir aquí a Visual Studio Code y aquí

54:57

vamos a ejecutar npx y vamos a model

55:03

contex

55:05

protocol/inspector y ahora le vamos a

55:07

decir cómo tiene que levantarse este MCP

55:10

que hemos visto ya que es npx- TSX y

55:14

ahora el archivo que queremos levantar

55:16

main.ts. En este caso no hace falta que

55:18

pongamos toda la ruta porque estamos en

55:21

el mismo en la misma carpeta, ¿vale? Por

55:23

eso no hace falta. Le damos a enter y

55:25

esto lo que va a hacer es levantar el

55:27

inspector del MCP en este puerto, en

55:30

6274 que podemos venir aquí, nos dice

55:33

cuál es el transporte. En este caso SD D

55:37

O estándar in and out. El comando npx

55:41

argumentos ITSX. Vale, nos

55:44

conectamos y ya nos hemos conectado.

55:47

Aquí tenemos ahora mismo solo las

55:49

herramientas activadas. ¿Por qué? Porque

55:50

de lo otro no tenemos, solo tenemos las

55:52

herramientas. Podemos listar las

55:54

herramientas y aquí tenemos el fetch

55:56

weather que le damos, le podemos poner

55:58

aquí la

56:00

ciudad, ejecutamos y aquí tendríamos la

56:03

llamada. Al hacer la llamada pues

56:05

podemos ver que la respuesta, el clima

56:07

de Barcelona es soleado. Si pongo aquí

56:09

México y ejecutamos la herramienta,

56:11

¿vale? Podríamos ver la llamada y aquí

56:14

el clima de México es soleado, o sea,

56:16

esta es una herramienta mucho más

56:18

interesante para probar fácilmente

56:21

nuestros MCP sin necesidad de tener que

56:24

ir a cloud y tal. ¿Vale? Entonces, vamos

56:27

a hacer algo. Vamos a hacer que sea más

56:29

interesante nuestro MCP conectándose a

56:31

una API. Y una vez que se conecta la

56:33

API, vamos a utilizar un tercer cliente.

56:36

Vamos a utilizar en Visual Studio Code

56:39

nuestro MCP, porque no solo se puede

56:41

utilizar en Cloud, se puede utilizar en

56:43

Cursor, en Winsh, en Visual Studio Code.

56:45

Y te voy a enseñar cómo. Pero por ahora

56:48

antes lo que vamos a hacer es vamos a ir

56:50

aquí. De hecho, fijaos que también hay

56:51

un restart que también es s superútil.

56:54

Así que vamos a ir por aquí. Vamos a

56:56

limpiar esto. Y aquí, que yo aquí había

56:59

hecho esto, que está hecho a mano, que

57:01

está un poco de aquella manera, lo que

57:03

podemos hacer es, en lugar de hacerlo a

57:05

mano, simplemente lo que podemos hacer

57:08

es preguntar en una API, ¿qué API

57:11

podemos utilizar? A ver, hay un montón

57:12

de APIs de del tiempo, pero hay una que

57:15

no hace falta utilizar APIy, que es Open

57:17

Meteo, que está bastante bien. Por

57:19

ejemplo, aquí tenéis para recuperar eh

57:22

el forecast actual de esta latitud y

57:25

esta longitud y ya mira, te devuelve

57:27

todo esto, toda la información.

57:30

Perfecto. Tiene cierto límite, pero

57:32

bueno, para lo que nosotros queremos

57:33

hacer ya está bien. Lo malo que no

57:37

acepta el hecho de tener que pasarle una

57:40

ciudad directamente. Para eso lo que

57:43

tienes que hacer aquí en las APIs que

57:45

tienes

57:46

disponibles, tiene una API de

57:48

geolocalización en la que tú le pasas

57:50

aquí el nombre de la ciudad, le puedes

57:53

pasar incluso el idioma, pero ves,

57:54

tienes Barcelona y aquí con esta

57:57

información te da la latitud y la

57:59

longitud de esa ciudad, ¿vale? Pues lo

58:01

que vamos a hacer es copiarnos esta URL

58:04

y aquí lo primero que vamos a sacar es

58:07

la respuesta de hacer un fetching de

58:09

datos. Ya veis que aquí es que podéis

58:12

llamar a una API, os podéis conectar a

58:15

lo que vosotros queráis. Yo aquí voy a

58:17

utilizar esta ciudad y esta ciudad la

58:19

utilizo en esta API para recuperar la

58:21

información de la latitud y la longitud.

58:24

Mira, vamos a hacer un poco de vive

58:25

coding. La respuesta. Esperamos la

58:28

respuesta a la promesa. Lo transformamos

58:30

en Jason y aquí me está buscando el

58:33

weather description. Esto no es lo que

58:35

quiero. Yo lo que quiero es sacar de

58:36

esto de aquí. Esto es lo que nos

58:38

devuelve. es una rey, así que le vamos a

58:41

decir que si la longitud es cero, le

58:43

vamos a dar que no se encuentre

58:45

información para la ciudad. Importante

58:47

que informemos al a nuestra inteligencia

58:50

artificial de, oye, si no hay ninguna

58:52

ciudad que corresponda con esto, le

58:55

hacemos un content, no se encontró

58:56

información para la ciudad, ¿vale? Así

58:58

que ya está, con eso al menos ya lo

59:00

tenemos solucionado. A partir de esto,

59:02

ahora que sí que sabemos que tenemos

59:04

latitud y longitud, lo sacamos del

59:06

primero y ahora sí podemos sacar el

59:09

forecast. Vamos aquí a esta API del

59:11

forecast. Fijaos que si le pasas la

59:13

latitud y la longitud, aparte de más

59:16

información, le puedes decir cuánto

59:17

tiene que sacar de diferentes días, si

59:20

tiene que sacar el current weather, que

59:22

le voy a voy a sacar current weather,

59:25

precipitación y si es día de noche

59:29

podemos si está

59:30

lloviendo el Bueno, con eso yo creo que

59:34

ya es suficiente, ¿vale? Y ta ta aquí

59:37

relad char, ¿vale? Aquí tenemos esta

59:40

API. Esta API nos está devolviendo esta

59:43

información donde aquí, fijaos que sí

59:45

que tiene la temperatura y tal, pero

59:48

importante, no hace falta que nosotros

59:51

tratemos estos datos. Normalmente lo que

59:53

haríamos es tener que tratar los datos

59:55

de ver si hace frío, si hace calor.

59:57

Nosotros no nos tenemos que preocuparnos

59:58

de eso. Vas a ver, el tema es que con

60:01

esta API me voy a ir aquí. Vamos a

60:04

llamar hasta API, ¿vale? Weather

60:06

response await con un fetch. Y aquí lo

60:10

que vamos a hacer es cambiar esta

60:12

latitud, esta latitud de aquí por la que

60:16

tenemos y esta longitud de aquí por la

60:18

que tenemos. Vale, tenemos la respuesta,

60:21

la transformamos en Jason y ahora lo

60:24

único que necesitamos es devolver esta

60:26

información. ¿Cómo podemos devolver esta

60:29

información que es un Jason? Podríamos

60:31

sacar los datos y tratarlos y

60:33

devolvérselos en formato texto, pero no

60:36

tengo ganas porque para eso es una

60:38

inteligencia artificial. Así que le

60:39

vamos a devolver el Jason entero. Le

60:42

vamos a decir, "No, no, búscate la vida

60:44

y entiende tú lo que te estoy

60:46

devolviendo, que ya con los nombres de

60:48

las propiedades tendrás suficiente y ya

60:50

deberías saber de qué te estoy

60:52

hablando." Así que si no se encontró

60:55

información, pues sí, le estoy dando

60:56

aquí la pista. Oye, no se ha encontrado

60:57

información, pero si tengo información,

60:59

sacamos la información de la latitud, la

61:01

longitud, vamos a recuperar la

61:03

temperatura por horas y vamos a

61:04

recuperar la temperatura actual, si está

61:07

lloviendo, si no está lloviendo y tal y

61:09

le vamos a devolver el Jason entero, así

61:11

directamente. Toma, para ti. ¿Por qué?

61:14

Porque no hace falta que nosotros le

61:17

tengamos que explicar todo esto y se lo

61:19

tengamos que poner un texto. Va a ser

61:21

capaz con el contexto de este objeto

61:23

entender si está lloviendo, si la

61:25

temperatura es esta o es otra. O sea, lo

61:28

vas a ver perfectamente. De hecho, vamos

61:30

a probarlo. Nos vamos a ir aquí a

61:32

nuestro inspector. Vamos a reiniciar a

61:35

ver si funciona perfectamente. Vale,

61:38

vamos a limpiar esto. Vamos a hacer un

61:41

list tools. Tenemos el fetch weather.

61:44

Vale, voy a poner aquí ahora mismo

61:46

Barcelona, que se supone que está

61:47

lloviendo. Ejecutamos la herramienta y

61:50

nos peta. Vale, nos ha petado porque no

61:53

puede estructurar la propiedad latitud

61:55

de cero. Vale, esto es porque, pero

61:57

bueno, para que veáis que depurar es

61:59

super importante. ¿Por qué pasa esto?

62:01

Porque me he equivocado en la respuesta

62:04

del de este de aquí, el geocoding este.

62:08

¿Ves que tiene un resols? Yo esto me lo

62:09

he saltado. Entonces, ¿qué pasa? que

62:12

esto no es data 0, esto es

62:15

data.0, ¿vale? Así que nada, volvemos

62:18

aquí al inspector, hacemos un restart y

62:22

ahora aquí vamos a hacer otra vez

62:24

Barcelona R to Tool. Ahora sí caído

62:27

bien. Vamos a ver la respuesta. Y aquí

62:30

podemos ver que la respuesta que está

62:32

dando es todo el texto que le está hoy

62:34

pasando. Pero claro, tened en cuenta una

62:36

cosa, el inspector del MCP no tiene

62:40

inteligencia artificial, no va a ser

62:42

capaz de saber tratar los datos, ¿vale?

62:45

O sea, no tiene ni idea, no tiene

62:46

inteligencia artificial este MCP, este

62:48

inspector solo sabe lo que le pasas y lo

62:50

que devuelve. Para poder utilizar

62:52

correctamente con inteligencia

62:53

artificial, ¿qué necesitamos? tener que

62:56

ir a Cloud, que ya lo tenemos

62:58

configurado, no pasa nada. ¿Qué tiempo

63:00

hace hoy en Barcelona? Y este sí,

63:03

obviamente sí que tiene inteligencia

63:05

artificial para saber tratar la

63:07

respuesta de nuestro MCP. Vale, dice,

63:10

"¿Puedo consultar una fuente externa?"

63:12

Fíjate que ya te he detectado que tiene

63:14

que utilizar el MCP. Le digo que sí, que

63:16

le permito para este chat, ¿vale? Está

63:18

pensando porque está haciendo la llamada

63:20

a la API, ya le ha devuelto la

63:22

información. Dice, "Actualmente en

63:23

Barcelona hace 14.3 3 con una ligera

63:26

precipitación de 0.2 y algo de lluvia.

63:29

Es de día y según los datos la

63:31

temperatura ha sido moderadora durante

63:32

el día alcanzando un máximo. O sea,

63:34

fijaos cómo ha sido brutal el hecho de

63:37

todo lo que te está contando a partir de

63:40

esto que tenemos aquí, ¿no? Que esto es

63:42

lo que yo le he pasado con el objeto,

63:45

que no le he dicho, no le he explicado

63:46

absolutamente nada, ha entendido el

63:48

contexto y me lo ha tratado mucho mejor.

63:51

Además, me está diciendo para el resto

63:52

del día se espera que la temperatura

63:54

baje gradualmente hasta llegar a unos

63:55

10º a medianoche. ¿Por qué? Porque con

63:58

el contexto de este arrey de las

63:59

temperaturas estas, lo que está haciendo

64:01

es justamente sí, yo estoy en Barcelona

64:03

y os puedo confirmar que es verdad. Así

64:05

que es tremendo lo que ha hecho. Ahora,

64:08

lo mejor de todo es que esto no solo lo

64:11

podéis utilizar en Cloud, que

64:12

seguramente os estáis preguntando, ¿esto

64:13

lo puedo utilizar en más sitios o solo

64:15

lo puedo utilizar aquí? ¿No? O sea, al

64:17

final la idea de de esto es poder

64:19

utilizarlo en más sitios. pues no te

64:21

preocupes porque lo puedes utilizar en

64:22

más sitios. Por ejemplo, en Visual

64:25

Studio Code, una cosa que podéis hacer

64:26

aquí es abrir el chat que se abre así,

64:31

¿vale? Importante, para poder

64:34

utilizar MCPs en Visual Studio Code

64:36

tenéis que activar el modo agente, que

64:39

es, a ver si lo os lo enseño, este modo

64:41

de aquí. El modo agente no está activado

64:44

por defecto. Para activarlo tenéis que

64:47

ir a la configuración del usuario,

64:50

buscáis a gente y aquí veréis que pone

64:53

chat agent enable. Si no lo tenéis

64:55

activado, lo podéis activar. Es

64:57

gratuito, no tenéis que no no tiene

65:00

ningún pago extra ni nada. De hecho,

65:03

dije que Pilot ahora es gratuito, así

65:05

que ahí lo tenéis, ¿vale? Ahí lo podéis

65:07

utilizar. Una vez que tengáis el modo

65:09

agente, vais a ver que en el modo

65:11

agente, fijaos aquí que aparecen

65:14

cositas. Aquí tendríamos las

65:16

herramientas, ¿vale? está señal las

65:18

herramientas y aquí esto es porque está

65:21

detectando que hay nuevas herramientas

65:23

disponibles. Esto es porque habrá

65:25

detectado un cambio de configuración y

65:27

ha dicho, ostras, ¿y por qué ha

65:28

detectado un cambio de configuración?

65:30

Bueno, esto es lo más interesante

65:32

todavía de Visual Studio Code. Y es que

65:35

Visual Studio Code va a recuperar

65:38

automáticamente para ti la configuración

65:40

de los MCPs que utilices en Cursor, en

65:44

Winsurf, en Cloude y en todos estos,

65:46

¿vale? Así que le puedes echar un

65:48

vistazo aquí porque cuando lo hagas,

65:50

fíjate que ahora me ha aumentado a 18 y

65:53

es que si le damos aquí tenemos console

65:55

ninja, servidor mp desde Winsurf,

65:59

servidor MCP desde Cloud, el file system

66:03

desde Cloud, o sea, los ha importado

66:05

automáticamente, ha detectado todos los

66:07

MCPs que tienes configurados y se los ha

66:10

traído. tú los puedes desactivar, cosa

66:12

que te recomiendo bastante para evitar

66:15

problemas, ¿vale? Por ejemplo, este

66:17

también vamos a activar solo el que he

66:19

creado, que es este de escritorio cloud,

66:21

pero imaginemos que los desactivamos

66:23

todos, ¿vale? Porque dices, "No, no

66:24

quiero activar ninguno. Yo lo que quiero

66:26

es utilizar justamente los que tengo en

66:29

Visual Studio Code." No pasa nada, sino

66:31

que de hecho en Visual Studio Code yo

66:33

creo que a día de hoy, bueno, cursor

66:36

está bastante mejor, pero no puedo

66:38

entrar en todos los editores, ¿vale? El

66:40

tema es que Visual Studio Code, para

66:41

añadirlo no tiene una UI en condiciones,

66:45

¿vale? Pero sí que tiene aquí si vais a

66:47

agregar servidor te aparece así de esta

66:50

forma. Esta a mí no me suele gustar

66:52

mucho, ¿vale? Que sea así como lo podéis

66:55

hacer, no hay ningún problema, podéis

66:56

hacerlo manual, o sea, así con este

66:58

input. Yo lo que os recomiendo es

67:01

hacerlo con el settings, que vais al

67:03

JSON y aquí abajo vais a ver que os

67:06

aparecerá MCP servers, porque ya he

67:08

detectado que tenemos estos y una vez

67:10

que tenéis esos, pues ya automáticamente

67:13

lo que podéis hacer es lo el que queráis

67:15

utilizar. En este caso vamos a utilizar

67:17

este de weather que tenemos aquí. Pu pu

67:19

pu y vais a ver que tiene una cosa muy

67:22

chula. Vale, los ponemos aquí y lo que

67:24

tiene es que ya detecta que es un MCP.

67:27

Le podéis dar aquí a iniciar y ya te

67:30

dice si está en ejecución, si lo puedes

67:32

detener, reiniciar en el caso que hagas

67:34

algún cambio y cuántas herramientas se

67:36

ha traído. De hecho, ahora vamos aquí.

67:38

¿Veis que pone una de 19? Le damos aquí

67:41

y es porque está activando la que

67:43

tenemos global en Code, ¿vale? Así que

67:45

tened en cuenta esto para poder

67:47

activarlo y si hacéis algún cambio que

67:48

lo podáis reiniciar. Ahora, aquí mismo

67:51

podéis decirle qué tiempo hace en

67:54

Madrid, por ejemplo, ¿vale? Y va a pasar

67:57

exactamente lo mismo, ¿vale? Exactamente

67:59

lo mismo. Vamos a tener aquí que nos va

68:02

a decir, "Voy a consultar el tiempo

68:03

Madrid para ti. Esto es lo que va a

68:05

ejecutar City Madrid. Le vamos a dar a

68:07

continuar, va a trabajar, le va a

68:10

preguntar a nuestra API y ya está,

68:12

¿vale? O sea, exactamente igual como lo

68:14

está haciendo Cloude. También lo podéis

68:15

hacer en Visual Studio Code. Y fijaos

68:17

pues que también está funcionando, ha

68:19

consultado el tiempo en Madrid, es la

68:21

hora, no sé qué, no sé cuánto. Y esto lo

68:22

ha hecho gracias a nuestro MCP.

68:26

Ahora, una cosa o para que veáis también

68:29

cómo utilizar Visual Studio Code MCPs

68:32

eh, que no son vuestros como los que

68:33

hemos codeado. Hay un MCP que os

68:36

recomiendo que le echéis un vistazo

68:38

porque os puede volar la cabeza muy

68:40

fuerte. Es uno de los mejores MCPs que

68:43

existen y es el de Playgridge. El MCP de

68:46

Playgright, además que tiene una

68:48

documentación buenísima. Aquí tenéis la

68:51

configuración de cómo hacerlo

68:52

manualmente, ¿vale? Pero por ejemplo, y

68:55

esto para que lo sepáis que es bastante

68:57

interesante, también se puede añadir un

68:59

MCP en Visual Studio Code a partir de la

69:02

línea de comandos. Podéis ir aquí a la

69:03

terminal y podéis ejecutar esto. Code

69:07

ATMCP y este objeto de aquí, ¿vale? Esto

69:10

normalmente lo van a poner en la

69:11

documentación para que no tengáis que

69:13

hacer absolutamente nada. Y la pregunta

69:14

del millón es, ¿por qué este MCP es

69:18

espectacular? Bueno, pues fijaos, vamos

69:20

a ir a Visual Studio Code y os va a

69:22

volar la cabeza. Mirad que ahora tengo

69:24

22 herramientas, o sea, ya se ha

69:25

reiniciado automáticamente, ¿no? Y aquí

69:27

podemos ver en las herramientas Playgrid

69:30

para cerrar páginas, no sé qué. Esta

69:32

herramienta lo que os va a permitir es

69:35

poder navegar a través de páginas web y

69:40

hacer lo que queráis. Por ejemplo,

69:42

imaginad que estáis eh trabajando en, yo

69:45

que sé, en un local host. Es que podría

69:47

ser en un local host, pero bueno, yo que

69:49

sé. Voy a poner, voy a buscar, voy a

69:52

poner la velada, la TP, la velada web

69:56

live, ¿vale? Code punto, vale, voy a

69:59

entrar en la web de la velada, ¿vale?

70:02

Imaginad, imaginad que estamos aquí la

70:04

web de la velada y lo que queremos, eh,

70:07

ponemos el modo agente, importante

70:08

porque si no ponéis el modo agente no te

70:10

aparecen las herramientas. Vale, me ha

70:13

activado ahora otra vez todas las

70:14

herramientas. Voy a desactivarlas para

70:15

asegurarnos que solo utilizamos

70:16

Playgrid. Vale, vale. Playgridge. Y

70:20

quitamos la del file system que también

70:21

la queremos. Pues le podríamos decir,

70:23

visita la página web de Midudep y quiero

70:28

que me digas el H1 que tiene la página y

70:32

los últimos cursos que ha publicado. O

70:36

sea, esto es brutal. Lo que le vamos a

70:38

decir es que visite a una, esto que

70:41

estáis viendo es totalmente gratuito, es

70:43

que vaya a una página web y que le que

70:47

la visite, que navegue la página web y

70:49

que les traiga información. Y lo estamos

70:51

haciendo totalmente de forma hablada, o

70:54

sea, no le est no estamos programando

70:55

nada. lo que va a hacer ahora, de hecho,

70:57

fijaos, me ha abierto un navegador, está

70:59

navegando la página, está buscando la

71:01

información que le he pedido y se la he

71:03

pedido directamente de forma así, o sea,

71:06

se la estoy pidiendo sin ningún tipo de

71:10

código ni nada, o sea, está haciendo

71:11

scrapping y fíjate el H1 conviértete en

71:13

desarrollador full stack, últimos cursos

71:15

publicados, iniciación en scrapping con

71:16

Python. Además, hay un curso aparece

71:18

como disponible próximamente. Lo que ha

71:20

hecho es entrar a la página web, ¿vale?

71:22

y directamente sacarme esta información.

71:25

Pero podríamos ir más allá porque le

71:27

podríamos decir, entra a la página de

71:31

infolavelada.com, revisa que los

71:34

patrocinadores que aparecen sean los

71:37

mismos que tenemos en la página. Mira,

71:41

voy a quitar, voy a quitar este. Agregar

71:44

contexto. Eh, vamos a poner

71:47

sponsors. Está

71:49

constante. Eh, editores abiertos. Vamos

71:52

a poner este sponsors, ¿vale? Entra a la

71:55

página infolabelada.com. Resumos que

71:58

tenemos en la página que tenemos en el

72:01

proyecto. En el proyecto en

72:04

sponsors.ts. ¿Vale? Y esto lo que va a

72:07

hacer es navegar en la página, revisar

72:10

esa información. No sé si en info

72:11

hablada, yo creo que sí que lo tenemos.

72:13

Vamos a ver si me abre. Mira, ¿ves? Ha

72:14

entrado ya en la página. Aquí están los

72:16

patrocinadores. Vamos a ver si es capaz

72:18

de entender esto. A ver si es capaz de

72:20

entender esto. Pero básicamente lo que

72:22

está haciendo ahora es extraer esa

72:23

información, navegando esa información.

72:25

¿Ves? Patrocinadores en info la velada,

72:27

patrocinadores en nuestro archivo

72:28

sponsor. La buena noticia es que los

72:30

patrocinadores son exactamente los

72:31

mismos y en el mismo orden. Todos los

72:33

patrocinadores que aparecen infobolada

72:35

están correctamente representados en el

72:36

archivo sponsors.t de nuestro proyecto.

72:39

También noté que en la página hay

72:40

información adicional. O sea, ya habéis

72:42

visto cómo de es esto, porque hemos

72:46

hecho con el MCP, ha ido a la página

72:48

web, ha extraído información y lo ha

72:50

comparado con información que tenemos en

72:52

nuestro editor. Imagínate que nos falte

72:55

uno. Imagínate que nos falta Grefusa.

72:59

Grefusa. Imagínate que nos falta este.

73:02

Vale, le voy a decir eh le voy a decir

73:05

otra vez lo mismo, ¿vale? Pero le voy a

73:06

decir que entra la info,

73:09

revisa, eh, y si falta alguno, añádelo

73:13

al archivo

73:15

sponsors.ts con la información que

73:17

puedas extraer la página. Claro, es que

73:22

esto lo que está haciendo es aumentar

73:25

totalmente las posibilidades de de de lo

73:28

que tenemos, porque además podríamos

73:30

decirle, "Inicia sesión aquí, prueba

73:32

esto, eh, controla." También podríais

73:35

utilizarlo de forma local, o sea, podéis

73:37

ir a local host en lugar de decirle que

73:39

vaya a Infolabelada, le podemos decir,

73:41

"Oye, quiero que vayas a local host y no

73:44

sé qué." Mira, ahora lo está

73:45

comparantado. Dice, "Cambio de orden en

73:47

archivos sponsors, URL diferente, ganas

73:49

de vicio. Mira, ahora está detectando

73:51

además que hay cambios en algún fichero,

73:53

algún cambio y tal." se ha

73:54

quedado pensado aquí. No sé si es que

73:56

está pensando o se ha quedado Se ha

73:58

quedado pensado. Se ha quedado Se ha

73:59

quedado ahí. Se ha equivocado. Se ha

74:00

equivocado. No sé qué le ha pasado, pero

74:02

se ha quedado congelado. O igual todavía

74:04

está pensando. Vete a saber. O igual me

74:05

han echado de Cloud ya. Ah, no, sigue,

74:07

sigue. Pero sí, sí se ha congelado un

74:09

momento, pero pero mira, dice, "Voy a

74:11

actualizar el archivo sponsors con estas

74:13

correcciones." O sea, como le hemos

74:15

dicho, que actualice, pues fijaos todo

74:16

lo que está haciendo. El hecho de no

74:18

solo ir a la página web, sino que estás

74:20

trayendo información. Me ha añadido

74:22

Grefusa, que faltaba. ¿Veis que Grafusa

74:24

lo he quitado? lo ha añadido porque no

74:27

estaba y ya tenemos ahí unos cuantos

74:29

cambios, así que ha traído información y

74:31

ya hemos actualizado. O sea, tremendo.

74:33

Pues nada, amigos, esto es una

74:34

introducción a lo que serían los MCPs,

74:37

un curso de iniciación donde hemos visto

74:39

cómo utilizarlos, cómo crear uno desde

74:41

cero para conectarte a API, pero es que

74:44

ahí puedes hacer lo que te dé la gana y,

74:47

incluso, como puedes utilizar en Visual

74:49

Studio Code para aumentar las

74:51

posibilidades de tu inteligencia

74:52

artificial y ser todavía más productivo.

74:54

Así que espero que te haya gustado. Si

74:56

te ha gustado, deja tu like. Bueno,

74:58

todavía no lo he puesto en YouTube, pero

74:59

cuando ponga en YouTube, deja tu like,

75:01

compártelo y nada, que espero que os

75:02

haya gustado mucho esta introducción. A

75:04

mí me parece una cosa que de verdad me

75:07

genera muchas ganas porque creo que de

75:10

verdad puede hacerse cosas muy muy

75:12

buenas. Que sepáis que este curso lo

75:14

vamos a subir en la academia también,

75:16

¿vale? y lo haremos cortadito y con

75:18

certificado. Así que si eres suscriptor

75:20

del canal de Twitch podrás entrar a la

75:21

academia y muy pronto podréis

75:23

suscribiros a Academia, pues pagando una

75:25

suscripción normal y corriente.

Interactive Summary

El video explica el Protocolo de Contexto del Modelo (MCP), un estándar de comunicación que permite a los modelos de lenguaje como ChatGPT y Claude interactuar con el mundo exterior, superando sus limitaciones de acción. Creado por Anthropic y ahora un estándar abierto, el MCP funciona como un "USB" para conectar IAs a APIs, bases de datos, sistemas de archivos y servicios externos. Esto facilita la creación de agentes de IA autónomos y ofrece flexibilidad entre proveedores de lenguaje, mayor privacidad y una creciente comunidad. El video demuestra el uso de MCPs para interactuar con el sistema de archivos local (leer, mover, crear), consultar bases de datos (PostgreSQL), automatizar tareas en GitHub (crear pull requests) y navegar/extraer información de páginas web (usando Playwright). También se muestra cómo desarrollar un MCP personalizado desde cero para conectarse a una API de clima y cómo depurarlo utilizando herramientas como MCP Inspector y diferentes clientes como Claude y Visual Studio Code. La adopción de MCPs por parte de OpenAI subraya su importancia como el estándar de facto para proporcionar contexto y herramientas a los LLM.

Suggested questions

8 ready-made prompts