Skip to content

Conversation

@avrabe
Copy link
Contributor

@avrabe avrabe commented Dec 6, 2025

Summary

Fixed a bug where the mcp_resource macro always converted URI template parameters to String, regardless of the method's actual parameter type.

Before: Resource methods with non-String parameters (like u64, i32, f64, bool) would fail to compile because the macro generated code that passed String values.

After: The macro now properly parses URI parameters to match the method's parameter types using .parse().

Changes

  • Added method_param_types field to ResourceInfo struct to track parameter types
  • Generate proper .parse() calls for non-String types with error handling
  • String parameters still use direct .to_string() for efficiency

Test Plan

  • Added 12 comprehensive edge case tests covering:
    • Multiple URI parameters
    • Non-String types (u32, u64, i64, f64, bool)
    • Mixed String and non-String parameters
    • Static resources (no parameters)
    • Complex return types
    • Async resources
    • Mixed tools and resources
    • Custom error types
  • All existing macro tests pass
  • resources-demo example builds successfully
  • Full workspace compiles

Previously, all URI template parameters were converted to String regardless
of the method's actual parameter type, causing type mismatches for methods
expecting integers, floats, booleans, etc.

Changes:
- Added method_param_types field to ResourceInfo struct
- Generate proper .parse() calls for non-String types with error handling
- String parameters still use direct .to_string() for efficiency

Added comprehensive edge case tests covering:
- Multiple URI parameters
- Non-String types (u32, u64, i64, f64, bool)
- Mixed String and non-String parameters
- Static resources (no parameters)
- Complex return types
- Async resources
- Mixed tools and resources
- Custom error types
@github-actions
Copy link

github-actions bot commented Dec 6, 2025

Code Coverage Report 📊

Local Coverage: 23.48%
Validation: Handled by Codecov

Note: Coverage validation is now performed by Codecov to ensure consistency across all platforms.

Coverage Details
Filename                                                  Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
integration-tests/src/auth_server_integration.rs              392                63    83.93%          26                 9    65.38%         291                72    75.26%           0                 0         -
integration-tests/src/cli_server_integration.rs               400                32    92.00%          35                 5    85.71%         357                23    93.56%           0                 0         -
integration-tests/src/end_to_end_scenarios.rs                 922               176    80.91%          40                 9    77.50%         638                94    85.27%           0                 0         -
integration-tests/src/lib.rs                                   22                12    45.45%           5                 2    60.00%          44                17    61.36%           0                 0         -
integration-tests/src/monitoring_integration.rs               440                56    87.27%          28                 6    78.57%         375                75    80.00%           0                 0         -
integration-tests/src/transport_server_integration.rs         448               117    73.88%          31                11    64.52%         385               144    62.60%           0                 0         -
mcp-auth/src/audit.rs                                         390               262    32.82%          28                17    39.29%         276               177    35.87%           0                 0         -
mcp-auth/src/config.rs                                         48                41    14.58%          11                10     9.09%          75                68     9.33%           0                 0         -
mcp-auth/src/crypto/encryption.rs                              89                89     0.00%           9                 9     0.00%          51                51     0.00%           0                 0         -
mcp-auth/src/crypto/hashing.rs                                 98                98     0.00%          10                10     0.00%          53                53     0.00%           0                 0         -
mcp-auth/src/crypto/keys.rs                                   115               115     0.00%           8                 8     0.00%          78                78     0.00%           0                 0         -
mcp-auth/src/crypto/mod.rs                                     15                15     0.00%           2                 2     0.00%          12                12     0.00%           0                 0         -
mcp-auth/src/jwt.rs                                           321               284    11.53%          29                27     6.90%         255               226    11.37%           0                 0         -
mcp-auth/src/lib.rs                                            18                15    16.67%           6                 5    16.67%          16                13    18.75%           0                 0         -
mcp-auth/src/manager.rs                                      1258              1116    11.29%         117               101    13.68%         938               794    15.35%           0                 0         -
mcp-auth/src/middleware/mcp_auth.rs                           235               235     0.00%          24                24     0.00%         206               206     0.00%           0                 0         -
mcp-auth/src/middleware/session_middleware.rs                 430               430     0.00%          41                41     0.00%         357               357     0.00%           0                 0         -
mcp-auth/src/models.rs                                        195               195     0.00%          19                19     0.00%         166               166     0.00%           0                 0         -
mcp-auth/src/oauth/authorize.rs                               159               159     0.00%          20                20     0.00%         232               232     0.00%           0                 0         -
mcp-auth/src/oauth/bearer.rs                                  159               159     0.00%          16                16     0.00%         111               111     0.00%           0                 0         -
mcp-auth/src/oauth/metadata.rs                                 28                28     0.00%           3                 3     0.00%          18                18     0.00%           0                 0         -
mcp-auth/src/oauth/mod.rs                                      25                25     0.00%           3                 3     0.00%          20                20     0.00%           0                 0         -
mcp-auth/src/oauth/models.rs                                   30                30     0.00%           6                 6     0.00%          42                42     0.00%           0                 0         -
mcp-auth/src/oauth/pkce.rs                                     45                45     0.00%           5                 5     0.00%          27                27     0.00%           0                 0         -
mcp-auth/src/oauth/registration.rs                            105               105     0.00%           7                 7     0.00%         106               106     0.00%           0                 0         -
mcp-auth/src/oauth/resource.rs                                 19                19     0.00%           3                 3     0.00%          13                13     0.00%           0                 0         -
mcp-auth/src/oauth/storage.rs                                 124               124     0.00%          17                17     0.00%          81                81     0.00%           0                 0         -
mcp-auth/src/oauth/token.rs                                   229               229     0.00%          24                24     0.00%         280               280     0.00%           0                 0         -
mcp-auth/src/permissions/mcp_permissions.rs                   419               419     0.00%          33                33     0.00%         319               319     0.00%           0                 0         -
mcp-auth/src/security/request_security.rs                     702               702     0.00%          49                49     0.00%         615               615     0.00%           0                 0         -
mcp-auth/src/session/session_manager.rs                       457               457     0.00%          50                50     0.00%         353               353     0.00%           0                 0         -
mcp-auth/src/storage.rs                                       697               680     2.44%          50                46     8.00%         412               394     4.37%           0                 0         -
mcp-auth/src/transport/auth_extractors.rs                     155               155     0.00%          27                27     0.00%         137               137     0.00%           0                 0         -
mcp-auth/src/transport/http_auth.rs                           303               303     0.00%          20                20     0.00%         216               216     0.00%           0                 0         -
mcp-auth/src/transport/stdio_auth.rs                          268               268     0.00%          22                22     0.00%         195               195     0.00%           0                 0         -
mcp-auth/src/transport/websocket_auth.rs                      351               351     0.00%          23                23     0.00%         258               258     0.00%           0                 0         -
mcp-auth/src/validation.rs                                    144               144     0.00%          13                13     0.00%          95                95     0.00%           0                 0         -
mcp-logging/src/aggregation.rs                                311               311     0.00%          27                27     0.00%         228               228     0.00%           0                 0         -
mcp-logging/src/alerting.rs                                   552               344    37.68%          39                17    56.41%         419               226    46.06%           0                 0         -
mcp-logging/src/correlation.rs                                415               415     0.00%          34                34     0.00%         299               299     0.00%           0                 0         -
mcp-logging/src/dashboard.rs                                  391               197    49.62%          21                15    28.57%         394               182    53.81%           0                 0         -
mcp-logging/src/metrics.rs                                    306               127    58.50%          36                19    47.22%         329               123    62.61%           0                 0         -
mcp-logging/src/persistence.rs                                360               360     0.00%          26                26     0.00%         202               202     0.00%           0                 0         -
mcp-logging/src/profiling.rs                                  502               496     1.20%          37                36     2.70%         398               354    11.06%           0                 0         -
mcp-logging/src/sanitization.rs                               268               265     1.12%          22                21     4.55%         181               173     4.42%           0                 0         -
mcp-logging/src/structured.rs                                 258               255     1.16%          24                23     4.17%         230               227     1.30%           0                 0         -
mcp-logging/src/telemetry.rs                                   75                34    54.67%          12                 5    58.33%          78                24    69.23%           0                 0         -
mcp-protocol/src/error.rs                                     193               153    20.73%          27                18    33.33%         151               117    22.52%           0                 0         -
mcp-protocol/src/errors.rs                                     83                83     0.00%          12                12     0.00%          40                40     0.00%           0                 0         -
mcp-protocol/src/lib.rs                                        12                12     0.00%           2                 2     0.00%          11                11     0.00%           0                 0         -
mcp-protocol/src/model.rs                                     352               342     2.84%          57                55     3.51%         386               379     1.81%           0                 0         -
mcp-protocol/src/validation.rs                                238               238     0.00%          25                25     0.00%         176               176     0.00%           0                 0         -
mcp-security/src/config.rs                                      4                 0   100.00%           1                 0   100.00%           9                 0   100.00%           0                 0         -
mcp-security/src/lib.rs                                         3                 0   100.00%           1                 0   100.00%           3                 0   100.00%           0                 0         -
mcp-security/src/middleware.rs                                 18                 3    83.33%           3                 0   100.00%          25                 3    88.00%           0                 0         -
mcp-security/src/validation.rs                                 10                10     0.00%           1                 1     0.00%          11                11     0.00%           0                 0         -
mcp-server/src/alerting_endpoint.rs                           117               117     0.00%          15                15     0.00%         110               110     0.00%           0                 0         -
mcp-server/src/backend.rs                                     114                99    13.16%          26                22    15.38%          99                86    13.13%           0                 0         -
mcp-server/src/builder_trait.rs                                44                44     0.00%           3                 3     0.00%          37                37     0.00%           0                 0         -
mcp-server/src/cli_helpers.rs                                  93                80    13.98%          17                14    17.65%          82                73    10.98%           0                 0         -
mcp-server/src/common_backend.rs                               59                59     0.00%          11                11     0.00%          82                82     0.00%           0                 0         -
mcp-server/src/context.rs                                      55                14    74.55%          10                 3    70.00%          46                16    65.22%           0                 0         -
mcp-server/src/dashboard_endpoint.rs                          104               104     0.00%          12                12     0.00%          79                79     0.00%           0                 0         -
mcp-server/src/handler.rs                                     344               233    32.27%          57                33    42.11%         248               151    39.11%           0                 0         -
mcp-server/src/health_endpoint.rs                              83                83     0.00%           5                 5     0.00%          91                91     0.00%           0                 0         -
mcp-server/src/metrics_endpoint.rs                            133               133     0.00%           7                 7     0.00%          86                86     0.00%           0                 0         -
mcp-server/src/middleware.rs                                  128                33    74.22%          13                 5    61.54%         104                17    83.65%           0                 0         -
mcp-server/src/observability/collector.rs                     179                78    56.42%          19                 8    57.89%         133                52    60.90%           0                 0         -
mcp-server/src/observability/config.rs                          3                 0   100.00%           1                 0   100.00%           8                 0   100.00%           0                 0         -
mcp-server/src/observability/metrics.rs                         3                 3     0.00%           1                 1     0.00%          11                11     0.00%           0                 0         -
mcp-server/src/observability/mod.rs                             3                 0   100.00%           1                 0   100.00%           3                 0   100.00%           0                 0         -
mcp-server/src/server.rs                                      330               111    66.36%          38                19    50.00%         232                77    66.81%           0                 0         -
mcp-transport/src/batch.rs                                    195               195     0.00%          14                14     0.00%         128               128     0.00%           0                 0         -
mcp-transport/src/config.rs                                    15                12    20.00%           5                 4    20.00%          15                12    20.00%           0                 0         -
mcp-transport/src/http.rs                                     651               634     2.61%          39                36     7.69%         438               408     6.85%           0                 0         -
mcp-transport/src/lib.rs                                       13                 3    76.92%           1                 0   100.00%          12                 3    75.00%           0                 0         -
mcp-transport/src/stdio.rs                                    233               186    20.17%          17                12    29.41%         162               119    26.54%           0                 0         -
mcp-transport/src/streamable_http.rs                          231               231     0.00%          19                19     0.00%         171               171     0.00%           0                 0         -
mcp-transport/src/validation.rs                               193               193     0.00%          14                14     0.00%         135               135     0.00%           0                 0         -
mcp-transport/src/websocket.rs                                 15                 9    40.00%           5                 3    40.00%          17                11    35.29%           0                 0         -
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                                       17944             14052    21.69%        1617              1298    19.73%       14202             10868    23.48%           0                 0         -

📋 Full Report: View on Codecov

@codecov
Copy link

codecov bot commented Dec 6, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@github-actions
Copy link

github-actions bot commented Dec 6, 2025

PR Validation Results

Quick Validation: ✅

  • Format check
  • Clippy lints
  • Unit tests
  • Documentation

Summary: ✅ All checks passed

Add 19 new test cases covering:
- Parse failure handling for non-string types
- Error propagation from resource methods
- Complex URI patterns with prefix/suffix
- JSON content verification
- Empty resource lists
- Self-referential resources
- Long URIs and parameter order verification
- Async error handling
@avrabe avrabe merged commit 3c0a89e into main Dec 6, 2025
22 checks passed
@avrabe avrabe deleted the fix/mcp-resource-macro branch December 6, 2025 15:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants