Commit d235d51
fix: handle root_path in MCPPathRewriteMiddleware for reverse proxy deployments (#4217)
* fix: handle root_path in MCPPathRewriteMiddleware for reverse proxy deployments
Fixes #4215
The /servers/{id}/mcp endpoint was returning 404 in reverse proxy
deployments with path prefixes because MCPPathRewriteMiddleware
checked original_path without stripping the root_path prefix.
- Extract root_path from scope or settings before pattern matching
- Strip root_path to get app-relative path for /servers/ detection
- Preserve root_path when rewriting to /mcp/
- Add 8 unit tests covering prefix scenarios and security checks
Pattern follows streamablehttp_transport.py:831 and token_scoping.py:354
Signed-off-by: Mohan Lakshmaiah <mohan.economist@gmail.com>
* refactor: use _normalize_scope_path in MCPPathRewriteMiddleware
Replace inline root_path stripping with existing _normalize_scope_path()
which provides full-segment boundary checks and root_path="/" safety.
Closes #4215
Signed-off-by: Madhav Kandukuri <madhav165@gmail.com>
* Update .secrets.baseline
Signed-off-by: Brian Hussey <brian.hussey@ie.ibm.com>
---------
Signed-off-by: Mohan Lakshmaiah <mohan.economist@gmail.com>
Signed-off-by: Madhav Kandukuri <madhav165@gmail.com>
Signed-off-by: Brian Hussey <brian.hussey@ie.ibm.com>
Co-authored-by: Madhav Kandukuri <madhav165@gmail.com>
Co-authored-by: Brian Hussey <brian.hussey@ie.ibm.com>1 parent 0fc878c commit d235d51
File tree
3 files changed
+171
-9
lines changed- mcpgateway
- tests/unit/mcpgateway
3 files changed
+171
-9
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1434 | 1434 | | |
1435 | 1435 | | |
1436 | 1436 | | |
1437 | | - | |
1438 | | - | |
1439 | | - | |
| 1437 | + | |
1440 | 1438 | | |
1441 | 1439 | | |
1442 | 1440 | | |
| |||
3005 | 3003 | | |
3006 | 3004 | | |
3007 | 3005 | | |
| 3006 | + | |
| 3007 | + | |
| 3008 | + | |
| 3009 | + | |
| 3010 | + | |
| 3011 | + | |
| 3012 | + | |
3008 | 3013 | | |
3009 | 3014 | | |
3010 | | - | |
3011 | | - | |
| 3015 | + | |
| 3016 | + | |
3012 | 3017 | | |
3013 | 3018 | | |
3014 | 3019 | | |
3015 | 3020 | | |
3016 | 3021 | | |
3017 | | - | |
| 3022 | + | |
3018 | 3023 | | |
3019 | 3024 | | |
3020 | 3025 | | |
3021 | | - | |
| 3026 | + | |
3022 | 3027 | | |
3023 | 3028 | | |
3024 | 3029 | | |
| |||
3028 | 3033 | | |
3029 | 3034 | | |
3030 | 3035 | | |
3031 | | - | |
| 3036 | + | |
| 3037 | + | |
3032 | 3038 | | |
3033 | 3039 | | |
3034 | 3040 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2833 | 2833 | | |
2834 | 2834 | | |
2835 | 2835 | | |
| 2836 | + | |
| 2837 | + | |
| 2838 | + | |
| 2839 | + | |
| 2840 | + | |
| 2841 | + | |
| 2842 | + | |
| 2843 | + | |
| 2844 | + | |
| 2845 | + | |
| 2846 | + | |
| 2847 | + | |
| 2848 | + | |
| 2849 | + | |
| 2850 | + | |
| 2851 | + | |
| 2852 | + | |
| 2853 | + | |
| 2854 | + | |
| 2855 | + | |
| 2856 | + | |
| 2857 | + | |
| 2858 | + | |
| 2859 | + | |
| 2860 | + | |
| 2861 | + | |
| 2862 | + | |
| 2863 | + | |
| 2864 | + | |
| 2865 | + | |
| 2866 | + | |
| 2867 | + | |
| 2868 | + | |
| 2869 | + | |
| 2870 | + | |
| 2871 | + | |
| 2872 | + | |
| 2873 | + | |
| 2874 | + | |
| 2875 | + | |
| 2876 | + | |
| 2877 | + | |
| 2878 | + | |
| 2879 | + | |
| 2880 | + | |
| 2881 | + | |
| 2882 | + | |
| 2883 | + | |
| 2884 | + | |
| 2885 | + | |
| 2886 | + | |
| 2887 | + | |
| 2888 | + | |
| 2889 | + | |
| 2890 | + | |
| 2891 | + | |
| 2892 | + | |
| 2893 | + | |
| 2894 | + | |
| 2895 | + | |
| 2896 | + | |
| 2897 | + | |
| 2898 | + | |
| 2899 | + | |
| 2900 | + | |
| 2901 | + | |
| 2902 | + | |
| 2903 | + | |
| 2904 | + | |
| 2905 | + | |
| 2906 | + | |
| 2907 | + | |
| 2908 | + | |
| 2909 | + | |
| 2910 | + | |
| 2911 | + | |
| 2912 | + | |
| 2913 | + | |
| 2914 | + | |
| 2915 | + | |
| 2916 | + | |
| 2917 | + | |
| 2918 | + | |
| 2919 | + | |
| 2920 | + | |
| 2921 | + | |
| 2922 | + | |
| 2923 | + | |
| 2924 | + | |
| 2925 | + | |
| 2926 | + | |
| 2927 | + | |
| 2928 | + | |
| 2929 | + | |
| 2930 | + | |
| 2931 | + | |
| 2932 | + | |
| 2933 | + | |
| 2934 | + | |
| 2935 | + | |
| 2936 | + | |
| 2937 | + | |
| 2938 | + | |
| 2939 | + | |
| 2940 | + | |
| 2941 | + | |
| 2942 | + | |
| 2943 | + | |
| 2944 | + | |
| 2945 | + | |
| 2946 | + | |
| 2947 | + | |
| 2948 | + | |
| 2949 | + | |
| 2950 | + | |
| 2951 | + | |
| 2952 | + | |
| 2953 | + | |
| 2954 | + | |
| 2955 | + | |
| 2956 | + | |
| 2957 | + | |
| 2958 | + | |
| 2959 | + | |
| 2960 | + | |
| 2961 | + | |
| 2962 | + | |
| 2963 | + | |
| 2964 | + | |
| 2965 | + | |
| 2966 | + | |
| 2967 | + | |
| 2968 | + | |
| 2969 | + | |
| 2970 | + | |
| 2971 | + | |
| 2972 | + | |
| 2973 | + | |
| 2974 | + | |
| 2975 | + | |
| 2976 | + | |
| 2977 | + | |
| 2978 | + | |
| 2979 | + | |
| 2980 | + | |
| 2981 | + | |
| 2982 | + | |
| 2983 | + | |
| 2984 | + | |
| 2985 | + | |
| 2986 | + | |
| 2987 | + | |
| 2988 | + | |
| 2989 | + | |
| 2990 | + | |
| 2991 | + | |
2836 | 2992 | | |
2837 | 2993 | | |
2838 | 2994 | | |
| |||
0 commit comments