MCP Client Feature Support
Note that MCP is evolving rapidly, and some features are still being implemented across clients.
Summary
The Model Context Protocol ecosystem is maturing quickly, but feature support varies significantly across clients. Claude Desktop and Nanobot currently offer the most comprehensive feature sets, while other clients like Cline, Cursor, and Windsurf focus primarily on tools and resources. Notably, Sampling and Elicitations remain largely unimplemented across most clients, and OAuth 2 authentication faces significant adoption challenges due to Dynamic Client Registration (DCR) requirements.
Feature Support Matrix
| Client | Tools | Resources (Templates/Lists/Completions) | Prompts (w/ Resources/Completions) | Elicitations | Sampling | Progress Updates | Changes/Subscriptions | MCP-UI (HTML/Remote DOM/iframe) | OAuth 2 |
|---|---|---|---|---|---|---|---|---|---|
| Claude Desktop | ✅ Full | ✅ / ✅ / ⚠️ | ✅ Manual / ⚠️ | ❌ Planned | ❌ Not Yet | ✅ Yes | ⚠️ Limited | ⚠️ Partial | ❌ API Keys Only |
| Goose | ✅ Full | ✅ / ✅ / ⚠️ | ✅ Yes / ⚠️ | ❌ Not Yet | ⚠️ Unknown | ⚠️ Unknown | ⚠️ Unknown | ✅ Growing | ⚠️ Unknown |
| Nanobot | ✅ Full | ✅ / ✅ / ✅ | ✅ Full / ✅ | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ First-class | ⚠️ Configurable |
| Postman | ✅ Full | ✅ / ⚠️ / ⚠️ | ✅ Yes / ⚠️ | ❌ Not Yet | ⚠️ Testing Only | ⚠️ Testing | ❌ Not Applicable | ❌ Not Applicable | ✅ Testing/Dev |
| MCP Inspector | ✅ Test | ✅ / ✅ / ⚠️ | ✅ Test / ⚠️ | ✅ v0.16.2+ | ⚠️ Testing Only | ⚠️ Testing | ⚠️ Testing | ❌ Not Applicable | ❌ Not Applicable |
| Cline (VS Code) | ✅ Full | ✅ / ✅ / ⚠️ | ⚠️ Limited / ❌ | ❌ Requested | ❌ Requested | ⚠️ Unknown | ✅ Tool/Resource | ❌ No | ⚠️ Via Servers |
| Cursor IDE | ✅ Full | ✅ / ✅ / ⚠️ | ⚠️ Limited / ❌ | ❌ Not Yet | ❌ Not Yet | ⚠️ Unknown | ⚠️ Unknown | ❌ No | ⚠️ Via Servers |
| Windsurf | ✅ Full | ✅ / ✅ / ⚠️ | ⚠️ Limited / ❌ | ❌ Not Yet | ❌ Not Yet | ⚠️ Unknown | ⚠️ Unknown | ❌ No | ⚠️ Via Servers |
| Claude.ai | ✅ Remote | ✅ / ⚠️ / ❌ | ✅ Remote / ❌ | ❌ Planned | ❌ Not Yet | ⚠️ Unknown | ⚠️ Limited | ⚠️ Unknown | ✅ Remote Only |
Legend:
- ✅ Full/Comprehensive support
- ⚠️ Partial/Limited/In Development
- ❌ Not supported/Not yet implemented
- Unknown: No clear documentation found
Detailed Feature Analysis
1. Tools (Including Embedded Resources, Linked Resources, Annotations, Structured Output)
Status: Widely supported across all major clients
Most MCP clients provide full support for tools, which are specific actions that servers expose to clients, functioning like built-in functions or APIs that an LLM can call during conversations.
Key Capabilities by Client:
- Claude Desktop: Provides comprehensive support for MCP tools with full support for resources, allowing attachment of local files and data
- Cline: Can create and add tools through natural language (for example, "add a tool that searches the web") and share custom MCP servers with others
- Postman: Enables users to create MCP requests to interact with MCP servers and use MCP requests to test and evaluate different servers, with tools, prompts, and resources auto-loaded from the server
Embedded/Linked Resources & Annotations: These advanced tool features are specified in the MCP protocol but implementation details vary. Most clients support basic tool execution but may not fully implement the more advanced resource embedding or annotation capabilities.
Structured Output: Tools can return structured results by default if return type annotations are compatible. Implementation varies by server SDK rather than client.
2. Resources (Including Resource Templates, Template Lists, Template Completions)
Status: Core functionality broadly supported; advanced features partially implemented
Resources provide a way to give LLMs access to data including database records, file contents, API responses, images, and more, similar to making an HTTP GET request.
Resource Templates: Allow you to define dynamic resources using URI patterns, letting you create resources whose URIs and content can be generated based on parameters.
Implementation by Client:
- Claude Desktop: Resources and prompts require manual addition by clicking the plus sign and selecting MCP Server, then Prompt/References - they are not automatically triggered like tools
- Nanobot: Comprehensive support for all resource types as it was built specifically for the MCP ecosystem
- IDE Clients (Cline/Cursor/Windsurf): Support basic resources and templates, but template completions may be limited
Template Lists & Completions: These allow clients to autocomplete resource URIs dynamically. Support is patchy - more mature clients like Claude Desktop and Nanobot support these, while IDE extensions have varying levels of implementation.
3. Prompts (Including Resources in Messages, Prompt Completions)
Status: Supported but often requires manual activation
Prompts in MCP are structured templates that servers provide to standardize interactions with language models, defining reusable message sequences and workflows that help guide LLM behavior.
Key Challenges:
- In Claude Desktop, prompts need to be added manually by clicking the plus sign and selecting MCP Server then Prompt/References
- When using MCP prompts with Claude Desktop, users send a custom prompt along with a message using the plus menu, and if the prompt accepts an argument, they will be prompted for it when adding
Prompt Completions: Limited support across clients. This feature allows autocomplete of prompt names/parameters but is not widely implemented yet.
4. Elicitations
Status: Emerging feature, minimal client support
Elicitations is an incoming MCP feature that enables MCP servers to request additional information from users through the client, for things like confirmation of critical actions, contextual information gathering, and key decisions.
Current Support:
- MCP Inspector: Added Elicitation support in release 0.16.2
- Nanobot: Nanobot was written from the ground up to support the MCP ecosystem and fully leverages MCP features like tools, prompts, sampling, and elicitation
- Claude Desktop: Planned but not yet implemented
- Other Clients: Cline has an active discussion requesting support for elicitation, but most clients don't support it yet
5. Sampling
Status: Limited implementation, significant potential
Sampling allows an MCP client to run model completions on behalf of a server, enabling the server to offload AI reasoning without directly integrating or paying for a model API.
Architecture: The server initiates a sampling request to the client, the client asks the user to approve or edit the request, runs the task through the model (like Claude), and the user reviews the AI's response before it's sent back to the server.
Current Support:
- Claude Desktop: The Claude desktop app still does not support sampling
- Nanobot: Full support as a core feature
- MCP Inspector: Testing capabilities only
- Most IDE Clients: Not yet implemented, though there are requests for this feature
Why It Matters: Sampling is particularly powerful for agentic workflows where a tool on the server needs model-generated output to complete its task, without every MCP server needing its own AI model connection.
6. Progress Updates for Long Running Tasks
Status: Supported in server SDKs, client implementation varies
Progress updates allow tools to report progress with ctx.report_progress, sending notifications with progress, total, and message parameters.
Implementation:
- Claude Desktop: Supports progress notifications
- Spring AI MCP Client: The @McpProgress annotation handles progress notifications for long-running operations, allowing handlers to track progress for specific servers
- Nanobot: Full support
- IDE Clients: Implementation varies and is not well-documented
7. Changes & List Changes (Tools, Resources, Prompts, Subscriptions)
Status: Partially implemented, depends on transport mechanism
When a server's tools, resources, or prompts change, clients can automatically receive notifications and update internal state.
Subscription Support:
- Spring AI provides @McpToolListChanged and @McpResourceListChanged annotations to handle notifications when the server's tool or resource lists change
- Nanobot: Full support for change notifications
- Claude Desktop: Limited support for change detection
- Cline: Supports tools and resources but change notification support is unclear
Note: Effective change notifications require stateful connections, which work better with the newer Streamable HTTP transport rather than stdio.
8. MCP-UI (HTML, Remote DOM, iframes)
Status: Emerging standard with growing but inconsistent support
MCP-UI extends the Model Context Protocol to enable AI agents to return fully interactive UI components, supporting three delivery methods: inline HTML embedded via srcDoc in sandboxed iframes, remote resources loaded in sandboxed iframes, and Remote DOM using Shopify's remote-dom library.
Current Support:
- Nanobot: Has rich and deep support for MCP-UI as first-class functionality, with the @mcp-ui/client component automatically detecting resource type and rendering appropriate components
- Goose: Starting from version 1.3.0, users can add MCP-UI as an extension, with support still in early days and evolving
- Claude Desktop: Partial support, details limited
- IDE Clients (Cline/Cursor/Windsurf): No current support
UIResourceRenderer Component: This is a React component from @mcp-ui/client that automatically detects the resource's mimeType and contentType to determine the appropriate rendering method, providing a unified API for all resource types. It's not a client itself but a library for building MCP-UI clients.
Security: All content types execute within sandboxed iframe environments to ensure host application security while maintaining interactive capabilities.
9. OAuth 2 Authentication
Status: Specification exists but implementation is challenging
MCP auth implementations must implement OAuth 2.1 with appropriate security measures for both confidential and public clients, and should support the OAuth 2.0 Dynamic Client Registration Protocol.
Critical Challenge: MCP clients have no standardized way to handle client IDs or client secrets and need to register themselves dynamically as OAuth clients, but most OAuth providers (Google, GitHub, Microsoft Azure AD) do not support Dynamic Client Registration.
Current Reality:
- Many companies claiming to support "OAuth" for their MCP servers are actually doing something much simpler, with users obtaining personal access tokens separately and passing them directly in headers
- Remote MCP Servers: Claude.ai's integration implementation uses the old deprecated SSE transport mechanism and the 2024-03-26 version of the auth spec, which may delay ecosystem standardization
- Cloudflare: Provides an OAuth Provider Library that implements the provider side of OAuth 2.1, allowing servers to handle authorization themselves or integrate with third-party providers like Auth0, Stytch, or WorkOS
- Local Servers: Typically use API keys or environment variables rather than OAuth
Workaround: The community has developed OAuth proxies as a workaround since most OAuth providers don't support Dynamic Client Registration, with companies using the Cloudflare Workers proxy pattern or building similar solutions.
Client-Specific Deep Dives
Claude Desktop
Strengths:
- Comprehensive tools and resources support
- Desktop Extensions (.mcpb files) make installation simple
- Growing ecosystem with official Anthropic backing
Limitations:
- Does not support sampling
- Prompts and resources require manual addition rather than automatic discovery
- Local servers use API keys/environment variables, not OAuth
Nanobot
Strengths:
- Built from the ground up to support the MCP ecosystem with full support for tools, prompts, sampling, elicitation and more, plus first-class MCP-UI support
- Production-ready with PostgreSQL backend
- Can be deployed anywhere and embedded in applications
Target Audience: Developers building custom MCP-powered agents and applications
Cline (VS Code Extension)
Strengths:
- Open-source with full control over API keys and costs, supporting multiple AI providers
- Built-in MCP marketplace for easy server installation
- Autonomous coding agent capable of creating/editing files, running commands, with MCP features supported including resources and tools
Limitations:
- Sampling and elicitation features have been requested but are not yet implemented
- No MCP-UI support
- Prompts support is limited
Cursor & Windsurf IDEs
Strengths:
- Polished AI coding experiences
- MCP support for tools and resources
- Both support MCP server connections via SSE and stdio transports
Limitations:
- No MCP-UI support
- Limited prompt support
- No sampling or elicitations
- Windsurf has had some issues with MCP tool execution compared to Cursor in testing
Postman
Use Case: Postman's MCP support is focused on testing and evaluation, allowing developers to create MCP requests to experiment with, test, and evaluate different MCP servers before exporting configurations to production clients
Strengths:
- Tools, prompts, and resources are auto-loaded from servers and displayed in a structured interface, with the ability to paste MCP config JSON to generate working requests instantly
- Can generate MCP servers from 100,000+ public APIs
- Good for development and debugging
Limitations: Not intended as a production MCP client for end users
MCP Inspector
Purpose: An interactive developer tool for testing and debugging MCP servers
Capabilities:
- Allows selecting transport for connecting to servers, customizing command-line arguments and environment for local servers
- Added elicitation support in version 0.16.2
- Essential for MCP server development
Note: This is a development tool, not a production client
Recommendations for Development Teams
For End Users / Consumer Applications:
- Claude Desktop remains the most mature and supported option for general use
- Nanobot is excellent if you need comprehensive MCP feature support including sampling and MCP-UI
For Developer Tools:
- Cline offers the best open-source VS Code experience with strong community support
- Cursor provides a more polished experience for teams willing to pay monthly fees
- Postman is invaluable for MCP server testing and development
OAuth Considerations:
If OAuth is critical for your use case, be prepared for significant implementation complexity due to the Dynamic Client Registration requirement mismatch with existing OAuth infrastructure. Consider using API keys for local servers and OAuth proxies (like Cloudflare Workers) for remote servers.
Future Outlook
The MCP ecosystem is evolving rapidly:
- Elicitations are coming soon to more clients, enabling better user confirmation flows
- Sampling adoption is growing slowly but could unlock powerful agentic capabilities
- MCP-UI support is expanding, with more clients expected to implement interactive components
- OAuth improvements are being incorporated into the specification, with changes from discussions being added to newer versions
- Streamable HTTP transport is gradually replacing SSE, enabling better stateful features
For developers planning MCP integrations, I recommend starting with tools and resources (widely supported), being cautious about depending on sampling or elicitations (limited support), and using API keys for authentication unless you have dedicated infrastructure for OAuth proxy patterns.
Building MCP servers that integrate your systems with AI is what I do. If you need to make your internal services accessible to Claude or other AI tools through the Model Context Protocol, let's talk about what's actually feasible given current client support. Get in touch to discuss your requirements.