What is MCP?

To define vaguely, MCP is a way for AI (like large language models) to connect and communicate with external data sources and services. It is basically a bridge that lets AI step outside its training data and interact with real-world data in real-time.

Tweet on MCP

What exactly was missing in AI before MCP?

Before MCP, AI was powerful but limited to its training set. MCP servers let AI models fetch real-time data and also take action on it.

For example, if you ask AI, “What’s the stock market price of Meta right now?” it couldn’t tell you because it’s probably stuck with data from 2021. 🥴

What does MCP add to the AI?

By now, you should already have a bit of an idea of what MCP allows an AI model to do. But if not, let me clarify with an example.

It allows AI to connect to external data sources, and be more context aware, and that is super powerful. Think of it as an upgrade that makes the AI go from “I can only tell you from what I have been taught” to “I can fetch live data, book your flights, and maybe even order pizza for you.” 🤯

Shocked GIF

Notice, it not only gives access to real-time data but also allows the AI to perform actions (make changes) to your system.

I’m not sure about you, but “Artificial Intelligence” does not feel “Artificial” to me anymore. 🤷‍♂️

If you want to learn about MCP, check out this blog post by @sunilkumrdash 👇


Setup MCP server in Cursor & Windsurf (Using Composio)

💁 Here, I will show you how you can use Composio to add MCP support in both Cursor and Windsurf using Composio’s Notion integration. Check out all available integrations here.

Add Notion MCP support in Cursor

Follow these steps to install MCP support in Cursor:

  1. Copy the SSE URL from mcp.composio.dev/notion under the Cursor section.

  2. Open Cursor settings, navigate to the MCP section, and add a new MCP server using the copied URL.

Here’s a quick demo if you need help:

That's it! You can now use Notion MCP actions directly within Cursor. 🎉

Okay, now let’s see if we can use the notion MCP integrations like fetching notion pages content within Cursor.

Here’s a quick demo:

Add Notion MCP support in Windsurf

It is fairly simple to set up MCP server in Windsurf as well. First, ensure you have Node.js installed on your machine.

  1. Generate the command from mcp.composio.dev/notion under Windsurf.

  2. Run the generated command in your terminal:

npx @composio/mcp@latest setup "" --client windsurf

If you see an output like this, you're all set:

Adding an MCP integration to Windsurf

Restart Windsurf, and you're all ready to use Notion MCP actions! 🎉

Okay, now let’s see if we can use the notion MCP integrations like fetching list of notion pages.

Here’s a quick demo:


Real-world use case testing

Now that we know how to get MCP working on both IDEs, let's do a quick test on a real-world scenario using their default models.

💁 Prompt: Create a Linear issue under a given project, change the label of the issue to “TODO,” add a sample comment under the issue, and once everything is done, message about the issue creation status on a Slack channel.

First, make sure that, similar to how we set up Notion, you do the same for Slack and Linear.

Linear and Slack MCP Integration in Cursor

Cursor just did everything correctly by triggering the correct MCP actions.

It was able to create a Linear ticket, add the comments, label the issue as I asked to “TODO,” and successfully message the issue creation status on the Slack channel all perfectly. ✅

Linear and Slack Integration in Windsurf

Ugh, really? Windsurf ran into quite a few issues and failed to execute some tools completely, but it did get the overall job done. It was definitely a bit slow and ran the same tool twice, which led to two different issues with no label.

Definitely, not the very best experience and feels a bit more amateur than the Cursor MCP support. 🫤


Comparison

Cursor and Windsurf really got done with what I asked. Cursor was perfect on that, while Windsurf somehow got it working but mistakenly created two different issues on the same topic and couldn’t label them correctly.

Cursor was able to call LINEAR_LIST_LINEAR_STATES MCP actions to fetch the labels for the issue labeled “TODO” correctly.

MCP tool call without state_id Windsurf IDE

And then created the issue with the proper state_id added.

MCP tool call Cursor IDE

Windsurf didn’t even call that action to get the state_id for “TODO” and simply created the issue with no state_id which made the issue have the default label.

MCP tool call Windsurf IDE

It’s kind of fair to say that Cursor ✅ was a bit better than Windsurf in this quick test.

Cursor MCP better than Windsurf?

We can simply not tell which one is better than the other just yet. The whole MCP system is still in the beginner stage and is definitely going to be more robust in the coming future. Probably then we can make a final comparison.

Between these two IDEs' MCP features, for now, it’s up to you to decide which one you’d like to go for. 🤷‍♂️


Conclusion

You can see the power that comes with this, right? 😵 This was just a quick test with just two simple applications in one quick example.

Imagine an integration with GitHub and Linear that helps with GH issues, makes AI perform code edits, runs the tests, and, if they pass, opens a PR. Once approved by the maintainers, it gets merged. The possibilities are truly infinite with this thing.

Check out this tweet thread to get some ideas on what to build with MCP. 👇

If learned to use this correctly, this can be a thing you never knew you needed so badly. If you’d like to see something similar done using MCP, do let me know in the comments! ✌️