Skip to content

ACNet-AI/mcp-factory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

57 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MCP Factory

MCP Factory Python License

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
  enable_permission_check: 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 tools
  • mcp:write - modify management tools
  • mcp:admin - destructive management tools
  • mcp: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:

# Run tests
pytest

# Generate coverage report
pytest --cov=mcp_factory

πŸ“– Documentation

πŸ“„ License

This project is licensed under the Apache-2.0 License - see the LICENSE file for details.

About

A factory framework focused on MCP server creation and management.

Resources

License

Stars

Watchers

Forks

Packages

No packages published