I don't see the need for MCP for most use cases where it's currently used.

You can get better results with skills SKILL.md + linked .md files with curl commands inside... Just plain HTTP(S). I say this as someone who often prefers the stateful WebSocket protocol for data transport. HTTP stateless request-response model is a natural fit for LLMs.

HTTP is an excellent protocol for this and curl is an excellent, very popular command on which all major coding models are well trained. LLMs are insanely good with curl. Not to mention that it's pre-installed on all major operating systems. The curl command has become the protocol.

Then there is the fact that most tools require some documentation to go along with it anyway (to be used correctly). MCP mostly adds unnecessary work for a lot of cases.

It has its place in backend code environments I guess... But most of these use cases are thin applications trying to be a middleman between the user and the AI. I think ultimately, the AI will be at the front and tools at the back. Hence, curl.

Wedging a platform between the user and AI creates unnecessary constraints and reduces interoperability and integration opportunities.

The target audience isn't always people who know what curl or a python script is. It's more like an easy to install plugin you can serve up, which tells Claude which endpoints to use via a user asking a generic question (users who dont really understand how anything works behind the scenes).

It's also different than just an API because they have purpose built "tools" which have relevant names (search_campaign vs /api/v3/campaigns?q=xyz), descriptions, annotations (ie, ask used to confirm in ChatGPT before we run this DELETE).

Skills don't really accomplish that well and are more unreliable when your target audience is a B2B customer or person who forgot they installed a Perplexity MCP when Claude will automatically know to use that without invoking a skill.

MCP is good for isolation / security domain. I don’t what my business analysts to pull down a read only DB credentials and make my DB network accessible to them; but I can proxy into a private DB through MCP and guard the MCP with oauth (or tailscale is what I’m using now)

Arbitrary OAuth built into the spec across the board is extremely useful. It prevents the many, many friction points that come from needing an agent to separately understand the authentication for many different services, or to even know that authentication is happening at all (it happens entirely at the harness level).