WEBVTT

NOTE Sentence-level transcript of https://www.youtube.com/watch?v=sAOBXCDiDOs

NOTE One cue per sentence. Cue ids are the line anchors on /transcripts/sAOBXCDiDOs.html. A cue ends where the next begins, or 2 s after its last word.

s1
00:00:01.680 --> 00:00:02.560
Hello y'all.

s2
00:00:02.560 --> 00:00:03.560
My name is Pedro.

s3
00:00:03.560 --> 00:00:05.960
I'm the co-founder of Manufact.

s4
00:00:05.960 --> 00:00:09.600
And uh today I want to talk to you about MCP apps.

s5
00:00:09.600 --> 00:00:11.760
Specifically, we're going to talk about the primitives.

s6
00:00:11.760 --> 00:00:15.600
So, how these apps are built, how they work, and what they allow you.

s7
00:00:15.600 --> 00:00:17.560
How to distribute MCP apps.

s8
00:00:17.560 --> 00:00:23.440
So, what is behind the discovery mechanisms of MCP servers and apps in general.

s9
00:00:23.440 --> 00:00:30.520
And uh why I think you should care about this because this is how all software will be used.

s10
00:00:31.360 --> 00:00:36.480
So, I'm sure most people here listening to this talk know what an MCP is.

s11
00:00:36.480 --> 00:00:41.160
MCP has been around for quite some time since 2024.

s12
00:00:41.440 --> 00:00:51.760
For a full year, it was a it became very uh say frequent talk amongst developers and companies that were rushing to build these MCP servers.

s13
00:00:51.760 --> 00:00:53.760
MCP apps are less familiar concept.

s14
00:00:53.760 --> 00:01:03.360
They've been around also for some quite some time uh more or less uh since the uh the end of 2025.

s15
00:01:03.360 --> 00:01:10.720
But when I talk to companies and people in general, I see that many people don't understand what they are and don't understand they can build them.

s16
00:01:10.720 --> 00:01:15.600
And uh specifically, they don't know how to distribute them.

s17
00:01:15.640 --> 00:01:21.520
MCP apps, but also they don't know the new way to distribute MCP servers as well.

s18
00:01:21.520 --> 00:01:28.520
So, I hope by the end of this talk you going to know about this and you're going to be ready to build your first or iterate on your MCP

s19
00:01:28.520 --> 00:01:37.040
uh server and app and you're going to be able to share it with the world in a more efficient way brings you more customers and more users.

s20
00:01:38.360 --> 00:01:42.240
A little words about me and the Manufact uh my company.

s21
00:01:42.240 --> 00:01:49.840
Uh we build open source SDKs and the tools for MCP and MCP cloud uh of the Manufact.

s22
00:01:50.680 --> 00:01:57.901
Open source SDKs uh by the name of MCPUs uh allow developers to build servers um

s23
00:01:57.901 --> 00:01:58.280
[clears throat]

s24
00:01:58.280 --> 00:02:00.600
clients and agents in an easier way.

s25
00:02:00.600 --> 00:02:08.920
So, we provide an abstraction over the official SDKs that allows developers to ship faster without worrying about how the spec works beneath.

s26
00:02:08.920 --> 00:02:15.320
We have 8 million plus downloads across our SDKs, and we have 10K stars on GitHub.

s27
00:02:15.320 --> 00:02:20.440
Also open source, uh the other product is the inspector.

s28
00:02:20.440 --> 00:02:32.560
Uh it's an open source inspector, again, uh something comparable to the official inspector from the model context protocol maintainers that allows you to test these MCP servers and apps specifically

s29
00:02:32.560 --> 00:02:34.440
uh on your local machine.

s30
00:02:34.440 --> 00:02:39.120
Once you build, once you test it, we have built the cloud for you to ship.

s31
00:02:39.120 --> 00:02:41.800
The Manifold Cloud is a cloud vertical for MCP.

s32
00:02:41.800 --> 00:02:55.360
We provide all the primitives for you to be able to ship MCP servers from your GitHub repo and test them immediately, share them with your team, run emails, run publishing checks to make sure that your app is ready to be put uh submitted,

s33
00:02:55.360 --> 00:03:00.040
and many other features that are completely specific to MCP.

s34
00:03:00.040 --> 00:03:03.120
Of course, we really believe in MCP.

s35
00:03:03.120 --> 00:03:07.720
So, let's look uh a bit in the history of MCP and how did we get there.

s36
00:03:07.720 --> 00:03:18.880
So, MCP was launched in 2024, and by the end of uh May 2025, Idel Solomon, the other co-founder, started working on MCPUI, which is this way to kind of MCP servers

s37
00:03:18.880 --> 00:03:21.560
that return UI components.

s38
00:03:21.560 --> 00:03:30.720
Then, uh this was like many many people started talking about MCPUI because this is like such a great opportunity to ship UI with your MCP servers to agents.

s39
00:03:30.720 --> 00:03:37.720
So, it is interactive experiences where the agent is calling tools, but it's showing UIs to the user.

s40
00:03:37.720 --> 00:03:39.160
This created a lot of movement.

s41
00:03:39.160 --> 00:03:50.640
Many people enjoyed uh this proposal, and the ChatGPT at some point released the app SDK, which is a way to create these interactive MCP apps.

s42
00:03:50.640 --> 00:03:54.960
So, basically MCP servers also return UI elements.

s43
00:03:55.280 --> 00:04:05.520
Also, at the end of 2025, quite silently, both Character AI and Cloud released and opened their stores for MCP.

s44
00:04:05.520 --> 00:04:12.800
These stores allow you to submit your MCP server and have [clears throat] a one-click install experience for your users.

s45
00:04:12.800 --> 00:04:24.919
For the most time, these stores were closed in such that were um designed and only allowed for design partners.

s46
00:04:24.919 --> 00:04:29.040
But things have changed, and I'm happy to talk about this later.

s47
00:04:29.600 --> 00:04:37.480
In January 2026, MCP UI I say converted to MCP apps.

s48
00:04:37.480 --> 00:04:46.080
MCP apps is now the official extension of the Model Context Protocol that allows to return UI elements within MCP servers.

s49
00:04:46.160 --> 00:04:49.800
So this timeline is kind of an explanation of how the protocol evolved.

s50
00:04:49.800 --> 00:04:54.640
And I think still I think two major things happened in this timeline.

s51
00:04:54.640 --> 00:04:56.640
First, MCP apps.

s52
00:04:56.640 --> 00:04:59.600
MCP servers are not only returning JSON.

s53
00:04:59.600 --> 00:05:02.040
And that allows much richer experiences.

s54
00:05:02.040 --> 00:05:05.960
And the second thing, maybe even bigger, is that the stores opened.

s55
00:05:05.960 --> 00:05:22.080
This was a great uh a huge move by the model providers probably OpenAI, Perplexity, and basically every LLM client out there to say, "Oh, MCP is the way and we [clears throat] want to have a way for people to publish

s56
00:05:22.080 --> 00:05:29.360
vetted and quality MCP servers so that people can use them with a one-click install experience."

s57
00:05:31.160 --> 00:05:34.080
This is the situation right now with the stores.

s58
00:05:34.080 --> 00:05:44.560
The uh that are now being submitted to Character AI and Cloud apps for Character AI and connectors for Cloud increasingly being accepted.

s59
00:05:44.560 --> 00:05:56.080
As I was saying in the beginning, this was uh each one of them was gated behind design partnership because the ecosystem was very young, but now it's a GPT and called are both accepting more and more apps.

s60
00:05:56.120 --> 00:06:00.720
So, this is a uh this is the moment to publish yours.

s61
00:06:01.240 --> 00:06:07.320
So, let's see what MCP apps actually are and what you can do with them.

s62
00:06:09.280 --> 00:06:11.640
So, an MCP app works in the in the following way.

s63
00:06:11.640 --> 00:06:14.360
Uh much of this is very similar to MCP.

s64
00:06:14.360 --> 00:06:20.919
The model is a in the host owns the tools.

s65
00:06:20.919 --> 00:06:23.120
The tools are in a MCP server.

s66
00:06:23.120 --> 00:06:31.320
But, the MCP server in this case doesn't return a JSON string again, but it returns a widget in a sandboxed iframe.

s67
00:06:31.320 --> 00:06:35.200
So, the experience you see is your model is a streaming text.

s68
00:06:35.200 --> 00:06:42.320
At some point, it decides to make a tool call, but the tool call is not just returning JSON, it returns a UI just underneath.

s69
00:06:42.320 --> 00:06:50.480
And this UI is a sandboxed iframe, so you can as a company developing these apps, you can put almost whatever you want.

s70
00:06:50.480 --> 00:06:52.240
But, it doesn't end there.

s71
00:06:52.240 --> 00:06:57.200
Actually, there is a bidirectional communication that happens between the iframe and the host application.

s72
00:06:57.200 --> 00:07:03.360
So, from the iframe, from the MCP app UI elements, you can send messages back to the host.

s73
00:07:03.360 --> 00:07:05.880
You can interact in several ways.

s74
00:07:05.880 --> 00:07:09.320
I'm going to talk uh more about that uh later.

s75
00:07:09.320 --> 00:07:18.080
The way this works is that MCP uh declares UI resources at initialization time.

s76
00:07:18.080 --> 00:07:30.480
When the model calls the tool and it populates the arguments of the tool, uh the tool can then populate the arguments of the UI resource, and that can be then displayed and rendered by the client.

s77
00:07:32.040 --> 00:07:36.600
As you see here, this is the kind of experience that you can see in an MCP app.

s78
00:07:36.600 --> 00:07:44.640
The MCP server returns tool returns uh UI resource that is populated with the tool arguments.

s79
00:07:44.640 --> 00:07:45.320
And here you see.

s80
00:07:45.320 --> 00:07:48.360
So, without UI you would see like a wall of text.

s81
00:07:48.360 --> 00:07:53.640
The UI allows you to organize the information in a more human readable way.

s82
00:07:53.640 --> 00:07:56.840
So, this is uh is a like the basics of MCP ops.

s83
00:07:56.840 --> 00:08:01.680
Uh I think they're many many times uh they've been talked about.

s84
00:08:01.680 --> 00:08:08.040
And today I wanted to show a bit more of what you can do because this is not often mentioned and I think it's very interesting to design new experiences

s85
00:08:08.040 --> 00:08:11.320
which this new protocol allow.

s86
00:08:17.760 --> 00:08:27.000
So, first of all, again, the UI is displayed in the chat and it exposes a communication channel between the UI element and the host application.

s87
00:08:27.000 --> 00:08:34.039
So, the host application will listen for these messages going through these channels and will react accordingly.

s88
00:08:34.039 --> 00:08:36.080
So, this is the first primitive that I'm going to talk about.

s89
00:08:36.080 --> 00:08:38.000
So, model context.

s90
00:08:38.000 --> 00:08:40.880
In the UI you can show whatever information you want.

s91
00:08:40.880 --> 00:08:50.880
For instance, in this case we're showing three articles, but the model doesn't really know it doesn't really cannot really uh introspect in real time what is going on in the UI.

s92
00:08:50.880 --> 00:09:01.360
But the protocol mandates this state uh or this set state primitive where you can update the state of the model with respect to the UI components.

s93
00:09:01.360 --> 00:09:14.280
So, from the widget itself you can call this is an MCP use syntax that makes this a bit easier, the set state primitive, and you can update what the model knows about what's being displayed.

s94
00:09:14.280 --> 00:09:17.600
So, here we have a little demo that shows this.

s95
00:09:17.600 --> 00:09:26.200
Of course, uh the the the message uh prompts the tool and the tool shows the UI.

s96
00:09:26.200 --> 00:09:33.240
The state uh of the of this UI element is that nothing is selected and the model knows about this.

s97
00:09:33.240 --> 00:09:40.960
But if you modify the UI state, you can communicate this state change into the model itself.

s98
00:09:40.960 --> 00:09:48.760
So, then basically, if for example, here I send another message, the model will be aware of what happened in the UI element.

s99
00:09:48.760 --> 00:09:59.680
And you can do this by simply setting this using this uh um this primitive set state and update the state that the model knows about.

s100
00:10:01.240 --> 00:10:02.240
UI message.

s101
00:10:02.240 --> 00:10:12.680
So, this is another very cool feature where from the UI element the UI widget that your tool returns, you can send messages back to the model.

s102
00:10:12.680 --> 00:10:20.040
So, not only the interaction is I am a user, I have my chat interface, I see the UI, and I want to send another message.

s103
00:10:20.040 --> 00:10:23.920
Or maybe there is some contextual message that you can you want to send.

s104
00:10:23.920 --> 00:10:30.840
For instance, here we have the same shoe example, and you might want to learn more about Trey Blazer Pro.

s105
00:10:30.840 --> 00:10:45.360
And uh you can of course link the click of this button learn more to the primitive send follow-up message, and this will send a message to the chat itself, and the model can start giving you more information about the Trey Blazer Pro shoe in this case.

s106
00:10:45.360 --> 00:10:51.240
Um clients have different behavior regarding this, and this is true for many of the MCP features.

s107
00:10:51.240 --> 00:11:00.520
For instance, Cloud will display the message in the chat input and tell the user like the user has the choice to send it or not.

s108
00:11:00.520 --> 00:11:12.560
While OpenAI is a bit more integrated in this sense, it directly sends the model the message to the model and uh and starts streaming immediately the answer to that message.

s109
00:11:17.760 --> 00:11:19.240
This is a very cool feature.

s110
00:11:19.240 --> 00:11:26.920
Uh so, again, we have the tool, uh and uh we have a UI element that's populated from the tool itself, right?

s111
00:11:26.920 --> 00:11:39.600
If the model streams the input tokens into the tool arguments, you can uh in live take those partial input and update the UI incrementally.

s112
00:11:39.600 --> 00:11:51.600
So, as you see in this case, we see that the the the the tool inputs are being populated uh dynamically or gradually, and the the UI reacts accordingly.

s113
00:11:51.600 --> 00:12:02.640
I have a very cool demo about this just later in a video where in one of the coolest demos of MCP apps uh in the uses exactly this pattern.

s114
00:12:02.640 --> 00:12:12.480
So, you can, for example, imagine like uh you could have a UI component that renders something like an SVG, and there is MCP uh MCP apps doing that.

s115
00:12:12.480 --> 00:12:21.720
We also seen uh we actually created a Remotion MCP app where uh we use Remotion to create a video with React, and uh we render the Remotion video inside

s116
00:12:21.720 --> 00:12:27.160
the widget in real time as the tokens are streaming in.

s117
00:12:27.680 --> 00:12:33.480
Another thing you can do is from the from the widget itself, you can call other tools.

s118
00:12:33.480 --> 00:12:44.560
So, first of all, you can call the tool, of course, uh in the in the in the tool that was originally called to gather other data, but from the UI, for example,

s119
00:12:44.560 --> 00:12:53.480
you can have a button that triggers another tool call to gather additional data about what what is there in the MCP server.

s120
00:12:53.839 --> 00:12:55.760
Again, the primitive is very simple.

s121
00:12:55.760 --> 00:13:01.480
This is code on the left here is always um from MCP use.

s122
00:13:03.720 --> 00:13:07.240
This is another very interesting thing that you can do with MCP apps.

s123
00:13:07.240 --> 00:13:20.480
So, sometimes uh what happens is uh for instance, you uh want your MCP server to return certain informations, but you want to um not show the full information because maybe is uh

s124
00:13:20.480 --> 00:13:28.200
there's private information that you don't want to give to the to the model providers, and therefore, [clears throat] you might want to redact that right?

s125
00:13:28.200 --> 00:13:34.829
This is like a known privacy issue with MCP servers that you don't want to return and put into the uh

s126
00:13:34.829 --> 00:13:36.040
[clears throat]

s127
00:13:36.040 --> 00:13:38.040
your private information.

s128
00:13:38.040 --> 00:13:41.080
And MCP uh also allow you to do that.

s129
00:13:41.080 --> 00:13:46.360
So, when you call a tool, you return a widget, which is populated with some arguments.

s130
00:13:46.360 --> 00:13:50.040
You can return other outputs as well.

s131
00:13:50.040 --> 00:13:58.760
As in normal MCP servers, the the return of a of an MCP tool is list of outputs of different types.

s132
00:13:58.760 --> 00:14:04.480
You can imagine in this case, there is a structured output, which is sent into the widget itself.

s133
00:14:04.480 --> 00:14:08.080
And there is an additional output that can be sent directly to the model.

s134
00:14:08.080 --> 00:14:15.560
So, something common that you do is you show a very rich UI, like in this case, and uh and this is what the [clears throat] UI will show.

s135
00:14:15.560 --> 00:14:23.760
So, this is a card showing the information private information of of this person, but the model will only see the information you want.

s136
00:14:23.760 --> 00:14:31.040
So, there's two types of output, the ones that are shown in the UI, to put it simply, and the ones that are sent to the model.

s137
00:14:31.040 --> 00:14:42.800
Like a common to maybe understand this better, a common pattern that you see is you show the full information in the UI, and then you instruct the model with a text output

s138
00:14:42.800 --> 00:14:45.920
of what the user is seeing.

s139
00:14:45.920 --> 00:14:55.560
For instance, we return a uh this this UI card, and we can even return um nothing to the model.

s140
00:14:57.680 --> 00:15:03.800
But just say, the user is seeing his private information in the widget above.

s141
00:15:03.880 --> 00:15:13.200
So, this is a pattern that allows you to, you know, give uh allow it like uh experiences in in fields where maybe sharing data to the LLM is not possible

s142
00:15:13.200 --> 00:15:14.839
because of privacy issues.

s143
00:15:14.839 --> 00:15:23.280
In this case, you can show the UI to the user, but the model won't see the data that you display in the UI, unless you choose so.

s144
00:15:23.560 --> 00:15:30.110
There's uh another set of functionalities which I think are minor or let's say less

s145
00:15:30.110 --> 00:15:32.110
[clears throat]

s146
00:15:32.120 --> 00:15:35.080
intuitive or less advanced.

s147
00:15:35.080 --> 00:15:44.560
Uh Here we show the request display mode which basically your MCP app widget is displayed in uh in line with the tool call.

s148
00:15:44.560 --> 00:15:46.720
But it can even put the full screen.

s149
00:15:46.720 --> 00:15:54.960
So the full chat is going to be your MCP widget and uh input box is going to be overlaid on top of the widget.

s150
00:15:54.960 --> 00:15:57.360
And for instance, this is very cool for video editing.

s151
00:15:57.360 --> 00:16:09.400
You can imagine a a widget showing some uh graphical interface and uh you can chat that we improve the the what's the shown inside the widget and the model can directly stream into the widget you're looking at.

s152
00:16:09.400 --> 00:16:14.280
It can also be put in a picture-in-picture or in line which is the normal case.

s153
00:16:14.280 --> 00:16:14.651
Um

s154
00:16:14.651 --> 00:16:14.680
[clears throat]

s155
00:16:14.680 --> 00:16:21.800
there's a other primitives that allow you to open external links from the MCP widget itself.

s156
00:16:21.856 --> 00:16:22.320
[clears throat]

s157
00:16:22.320 --> 00:16:30.480
You can listen to the theme of the OS so that you know your MCP app is synchronized in theme with the host your users are using.

s158
00:16:30.480 --> 00:16:33.200
And there are many other things.

s159
00:16:36.040 --> 00:16:45.920
So I wanted to show you here a few videos of MCP apps because so far I've just been showing uh uh uh some mock-up that I created for this presentation.

s160
00:16:45.920 --> 00:16:49.480
Uh but this is for example in Cursor we're using the MCP app.

s161
00:16:49.480 --> 00:16:53.800
Uh Cursor is one of the clients uh that supports MCP apps.

s162
00:16:53.800 --> 00:17:01.839
And as you see here uh our MCP app returns the analytics of the remote MCP server app that I was uh talking to you about just before.

s163
00:17:01.839 --> 00:17:06.280
And for instance, this is very uh useful in in analytics.

s164
00:17:06.280 --> 00:17:13.760
Uh for instance, we use Pulsar MCP a lot and then the Pulsar MCP will show you a UI element with your with your analytics.

s165
00:17:13.760 --> 00:17:22.280
So that you as a human can understand what's going on, but the model itself can read those analytics and go do its job on the code you're you're writing.

s166
00:17:22.280 --> 00:17:27.560
Um on Claude, so this is the demo I was telling you about.

s167
00:17:27.560 --> 00:17:34.440
So, here we're using the Excalidraw MCP server, and here you will see the streaming functionality that I that I mentioned as before.

s168
00:17:34.440 --> 00:17:44.560
So, you can see here that Claude is first reading the some instructions that are returned as tool by the Excalidraw MCP server.

s169
00:17:44.560 --> 00:17:53.200
And uh at some point it will call the tool which is showing the canvas, and it will stream tokens into the canvas, and I think we motion it's one of the coolest

s170
00:17:53.200 --> 00:17:56.360
animation around how those tokens are shown.

s171
00:17:56.360 --> 00:18:05.960
As you see here, this is like a mermaid syntax that is sent into the tool, and the the UI updates as the tokens are streamed in.

s172
00:18:05.960 --> 00:18:09.080
There's some of the some of the coolest demos here.

s173
00:18:09.080 --> 00:18:13.520
By the way, very very useful to draw diagrams as well.

s174
00:18:13.560 --> 00:18:24.360
Um and this is again ChatGPT um uh using the Manifold uh MCP app uh showing the same analytics that I was telling you above.

s175
00:18:24.360 --> 00:18:31.560
And as you see here, the rendering is uh is is a bit better in ChatGPT uh it's better.

s176
00:18:31.640 --> 00:18:35.320
Basically, this is very similar to how it uses.

s177
00:18:35.320 --> 00:18:38.200
Maybe uh this is a good time to talk about the client support.

s178
00:18:38.200 --> 00:18:40.400
There's many clients that support MCP app.

s179
00:18:40.400 --> 00:18:49.120
Some do more, some do less uh and uh these three I think are the main uh that people are using.

s180
00:18:49.120 --> 00:19:02.160
And uh of of course, all the different versions of Claude and ChatGPT uh so both Claude Co-work, Claude Desktop support MCP app, ChatGPT and Codex support MCP app.

s181
00:19:02.160 --> 00:19:04.953
Uh and Cursor uh both in the

s182
00:19:04.953 --> 00:19:05.160
[clears throat]

s183
00:19:05.160 --> 00:19:15.040
agent mode and in the normal side chat supports MCP app, but there is uh many more that support MCP app such as VS code and and and comes as others.

s184
00:19:15.040 --> 00:19:29.880
And I think it's actually interesting to to mention here uh that another thing you can do you might be developing your MC server and uh you don't know if the host where your users are using the MC server supports or not MC [clears throat] apps.

s185
00:19:29.880 --> 00:19:42.200
What you can do is uh since we know what the client is from the metadata that is exchanged uh uh the MC app uh you can um return a UI element only for those

s186
00:19:42.200 --> 00:19:49.040
um host that actually accepts and can render those um those uh widgets.

s187
00:19:49.040 --> 00:19:59.240
And then this is not really a big deal because most uh non-MC app clients so uh MC client that don't support MC app will not will simply not show the widget.

s188
00:19:59.240 --> 00:20:14.880
But I found developing these servers many times that if you don't show the widget, you need to return a different output because um it some of the information was returning the widget but maybe you want to give it to the model if the widget is not shown.

s189
00:20:14.880 --> 00:20:28.120
Uh so this is something also MC user helps you with with some primitives that um that allow you to to know if the client uh your MC server is connected to actually supports MC apps or not.

s190
00:20:30.040 --> 00:20:36.480
Again, um a little uh idea of how you can build these MC apps with MC users.

s191
00:20:36.480 --> 00:20:40.720
We are one of the most popular SDKs to build these uh MC apps.

s192
00:20:40.720 --> 00:20:47.280
The way we design our SDKs that basically you design your MC server uh as you always did.

s193
00:20:47.280 --> 00:20:51.880
So you have your MC server constructor and then you define tools.

s194
00:20:51.880 --> 00:21:02.600
And from the tools, you can simply return widgets which are automatically registered from this widget file in the resources folder.

s195
00:21:02.600 --> 00:21:10.880
So whatever you put as a widget file in the resources folder will be registered as a UI resource that you can return from a tool.

s196
00:21:10.880 --> 00:21:20.760
And the widget um the widget file is just a React uh component uh and you can also use your existing uh UI components.

s197
00:21:20.760 --> 00:21:25.779
And uh it will be compiled into HTML and CSS.

s198
00:21:25.779 --> 00:21:26.120
[clears throat]

s199
00:21:26.120 --> 00:21:30.800
And then um returned and linked it to the tool.

s200
00:21:31.120 --> 00:21:33.640
We have a scale uh we have a template.

s201
00:21:33.640 --> 00:21:39.880
Uh you can just run NPX create MCP app and uh it will give you a template that you can serve.

s202
00:21:41.600 --> 00:21:47.280
So, let's talk about distribution and discovery, which I think uh it's uh of course a very important topic.

s203
00:21:47.280 --> 00:21:50.880
Uh maybe uh even less known than how MCP apps work.

s204
00:21:50.880 --> 00:21:59.840
I'm talking to many people and they don't know there's a store for MCP and they don't know how to submit, so I wanted to talk about a bit about this as well.

s205
00:22:01.480 --> 00:22:04.600
So, the store is like a huge new distribution channels.

s206
00:22:04.600 --> 00:22:15.080
Again, you're um bringing the three most popular clients, ChatGPT, Claude, and Cursor, which the three of them, they all support a self-serve submission process.

s207
00:22:15.080 --> 00:22:17.720
ChatGPT was one of the first supporting this.

s208
00:22:17.720 --> 00:22:24.075
Claude, uh since a couple weeks they have um self-serve submission form for team and enterprise uh accounts.

s209
00:22:24.075 --> 00:22:41.120
[clears throat] And also Cursor allows you to submit their MCP server set uh The way you submit is different for all three, but basically what happens is that you need to make sure that your MCP app is compliant.

s210
00:22:41.120 --> 00:22:49.680
MCP apps or servers can be both uh submitted in all these three stores, so you it doesn't need to return a UI your your server to be eligible for submission.

s211
00:22:49.680 --> 00:22:54.720
Um and the three processes to get your app submitted is different and they have different speed.

s212
00:22:54.720 --> 00:23:04.160
So, it's going to take maybe a bit more on on Claude uh for now uh and uh ChatGPT instead is it's up a lot the acceptance of these uh of these apps.

s213
00:23:04.160 --> 00:23:09.680
And again, the process is you link your remote MCP server.

s214
00:23:09.680 --> 00:23:11.360
They will scan the tool.

s215
00:23:11.360 --> 00:23:15.200
And they will make sure that all the tools are correctly annotated.

s216
00:23:15.200 --> 00:23:22.920
And have the correct arguments and um And once this is done, they're going to scan the the authentication as well.

s217
00:23:22.920 --> 00:23:28.720
So, if your server requires authentication, you have to declare it and you need to make sure that it works.

s218
00:23:28.720 --> 00:23:33.440
There's a few more different steps which are details for all the all the providers.

s219
00:23:33.440 --> 00:23:40.840
Uh but it's important to say that once your app is submitted, it's going to be partially manually or partially automatically tested.

s220
00:23:40.840 --> 00:23:44.240
So, you will have to provide some test cases and some test prompts.

s221
00:23:44.240 --> 00:23:49.320
And then it will be either accepted or rejected.

s222
00:23:49.320 --> 00:24:03.636
And if accepted, you're going to be able to publish it and make it available on the stores that you can find on chadigpt.com/apps on the connectors directory on uh cloud or on the

s223
00:24:03.636 --> 00:24:03.920
[clears throat]

s224
00:24:03.920 --> 00:24:06.360
the cursor directory.

s225
00:24:06.880 --> 00:24:12.600
Again, we we we did the many submissions and we we try to make this process easier.

s226
00:24:12.600 --> 00:24:21.800
So, if you want to submit your app, I think you should go to manifester.com where we vet your app to make sure that it's um ready to be submitted.

s227
00:24:21.800 --> 00:24:26.880
So, we check and we try to do all the checks that those clients will do in the submission process.

s228
00:24:26.880 --> 00:24:39.400
And also, we run we generate some of the submission artifacts that you need to submit like screenshots and test cases for you in in our cloud directory if connected to your MCP server.

s229
00:24:40.560 --> 00:24:48.832
Something very very cool about this is that once your app is in the store, not only can people find it by searching on the store, not only

s230
00:24:48.832 --> 00:24:48.840
[clears throat]

s231
00:24:48.840 --> 00:24:54.360
you can send a URL to your customers and they're going to be able to install your application in one click.

s232
00:24:54.360 --> 00:24:59.880
So, you don't have to share that ugly JSON file anymore with your MCP configuration.

s233
00:24:59.880 --> 00:25:04.320
But it's very important that dynamic discovery of MCP server is happening.

s234
00:25:04.320 --> 00:25:16.200
Today Cloud is the only client that actually does this, but for all apps in the stores, when Cloud needs is like assigned a task that doesn't have a specific tool to do,

s235
00:25:16.200 --> 00:25:22.320
it will actually search in the MCP registry for the right connector to do the task.

s236
00:25:22.320 --> 00:25:26.280
So imagine what this means for your particular product.

s237
00:25:26.280 --> 00:25:42.240
All the people There's many of course active users on those applications or more than billion active users, which will manifest an intent directly in the chat and through the intelligence of the model, the model will choose what is the best connector.

s238
00:25:42.240 --> 00:25:56.080
And if you're there, and you do your work to be the connector that is selected, this is going to be like a a huge wave of uh high intent individuals

s239
00:25:56.080 --> 00:26:04.760
that want to need your product and will find it uh dynamically and organically on those on those platforms.

s240
00:26:04.760 --> 00:26:07.120
So this is very important.

s241
00:26:07.120 --> 00:26:14.760
Cloud does this today and [clears throat] ChatGPT is expected to do this pretty soon.

s242
00:26:15.560 --> 00:26:19.640
So that was my discrete descriptive part of the talk.

s243
00:26:19.640 --> 00:26:29.040
I just want to uh uh I think it should be clear by now how important it is to be on the stores.

s244
00:26:29.040 --> 00:26:31.080
I can bring my experience.

s245
00:26:31.080 --> 00:26:34.440
Being on the store brought us a lot of traffic.

s246
00:26:34.720 --> 00:26:43.680
Personally, as a user of MCP, today I'm checking if a product has an MCP server and that's for me is like the most basic buying decision.

s247
00:26:43.680 --> 00:26:55.920
I run most of my day-to-day work on Cloud Co-work or Cloud Code because I love the the the possibility to share the context between my code base and my different connectors.

s248
00:26:55.920 --> 00:26:58.120
And this to me is so important.

s249
00:26:58.120 --> 00:27:05.080
For instance, one workflow that I that I often run is I have my Granola MCP where I have my meeting notes.

s250
00:27:05.080 --> 00:27:07.600
I have Linear where I track my tickets.

s251
00:27:07.600 --> 00:27:10.760
Of course, I'm in my code base if I'm using this from Cloud Code.

s252
00:27:10.760 --> 00:27:18.640
And I can basically pull the meeting notes with some customer feedback and feed it back in the in Linear maybe I create tickets for the rest of the team.

s253
00:27:18.640 --> 00:27:23.320
And then I have the agent that pulls the Linear ticket through the Linear MCP and just starts doing it.

s254
00:27:23.320 --> 00:27:24.920
Opens the PR.

s255
00:27:24.920 --> 00:27:29.120
And uh and uh and closes the Linear ticket.

s256
00:27:29.120 --> 00:27:35.080
And uh I mean, in an ideal world, it would even send an email back through MCP to the customer saying, "Oh, this is fixed."

s257
00:27:35.080 --> 00:27:37.240
But maybe we're not there yet.

s258
00:27:37.240 --> 00:27:39.800
Um but uh but this is definitely true.

s259
00:27:39.800 --> 00:27:47.000
And in fact, just a few days ago, Paul Graham, uh the founder of Y Combinator, said, "Uh AI apps are the new browsers."

s260
00:27:47.000 --> 00:27:53.000
And in this case, uh the AI apps are Cloud Code, Codex, Cloud Code Work.

s261
00:27:53.000 --> 00:27:55.520
And I fully agree with this.

s262
00:27:55.520 --> 00:28:02.120
If you think about it, Google Search in a way has been substituted by looking on ChatGPT.

s263
00:28:02.120 --> 00:28:09.264
So, now that we have connectors where you cannot only search, but you can also do stuff in the real world,

s264
00:28:09.264 --> 00:28:10.120
[clears throat]

s265
00:28:10.120 --> 00:28:15.280
all those all those um operations are going to be moved to the chat as well.

s266
00:28:15.280 --> 00:28:22.320
So, in a way, I think uh that if AI apps are the new browsers, the ChatGPTs are the new websites.

s267
00:28:22.320 --> 00:28:27.680
And uh as a website, they can return a UI with MCP apps.

s268
00:28:28.480 --> 00:28:32.600
So, again, uh I don't want to look at your dashboard anymore.

s269
00:28:32.600 --> 00:28:34.800
I want to use it in Cloud.

s270
00:28:34.800 --> 00:28:38.280
And if any dashboard, I want to see it in the Cloud Code application.

s271
00:28:38.280 --> 00:28:40.200
So, ship an MCP app.

s272
00:28:40.200 --> 00:28:40.920
Thank you very much.

s273
00:28:40.920 --> 00:28:46.480
I hope you enjoyed the talk and I'm uh hope there is any questions about this and super happy to help.

s274
00:28:46.480 --> 00:28:50.880
Um by now, have a very uh expert on the topic.

s275
00:28:50.880 --> 00:28:52.360
So, thank you very much.

s276
00:28:52.360 --> 00:28:54.760
Have a good one.
