resource_manager
Resource manager functionality.
ResourceManager
Manages MCPServer resources.
Source code in src/mcp/server/mcpserver/resources/resource_manager.py
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | |
add_resource
Add a resource to the manager.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
resource
|
Resource
|
A Resource instance to add. |
required |
Returns:
| Type | Description |
|---|---|
Resource
|
The added resource. If a resource with the same URI already exists, returns the existing resource. |
Source code in src/mcp/server/mcpserver/resources/resource_manager.py
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | |
add_template
add_template(
fn: Callable[..., Any],
uri_template: str,
name: str | None = None,
title: str | None = None,
description: str | None = None,
mime_type: str | None = None,
icons: list[Icon] | None = None,
annotations: Annotations | None = None,
meta: dict[str, Any] | None = None,
security: ResourceSecurity = DEFAULT_RESOURCE_SECURITY,
) -> ResourceTemplate
Add a template from a function.
Source code in src/mcp/server/mcpserver/resources/resource_manager.py
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | |
get_resource
async
get_resource(
uri: AnyUrl | str,
context: Context[LifespanContextT, RequestT],
) -> Resource | InputRequiredResult
Get resource by URI, checking concrete resources first, then templates.
A template function may return an InputRequiredResult instead of
resource content (the 2026-07-28 multi-round-trip flow); it is passed
through unchanged.
Raises:
| Type | Description |
|---|---|
ResourceNotFoundError
|
If no resource or template matches the URI. |
ResourceError
|
If a matching template fails to create the resource. |
Note
Pydantic's AnyUrl normalises percent-encoding and
resolves .. segments during validation, so a value
constructed as AnyUrl("file:///a/%2E%2E/b") arrives
here as file:///b. The JSON-RPC protocol layer passes
raw str values and is unaffected, but internal callers
wrapping URIs in AnyUrl should be aware that security
checks see the already-normalised form.
Source code in src/mcp/server/mcpserver/resources/resource_manager.py
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | |
list_resources
List all registered resources.
Source code in src/mcp/server/mcpserver/resources/resource_manager.py
129 130 131 132 | |
list_templates
list_templates() -> list[ResourceTemplate]
List all registered templates.
Source code in src/mcp/server/mcpserver/resources/resource_manager.py
134 135 136 137 | |