Skip to content

Add access_mcp_resource Tool to Bob #12269

@sajanlukose

Description

@sajanlukose

Problem (one or two sentences)

Add native support for accessing MCP (Model Context Protocol) resources through a new access_mcp_resource tool, enabling direct URI-based resource access from connected MCP servers.

Context (who is affected and when)

all mcp users

Desired behavior (conceptual, not technical)

Adding access_mcp_resource capability to Bob will:

  • Complete MCP protocol support
  • Improve user experience with direct URI-based access
  • Reduce development overhead for MCP server creators
  • Align Bob with MCP specification standards

Constraints / preferences (optional)

No response

Request checklist

  • I've searched existing Issues and Discussions for duplicates
  • This describes a specific problem with clear context and impact

Roo Code Task Links (optional)

No response

Acceptance criteria (optional)

No response

Proposed approach (optional)

Current State

Bob currently supports MCP servers through the use_mcp_tool tool, which allows calling MCP server tools. However, MCP servers can provide two types of capabilities:

  1. Tools - Executable functions with parameters
  2. Resources - URI-based data endpoints

Currently, Bob only supports accessing MCP tools, not resources.

The Problem

MCP servers like orbitcity define resource templates such as:

  • orbitcity://event/details/{identifier}
  • orbitcity://system/history/{machine_type}/{serial}
  • orbitcity://ppm/metrics/{identifier}

These resources cannot be accessed directly. Users must rely on wrapper tools (like get_event_details) when available, but this:

  • Creates redundancy (tools that just wrap resources)
  • Limits flexibility (can't access resources without corresponding tools)
  • Doesn't fully leverage the MCP specification

Proposed Solution

Add access_mcp_resource Tool

Implement a new system-level tool that enables direct access to MCP resources:

<access_mcp_resource>
<server_name>orbitcity</server_name>
<uri>orbitcity://event/details/2211112</uri>
</access_mcp_resource>

Tool Specification

Description: Request to access a resource provided by a connected MCP server. Resources are URI-based data endpoints that provide structured information without executing actions.

Parameters:

  • server_name: (required) The name of the MCP server providing the resource
  • uri: (required) The full resource URI to access (e.g., "orbitcity://event/details/2211112")

Usage:

<access_mcp_resource>
<server_name>server name here</server_name>
<uri>resource URI here</uri>
</access_mcp_resource>

Example:

<access_mcp_resource>
<server_name>orbitcity</server_name>
<uri>orbitcity://event/details/2211112?id_type=event_id</uri>
</access_mcp_resource>

Implementation Details

Core Functionality

  1. URI Parsing

    • Parse the resource URI to extract server protocol, path, and query parameters
    • Validate URI format against MCP specification
  2. Server Communication

    • Route request to the appropriate MCP server based on URI scheme
    • Handle both stdio and SSE-based MCP servers
    • Support query parameters in URIs
  3. Response Handling

    • Return resource data in appropriate format (JSON, text, binary)
    • Handle errors gracefully (resource not found, server unavailable, etc.)
    • Provide clear error messages to the user
  4. Resource Discovery

    • List available resources from connected servers
    • Support resource template expansion
    • Validate URIs against server's resource templates

Technical Architecture

User Request
    ↓
access_mcp_resource Tool
    ↓
URI Parser & Validator
    ↓
MCP Server Router
    ↓
Resource Endpoint Handler
    ↓
Response Formatter
    ↓
Return to User

Benefits

For Users

  • Direct Access: Access any MCP resource without needing wrapper tools
  • Flexibility: Use resource URIs directly as documented by MCP servers
  • Consistency: Unified approach to accessing MCP capabilities

For MCP Server Developers

  • Simplified Development: No need to create tool wrappers for every resource
  • Better Documentation: Resources can be documented with URI templates
  • Standards Compliance: Full support for MCP specification

For Bob

  • Feature Completeness: Full MCP protocol support
  • Reduced Redundancy: Eliminate need for tool wrappers around resources
  • Better Integration: Seamless integration with MCP ecosystem

Use Cases

1. Event Details Retrieval

<access_mcp_resource>
<server_name>orbitcity</server_name>
<uri>orbitcity://event/details/2211112</uri>
</access_mcp_resource>

2. System History Access

<access_mcp_resource>
<server_name>orbitcity</server_name>
<uri>orbitcity://system/history/9175/CB5E8?brand=Z&model=ME1</uri>
</access_mcp_resource>

3. PPM Metrics

<access_mcp_resource>
<server_name>orbitcity</server_name>
<uri>orbitcity://ppm/metrics/02ED265</uri>
</access_mcp_resource>

4. Filtered Event Lists

<access_mcp_resource>
<server_name>orbitcity</server_name>
<uri>orbitcity://repair-events/list/all?brand=Z&type=8561&per_from=2026-04-01</uri>
</access_mcp_resource>

Comparison: Tools vs Resources

Current Approach (Tools Only)

<use_mcp_tool>
<server_name>orbitcity</server_name>
<tool_name>get_event_details</tool_name>
<arguments>
{
  "event_id": "2211112"
}
</arguments>
</use_mcp_tool>

Limitations:

  • Requires tool wrapper for each resource
  • Less intuitive (need to know tool name and parameter structure)
  • Doesn't support all resource features (like URI query parameters)

Proposed Approach (Resources)

<access_mcp_resource>
<server_name>orbitcity</server_name>
<uri>orbitcity://event/details/2211112</uri>
</access_mcp_resource>

Benefits:

  • Direct, URI-based access
  • More intuitive (follows web standards)
  • Supports full URI features (paths, query params, fragments)
  • No wrapper tools needed

Implementation Phases

Phase 1: Core Implementation

  • Implement URI parser and validator
  • Add MCP resource protocol handler
  • Create access_mcp_resource tool
  • Add error handling and validation

Phase 2: Enhanced Features

  • Resource discovery and listing
  • Template expansion support
  • Caching for frequently accessed resources
  • Resource metadata retrieval

Phase 3: Developer Experience

  • Auto-completion for resource URIs
  • Resource documentation in tool descriptions
  • Resource browsing UI
  • Testing utilities for MCP resources

Testing Strategy

Unit Tests

  • URI parsing and validation
  • Server routing logic
  • Error handling scenarios
  • Response formatting

Integration Tests

  • End-to-end resource access
  • Multiple MCP server types (stdio, SSE)
  • Various resource types (JSON, text, binary)
  • Error scenarios (server down, invalid URI, etc.)

User Acceptance Tests

  • Real-world use cases with orbitcity server
  • Performance benchmarks
  • User experience validation

Documentation Requirements

User Documentation

  • How to use access_mcp_resource tool
  • URI format and syntax
  • Examples for common use cases
  • Troubleshooting guide

Developer Documentation

  • MCP resource specification
  • How to add resource support to MCP servers
  • Best practices for resource URIs
  • API reference

Success Metrics

  • All MCP resources accessible via URI
  • Performance comparable to tool-based access
  • Positive user feedback
  • Reduced need for wrapper tools
  • Increased MCP server adoption

Related Standards

Questions for Discussion

  1. Should we support resource subscriptions (for real-time updates)?
  2. How should we handle large resources (streaming, pagination)?
  3. Should we cache resources, and if so, what's the caching strategy?
  4. How do we handle authentication for protected resources?
  5. Should we support resource mutations (POST, PUT, DELETE)?

Conclusion

Adding access_mcp_resource capability to Bob will:

  • Complete MCP protocol support
  • Improve user experience with direct URI-based access
  • Reduce development overhead for MCP server creators
  • Align Bob with MCP specification standards

This feature is essential for fully leveraging the MCP ecosystem and providing users with flexible, standards-compliant access to external data sources.


Priority: High
Effort: Medium
Impact: High

Requested by: User experiencing limitations with orbitcity MCP server
Date: 2026-05-02

Trade-offs / risks (optional)

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    EnhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions