MCP Factory
A factory framework focused on MCP server creation and management
🎯 Overview
MCP Factory is a lightweight MCP (Model Context Protocol) server creation factory. It focuses on simplifying the building, configuration and management process of MCP servers, enabling developers to quickly create and deploy MCP servers.
🌟 Key Features
- 🏭 Server Factory - Quickly create and configure MCP server instances
- 📁 Project Building - Automatically generate complete MCP project structure
- 🔧 Configuration Management - Flexible YAML configuration system
- 🔗 Server Mounting - Support multi-server mounting and management
- 🛠️ CLI Tools - Simple and easy-to-use command line interface
- 🔐 Permission Control - Scope-based access control with 4-level permission system
- ⚙️ Management Tools - FastMCP native methods exposed as server tools (20+ tools)
- 🛡️ Production Security - Automatic security validation and flexible authentication
🚀 Quick Start
Installation
pip install mcp-factory
Basic Usage
📋 Programmatic Mode
from mcp_factory import MCPFactory
factory = MCPFactory(workspace_root="./workspace")
config = {
"server": {"name": "api-server", "description": "Dynamic API server"},
"components": {
"tools": [{"module": "greeting_tools", "enabled": True}]
}
}
server_id = factory.create_server("api-server", config)
📄 Configuration File Mode
# config.yaml
server:
name: file-server
description: "Server from configuration file"
management:
expose_management_tools: true
authorization: true
auth:
provider: "none" # or "oauth" for OAuth2 flow
components:
tools:
- module: "file_tools"
enabled: true
factory = MCPFactory(workspace_root="./workspace")
server_id = factory.create_server("file-server", "config.yaml")
🏗️ Project Mode
mcp-factory project create my-server
🚀 Direct Server Creation
from mcp_factory import ManagedServer
server = ManagedServer(name="direct-server")
@server.tool()
def calculate(x: float, y: float, operation: str) -> float:
"""Perform mathematical calculations"""
return x + y if operation == "add" else x * y
server.run()
🎛️ Operation Modes
| Mode | Best For | Key Features |
|---|---|---|
| 📋 Dictionary | Enterprise Integration, Testing | Programmatic control, dynamic configuration |
| 📄 Config File | DevOps, Team Collaboration | Environment-specific deployment, standardized templates |
| 🏗️ Project | Professional Development | Complex applications, full security features |
🛠️ CLI Usage
# Create new project
mcp-factory project create my-project
# Create shared component
mcp-factory config component create --type tools --name "auth_tools"
# Quick start temporary server
mcp-factory server quick
# Run server from config file or project name
mcp-factory server run config.yaml
mcp-factory server run my-project
# Run with custom transport
mcp-factory server run config.yaml --transport http --host 0.0.0.0 --port 8080
# Publish project to GitHub
mcp-factory project publish my-project
# List all servers
mcp-factory server list
🔐 Authentication Setup
JWT Authentication (via environment variables)
export FASTMCP_AUTH_BEARER_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----..."
export FASTMCP_AUTH_BEARER_ISSUER="https://your-auth-server.com"
export FASTMCP_AUTH_BEARER_AUDIENCE="your-app-name"
OAuth2 Authentication (via configuration)
auth:
provider: "oauth"
oauth:
issuer_url: "https://your-auth-server.com"
client_id: "your-client-id"
scopes: ["openid", "mcp:read", "mcp:write", "mcp:admin"]
Required Token Scopes:
mcp:read- readonly management toolsmcp:write- modify management toolsmcp:admin- destructive management toolsmcp:external- external system tools
🏗️ Architecture
Core Components
- MCPFactory - Main factory class supporting all operation modes
- ManagedServer - Server class with decorator-based tool registration
- Configuration System - Flexible YAML configuration management
- Project Builder - Automatic project structure generation
🔧 Management Tools System
Our servers automatically register 20+ management tools from FastMCP native methods with 4-level permission control:
Permission Levels: readonly → modify → destructive → external
Key Tools: manage_get_tools, manage_add_tool, manage_remove_tool, manage_mount, manage_import_server, etc.
📚 Examples & Testing
Check the examples/ directory for complete usage examples:
- Basic Server - Simple MCP server
- Factory Complete - Complete workflow
- Server Mounting - Multi-server mounting
- Management Tools Demo - Interactive management tools
# Run tests
pytest
# Generate coverage report
pytest --cov=mcp_factory
📖 Documentation
- Getting Started Guide - Quick setup and basic usage
- Configuration Guide - Detailed configuration options
- CLI Usage Guide - Command-line interface documentation
- Authorization System - Permission management and security
- Architecture Documentation - System architecture and design
📄 License
This project is licensed under the Apache-2.0 License - see the LICENSE file for details.
Metadata
Release files for mcp-factory 1.6.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mcp_factory-1.6.3.tar.gz | 195.3 kB | Without provenance | Details for mcp_factory-1.6.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mcp_factory-1.6.3-py3-none-any.whl | Python 3 | none | any | Details for mcp_factory-1.6.3-py3-none-any.whl |
Total release size: 414.5 kB
Release files / mcp_factory-1.6.3.tar.gz
| Download URL | mcp_factory-1.6.3.tar.gz |
|---|---|
| Size | 195.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ca7b970fa3386e04b954f6be6dacb72acfc17ee977d3e3ed4602edfbaa625a9f
|
|
BLAKE2b-256 checksum How to use checksums |
ee57256a61b6832f37d4654012a8e3ee560ceee4d1db52f5473a6f6b03d5ee28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / mcp_factory-1.6.3-py3-none-any.whl
| Download URL | mcp_factory-1.6.3-py3-none-any.whl |
|---|---|
| Size | 219.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b06012ed843c5dff8e26129cbe6925573fd3567665c1eed03d17c11a80857f0a
|
|
BLAKE2b-256 checksum How to use checksums |
8a7530a164896bea1bae7b78c927c41f7ea25dc377ef860fb53dcb31f64435f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Security for mcp-factory 1.6.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.