Skip to main content

Enterprise-grade MCP framework built on FastMCP

Project description

SMF - Enterprise MCP Framework

SMF is a production-ready Python framework built on top of FastMCP that makes it significantly simpler to create, structure, and deploy MCP (Model Context Protocol) servers.

Features

  • ๐Ÿ—๏ธ High-level abstractions: ServerFactory and AppBuilder for minimal boilerplate
  • ๐Ÿ”ง Tool registration: Simple decorator-based tool registration
  • ๐Ÿ”Œ Plugin system: Extensible architecture with stable interfaces
  • ๐Ÿš€ CLI & Templates: Project scaffolding and code generation
  • ๐Ÿ“ฆ Simple & Focused: Tools-only approach, no unnecessary complexity

Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   CLI & Templates           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Extensions & Plugins       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    Core SMF Layer          โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    FastMCP (Upstream)        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

SMF wraps FastMCP without modifying it, ensuring compatibility with FastMCP updates while adding enterprise features.

Quick Start

Installation

uv add smf-mcp
# or
pip install smf-mcp

Simple Server

from smf import create_server

# Create server
mcp = create_server("My Server")

# Register a tool
@mcp.tool
def greet(name: str) -> str:
    """Greet someone by name."""
    return f"Hello, {name}!"

if __name__ == "__main__":
    from smf.transport import run_server
    run_server(mcp)

Advanced Server with AppBuilder

from smf import AppBuilder

# Use AppBuilder for fluent registration
with AppBuilder() as builder:
    @builder.tool(tags=["math"])
    def add(a: float, b: float) -> float:
        """Add two numbers."""
        return a + b

    mcp = builder.build()

if __name__ == "__main__":
    from smf.transport import run_server
    run_server(mcp, transport="http", port=8000)

CLI

# Initialize new project
smf init my-server

# Initialize project with Elasticsearch plugin
smf init my-server --elasticsearch --es-index "products"

# Run server
smf run server.py --transport http --port 8000

# Inspect server (Official Web Inspector)
smf inspector server.py

Core Components

ServerFactory

Creates configured FastMCP servers:

from smf import ServerFactory

factory = ServerFactory()
mcp = factory.create(name="My Server")

AppBuilder

Fluent interface for registering tools:

from smf import AppBuilder

builder = AppBuilder()
builder.tool(my_function)
mcp = builder.build()

Transport

Run servers with different transport mechanisms:

from smf.transport import run_server

# Stdio (default)
run_server(mcp)

# HTTP
run_server(mcp, transport="http", host="0.0.0.0", port=8000)

# SSE
run_server(mcp, transport="sse", host="0.0.0.0", port=8000)

Plugins

Elasticsearch Plugin

Create Elasticsearch-powered MCP servers:

# Create server with CLI
smf init my-server --elasticsearch --es-index "products"

# Or use in code
from smf.plugins.elasticsearch import (
    ElasticsearchConfiguration,
    build_elasticsearch_connection,
    create_elasticsearch_tools,
)

es_config = ElasticsearchConfiguration.from_env()
es_client = build_elasticsearch_connection(es_config)
mcp = create_server("My Server")
tools = create_elasticsearch_tools(es_client, index="products")
for tool in tools:
    mcp.tool(tool)

Install: Choose the version matching your Elasticsearch cluster:

  • pip install smf-mcp[elasticsearch7] or uv add smf-mcp[elasticsearch7] for Elasticsearch 7.x
  • pip install smf-mcp[elasticsearch8] or uv add smf-mcp[elasticsearch8] for Elasticsearch 8.x
  • pip install smf-mcp[elasticsearch9] or uv add smf-mcp[elasticsearch9] for Elasticsearch 9.x

Project Structure

When you initialize a new project with smf init, you get:

my-server/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ tools/
โ”‚       โ”œโ”€โ”€ __init__.py
โ”‚       โ””โ”€โ”€ tools.py          # Your tools
โ”œโ”€โ”€ server.py                  # Main server file
โ””โ”€โ”€ README.md                  # Project documentation

Requirements

  • Python 3.11+
  • FastMCP >= 2.11

License

MIT

Credits

Built on FastMCP by Prefect.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smf_mcp-0.1.21.tar.gz (25.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smf_mcp-0.1.21-py3-none-any.whl (41.0 kB view details)

Uploaded Python 3

File details

Details for the file smf_mcp-0.1.21.tar.gz.

File metadata

  • Download URL: smf_mcp-0.1.21.tar.gz
  • Upload date:
  • Size: 25.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for smf_mcp-0.1.21.tar.gz
Algorithm Hash digest
SHA256 80f4ad576a0ef953ae219ce1d8d814bd8188d32c7d631b3a441cb5efa9bdb849
MD5 1ac7f492007c398c999f2b8181a9f549
BLAKE2b-256 e916cf5aa31b5e6cd78bf54340f55bad456324a0c374284f391607d80a2ee9df

See more details on using hashes here.

File details

Details for the file smf_mcp-0.1.21-py3-none-any.whl.

File metadata

  • Download URL: smf_mcp-0.1.21-py3-none-any.whl
  • Upload date:
  • Size: 41.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for smf_mcp-0.1.21-py3-none-any.whl
Algorithm Hash digest
SHA256 499f4b002eebc9dfa3c219b17388465fc6006a459d7e3d2433282be6c01fa792
MD5 9aaa85847a41dd067b62bddf136731c8
BLAKE2b-256 0b7819129a505abaf110d43b1802d4938c0891af7c5ea15e98ee1ec2bc538145

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page