mcpField
M
MCP Base

MCP Base

Local
github.com/josharshDeveloper Tools20Updated 79w ago

About MCP Base

MCP Base is a Python starter template for building MCP servers with FastMCP, offering a modular layout for tools, prompts and resources. It is intended for developers starting new Python MCP server projects.

Key features

  1. 01Supports STDIO, SSE and HTTP transports
  2. 02Modular tools, prompts and resources with registries
  3. 03Pydantic-based input validation
  4. 04File and directory operations restricted to allowed paths
  5. 05Docker support and Pytest test examples

Use cases

  1. 01Starting a new Python MCP server project from a template
  2. 02Adding custom tools through base classes and registries
  3. 03Serving the same MCP server over different transports

MCP support

This is a template for building MCP servers; the resulting servers expose tools, prompts and resources to MCP clients.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

MCP Base

A solid, foundational starting point for MCP projects. MCP Base is a production-ready, extensible template for building Model Context Protocol (MCP) servers in Python. Rapidly create, extend, and deploy MCP servers that expose tools, prompts, and resources to LLMs and agentic clients.


🚀 What is This?

This is a Python starter base—not a specific server implementation. It provides a modular, well-documented foundation for building your own MCP servers in Python, supporting multiple transport layers (STDIO, SSE, HTTP, etc.), and demonstrating best practices for security, extensibility, and maintainability.


🏗️ Architecture Overview

.
├── src/
│   ├── base/                # Base classes for tools, prompts, resources
│   ├── tools/               # Example tools (filesystem, API, prompt, etc.)
│   ├── resources/           # Example resources (static/dynamic)
│   ├── prompts/             # Example prompts (text generation, summarization)
│   ├── transports/          # Transport layer implementations & docs
│   │   ├── stdio/
│   │   │   └── README.md
│   │   ├── sse/
│   │   │   └── README.md
│   │   └── ...
│   ├── config.py            # Configuration and environment management
│   ├── server.py            # Server instantiation and registration
│   └── main.py              # Entrypoint: selects transport, starts server
├── tests/                   # Example tests for tools/resources
├── Dockerfile               # Containerized deployment
├── requirements.txt / pyproject.toml
├── README.md                # This file
├── CONTRIBUTING.md
└── ...

✨ Features

  • Multi-Transport Support: STDIO, SSE, HTTP, and more (see /src/transports/)
  • Modular Tools/Prompts/Resources: Add new features by creating a class and registering it
  • Type-Safe Input Validation: Uses Pydantic for schemas
  • Security Best Practices: Directory sandboxing, input validation, error handling
  • Extensible & Maintainable: Clean separation of concerns, base classes, and registries
  • Production-Ready: Logging, environment management, Docker support
  • Comprehensive Documentation: For users and contributors

🛠️ Getting Started

1. Install Dependencies
pip install -r requirements.txt
2. Configure Environment

Copy .env.example to .env and fill in required values.

3. Run the Server

STDIO Transport:

python main.py --transport=stdio

SSE/HTTP Transport: See /src/transports/sse/README.md and /src/transports/http/README.md for details.


🧩 Adding Tools, Prompts, and Resources

Tools
  • Create a new class in /src/tools/ inheriting from BaseTool
  • Implement the required methods and input schema
  • Register the tool in the tool registry
Prompts
  • Create a new class in /src/prompts/ inheriting from BasePrompt
  • Implement the required methods and input schema
  • Register the prompt in the prompt registry
Resources
  • Add static or dynamic resources in /src/resources/
  • Register them in the resource registry

🔌 Supported Transports

  • STDIO: For CLI and agentic integration (see /src/transports/stdio/README.md)
  • SSE: For server-sent events and web clients (see /src/transports/sse/README.md)
  • HTTP: For RESTful or web-based integration (see /src/transports/http/README.md)

Each transport is modular and can be extended or replaced.


🛡️ Security & Best Practices

  • All file and directory operations are sandboxed to allowed paths
  • Input validation is enforced for all tool/resource inputs
  • Error handling is consistent and user-friendly
  • Sensitive configuration is managed via environment variables

🧪 Testing

  • Example tests are provided in /tests/
  • Use Pytest as the test runner
  • See CONTRIBUTING.md for test guidelines

🤝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines, code style, and PR process.


📚 Further Reading


📝 License

MIT License. See LICENSE for details.


💬 Community & Support


MCP Base is the recommended starting point for all new Python MCP server projects. Fork, extend, and contribute improvements!

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.