Druling MCP Server
A platform for building and managing MCP servers and REST APIs, enabling AI integrations with services like Gmail and Google Drive.
README
Druling MCP Server
Install all dependencies
- Run
pip install -r requirements-dev.txt
How to run app using Docker with PostgreSQL
- Install Docker Desktop
- Run
docker compose up --build - Run
docker compose downto stop all services
How to run locally without postgres or docker
- In database/core.py change the DATABASE_URL to sqlite
- Run
make run
How to run tests
- Run
pytestto run all tests
How to Add a New MCP Server
MCP (Model Context Protocol) servers provide tools and prompts for AI integrations. Follow these steps to add a new MCP server:
Step 1: Create the MCP Server Directory
Create a new directory under src/servers/ for your MCP server:
src/servers/<provider>/<service>/
__init__.py
mcp.py
outputs.py
prompts.py
For example, to add a new "calendar" service under Google:
src/servers/google/calendar/
__init__.py
mcp.py
outputs.py
prompts.py
Step 2: Define Output Models (outputs.py)
Create Pydantic models for your tool outputs:
Step 3: Define Prompts (prompts.py)
Create prompts for your MCP server (optional):
Step 4: Create the MCP Server (mcp.py)
Create the MCP server class by extending BaseMCPServer:
Step 5: Register the MCP Server
Update src/setup/mcp.py to register your new MCP server:
from src.servers.google.calendar.mcp import CalendarMCPServer
# Add to existing imports and initializations
calendar_server = CalendarMCPServer()
MCP_PATH = {
# ...existing servers...
"calendar": calendar_server,
}
The server will automatically:
- Be mounted at
/<server_name>(e.g.,/calendar) - Have session management handled by the lifespan context
- Include authentication and context middleware
How to Add a New REST API
REST APIs are used for standard HTTP endpoints. Follow these steps to add a new API:
Step 1: Create the API Directory
Create a new directory under src/app/ for your API:
src/app/<feature>/
__init__.py
api.py
For example, to add a "users" API:
src/app/users/
__init__.py
api.py
Step 2: Create the API Router (api.py)
Create the FastAPI router with your endpoints:
Step 3: Register the API Router
Update src/setup/api.py to include your new router:
Project Structure Overview
src/
├── main.py # FastAPI app entry point
├── setup/
│ ├── api.py # REST API route registration
│ └── mcp.py # MCP server registration
├── app/ # REST API endpoints
│ ├── health_check/
│ ├── auth/
│ └── <your_api>/
├── servers/ # MCP servers
│ ├── google/
│ │ ├── gmail/
│ │ ├── drive/
│ │ └── <your_service>/
│ ├── druling/
│ └── <your_provider>/
├── core/
│ ├── service/ # Base MCP server class
│ ├── middleware/ # Auth and context middleware
│ ├── exceptions/ # Custom exceptions
│ └── utils/ # Utility functions
└── clients/
└── backend/ # Backend API client
Key Concepts
MCP Server
- Extends
BaseMCPServerfromsrc.core.service - Provides tools (functions) and prompts for AI agents
- Uses
@self._mcp.tool()decorator to register tools - Uses
mcp_meta()for tool metadata - Access user context via
self.get_context()
REST API
- Uses FastAPI's
APIRouter - Registered via
app.include_router() - Standard REST conventions with proper status codes
Backend Client
- Use
BackendClientfromsrc.clients.backend.clientto call backend services - Supports
get(),post(),put(),delete()methods - Pass
contextfor authenticated requests
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.
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.
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.
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.