Skip to content
7 changes: 1 addition & 6 deletions examples/mount_example.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
"""Example of mounting FastMCP apps together.

This example demonstrates how to mount FastMCP apps together using
the ToolManager's import_tools functionality. It shows how to:
This example demonstrates how to mount FastMCP apps together. It shows how to:

1. Create sub-applications for different domains
2. Mount those sub-applications to a main application
Expand Down Expand Up @@ -103,10 +102,6 @@ async def get_server_details():
print(f" - Imported from weather app: {weather_resources}")
print(f" - Imported from news app: {news_resources}")

# Let's try to access resources using the prefixed URI
weather_data = await app._read_resource_mcp(uri="weather://weather/forecast")
print(f"\nWeather data from prefixed URI: {weather_data}")


if __name__ == "__main__":
# First run our async function to display info
Expand Down
27 changes: 13 additions & 14 deletions src/fastmcp/contrib/component_manager/component_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def _get_mounted_server_and_key(
Args:
provider: The provider to check.
key: The transformed component key.
component_type: Either "tool" (for tools/prompts) or "resource".
component_type: Either "tool", "prompt", or "resource".

Returns:
Tuple of (server, original_key) if the key matches this provider,
Expand All @@ -35,6 +35,8 @@ def _get_mounted_server_and_key(
# TransformingProvider - reverse the transformation
if component_type == "resource":
original = provider._reverse_resource_uri(key)
elif component_type == "prompt":
original = provider._reverse_prompt_name(key)
else:
original = provider._reverse_tool_name(key)

Expand All @@ -55,9 +57,6 @@ class ComponentService:

def __init__(self, server: FastMCP):
self._server = server
self._tool_manager = server._tool_manager
self._resource_manager = server._resource_manager
self._prompt_manager = server._prompt_manager

async def _enable_tool(self, key: str) -> Tool:
"""Handle 'enableTool' requests.
Expand All @@ -71,7 +70,7 @@ async def _enable_tool(self, key: str) -> Tool:
logger.debug("Enabling tool: %s", key)

# 1. Check local tools first. The server will have already applied its filter.
if key in self._server._tool_manager._tools:
if key in self._server._local_provider._tools:
tool: Tool = await self._server.get_tool(key)
tool.enable()
return tool
Expand All @@ -98,7 +97,7 @@ async def _disable_tool(self, key: str) -> Tool:
logger.debug("Disable tool: %s", key)

# 1. Check local tools first. The server will have already applied its filter.
if key in self._server._tool_manager._tools:
if key in self._server._local_provider._tools:
tool: Tool = await self._server.get_tool(key)
tool.disable()
return tool
Expand All @@ -125,11 +124,11 @@ async def _enable_resource(self, key: str) -> Resource | ResourceTemplate:
logger.debug("Enabling resource: %s", key)

# 1. Check local resources first. The server will have already applied its filter.
if key in self._resource_manager._resources:
if key in self._server._local_provider._resources:
resource: Resource = await self._server.get_resource(key)
resource.enable()
return resource
if key in self._resource_manager._templates:
if key in self._server._local_provider._templates:
template: ResourceTemplate = await self._server.get_resource_template(key)
template.enable()
return template
Expand Down Expand Up @@ -158,11 +157,11 @@ async def _disable_resource(self, key: str) -> Resource | ResourceTemplate:
logger.debug("Disable resource: %s", key)

# 1. Check local resources first. The server will have already applied its filter.
if key in self._resource_manager._resources:
if key in self._server._local_provider._resources:
resource: Resource = await self._server.get_resource(key)
resource.disable()
return resource
if key in self._resource_manager._templates:
if key in self._server._local_provider._templates:
template: ResourceTemplate = await self._server.get_resource_template(key)
template.disable()
return template
Expand Down Expand Up @@ -191,14 +190,14 @@ async def _enable_prompt(self, key: str) -> Prompt:
logger.debug("Enabling prompt: %s", key)

# 1. Check local prompts first. The server will have already applied its filter.
if key in self._server._prompt_manager._prompts:
if key in self._server._local_provider._prompts:
prompt: Prompt = await self._server.get_prompt(key)
prompt.enable()
return prompt

# 2. Check mounted servers via FastMCPProvider/TransformingProvider
for provider in self._server._providers:
result = _get_mounted_server_and_key(provider, key, "tool")
result = _get_mounted_server_and_key(provider, key, "prompt")
if result is not None:
server, unprefixed = result
mounted_service = ComponentService(server)
Expand All @@ -217,14 +216,14 @@ async def _disable_prompt(self, key: str) -> Prompt:
"""

# 1. Check local prompts first. The server will have already applied its filter.
if key in self._server._prompt_manager._prompts:
if key in self._server._local_provider._prompts:
prompt: Prompt = await self._server.get_prompt(key)
prompt.disable()
return prompt

# 2. Check mounted servers via FastMCPProvider/TransformingProvider
for provider in self._server._providers:
result = _get_mounted_server_and_key(provider, key, "tool")
result = _get_mounted_server_and_key(provider, key, "prompt")
if result is not None:
server, unprefixed = result
mounted_service = ComponentService(server)
Expand Down
4 changes: 1 addition & 3 deletions src/fastmcp/prompts/__init__.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
from .prompt import Message, Prompt, PromptResult, PromptMessage
from .prompt_manager import PromptManager
from .prompt import Message, Prompt, PromptMessage, PromptResult

__all__ = [
"Message",
"Prompt",
"PromptManager",
"PromptMessage",
"PromptResult",
]
129 changes: 0 additions & 129 deletions src/fastmcp/prompts/prompt_manager.py

This file was deleted.

2 changes: 0 additions & 2 deletions src/fastmcp/resources/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from .resource import FunctionResource, Resource, ResourceContent
from .resource_manager import ResourceManager
from .template import ResourceTemplate
from .types import (
BinaryResource,
Expand All @@ -17,7 +16,6 @@
"HttpResource",
"Resource",
"ResourceContent",
"ResourceManager",
"ResourceTemplate",
"TextResource",
]
Loading