HoPe Chatbot MCP Server
Enables modular MCP capabilities by organizing tools, resources, and prompts into composable sub-servers, exposed either all-in-one or as separate MCP endpoints.
README
HoPe Chatbot MCP Server
Uses FastMCP v3.
For code organization reasons MCP functionality is split into logical modules, MCP sub-servers.
Main MCP server can import/mount sub-domain MCP servers. (mcp_server/app.py)
Development
Define your capabilities separated to composable MCP servers.
Define new MCP tools, resources, prompts...
for <some> domain
for <some> business capability
in <some> MCP sub-server
in mcp_server/servers/<some>/mcp.py.
Expose MCP server capabilities
Decide how you want your MCP tools, resources, prompts... to be available:
- in 1 combined MCP server (all-in-one) 🌐
- as separate MCP server only 🔒🪪
- both ✨
All-in-one MCP server
Include sub-domain MCP server in combined MCP server.
Follow these steps in mcp_server/app.py:
-
Import your FastMCP app
from mcp_server.servers.some import some_mcp -
Find main MCP server defined. Add capabilities of your MCP server into main MCP server in startup/setup lifespan phase of main MCP server
async def setup(app: FastMCP): # Import or mount subservers app.mount(some_mcp) # dynamic mount # await app.import_server(some_mcp) # static copy @contextlib.asynccontextmanager async def lifespan(app: FastMCP): # Setup await setup(app) yield # Cleanup main_mcp = FastMCP( name="home-of-performance-mcp-server", lifespan=lifespan ) -
Main combined MCP server contains capabilities of your MCP server at:
BASE_URL/mcp.It should be true for main combined MCP server ran in all cases:
mcp_server/app.pyran as a module- FastMCP.run method
mcp_server/app.pyran with uvicornFastMCP.http_app- ASGI app of your MCP server mount to FastAPI app, uvicorn accessing FastAPI ASGI app
- (uvicorn accessing your ASGI directly will work too)
Separate MCP server
Expose separate sub-domain MCP server.
Follow these steps in mcp_server/app.py:
-
Import your FastMCP app
from mcp_server.servers.some import some_mcp -
Create ASGI app from your FastMCP app
(no need to redefine
path="/mcp"kwarg)some_mcp_app = some_mcp.http_app() -
Add lifespan of your FastMCP app to combined lifespan used by FastAPI app
@contextlib.asynccontextmanager async def combined_lifespan(app: FastAPI): """Combine lifespans for FastAPI app""" # Run all lifespans async with main_mcp_app.lifespan(app): async with some_mcp_app.lifespan(app): # Setup yield # Cleanup fastapi_app = FastAPI( title="Home of Performance MCP", lifespan=combined_lifespan ) -
Mount ASGI app of your MCP server to FastAPI app under
/somepathfastapi_app.mount("/some", some_mcp_app) -
find your separate MCP server at:
BASE_URL/some/mcp
Running locally
-
Define environment variables in
.envaccording to.env.template(do not commit secrets) -
Install required python packages from
requirements.txt -
Start FastMCP app through
runmethodpython -m mcp_server.appor run FastAPI app with MCP server(s) mount into it through gunicorn, uvicorn...
source .venv/bin/activate && uvicorn src.app:app --host 0.0.0.0 --port 8000 --reload
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.