A Template MCP Server
@Alexander-Nestor-Bergmann
A template for how to build an MCP server
Overview
What is A Template MCP Server?
A Template MCP Server is an example implementation of a Model Context Protocol (MCP) server that demonstrates how to connect AI agents and services (like Claude) to external data sources. It uses a PostgreSQL database backend to manage user data and exposes simple tools for user operations, serving as a reference for building MCP servers.
How to use A Template MCP Server?
Configure environment variables (especially DB_URL) in a .env file, then run the server using Docker or local Python. Connect an MCP client using either SSE (via Docker) or stdio transport (for local development). Example client configuration for SSE: set transport to sse and url to http://localhost:8051/sse.
Key features of A Template MCP Server
- Defines and exposes custom tools via the MCP standard.
- Handles requests from MCP clients and translates them into database operations.
- Returns structured results or errors to the client.
- Includes four example tools: add, list, find, and delete users.
- Uses async PostgreSQL connection via SQLAlchemy with asyncpg driver.
- Configurable via environment variables (e.g.,
DB_URL,DB_HOST,DB_PORT).
Use cases of A Template MCP Server
- Learn how to build a basic MCP server with a database backend.
- Prototype an AI agent that can query or modify user records.
- Serve as a starting point for developing production MCP servers.
FAQ from A Template MCP Server
What dependencies are required to run the server?
Requires Python 3.10+ and access to a PostgreSQL database. Docker is recommended for easy deployment; uv is used for local dependency management.
How do I configure the database connection?
Set the DB_URL environment variable to a PostgreSQL connection string using an asyncpg compatible prefix (e.g., postgresql+asyncpg://user:pass@host:5432/dbname). Additional optional variables like DB_HOST, DB_PORT, and MCP_SIGNING_KEY can be set in a .env file.
What transport options are available for connecting an MCP client?
The server supports both SSE (Server-Sent Events) transport, typically used when running via Docker, and stdio transport for local development. The client configuration must specify the transport type and appropriate connection details.
Is this server intended for production use?
No. The tools are simplified examples and the server is designed as a template to illustrate MCP server construction. The README explicitly states it is not for production use.
Where does the data live?
Data lives in a PostgreSQL database configured via the DB_URL environment variable. The server itself does not store data; it acts as a gateway to the external database.