fastapi mcp增强
增强版 fastapi mcp (FastAPI到MCP服务器网桥,11.5k+星),具有端点分析、智能路由和转换基准测试。
保留所有原始fastapi mcp文件 未触及的。增强功能作为单独的功能添加 fastapi_mcp_enhanced 包裹。
增强模块
1.终点分析(analysis.py)
用于分析OpenAPI模式和评估MCP工具转换质量的综合工具包。
from fastapi_mcp_enhanced import SchemaAnalyzer, ToolQualityAnalyzer, AuthAnalyzer
# Analyze an OpenAPI schema
analyzer = SchemaAnalyzer(openapi_schema)
summary = analyzer.summarize()
# {'total_endpoints': 12, 'methods': {'GET': 5, 'POST': 4, ...}, 'crud_coverage': 0.75}
complexity = analyzer.endpoint_complexity("/users/{id}", "get")
# {'path_params': 1, 'query_params': 0, 'has_body': False, 'score': 2}
crud = analyzer.crud_analysis()
# {'resources': {'users': {'create': True, 'read': True, 'update': True, 'delete': False}}}
# Evaluate MCP tool quality
quality = ToolQualityAnalyzer(openapi_schema)
report = quality.full_report()
# {'name_quality': 0.9, 'description_quality': 0.85, 'schema_quality': 0.92, ...}
# Analyze auth configuration
auth = AuthAnalyzer(openapi_schema)
schemes = auth.detect_security_schemes()
coverage = auth.auth_coverage()
recommendations = auth.recommendations()课程: EndpointSpec, SchemaAnalyzer, ToolQualityAnalyzer, AuthAnalyzer, ConversionAnalyzer
2.智能路由(routing.py)
FastApiMCP的智能端点过滤、分组和配置生成。
from fastapi_mcp_enhanced import EndpointFilter, ToolGrouper, ConfigGenerator, RoutingAnalyzer
# Filter endpoints by tags, methods, or patterns
f = EndpointFilter(openapi_schema)
crud_only = f.filter_by_methods(["get", "post", "put", "delete"])
admin_endpoints = f.filter_by_tags(["admin"])
user_endpoints = f.filter_by_pattern("/users/*")
# Group tools for organized exposure
grouper = ToolGrouper(openapi_schema)
by_tag = grouper.group_by_tag()
by_resource = grouper.group_by_resource()
namespaces = grouper.suggest_namespaces()
# Generate FastApiMCP configurations
gen = ConfigGenerator(openapi_schema)
config = gen.generate_config(include_tags=["public"], exclude_methods=["delete"])
code = gen.format_as_python(config)
# Outputs ready-to-use FastApiMCP(...) Python code
# Analyze routing quality
ra = RoutingAnalyzer(openapi_schema)
coverage = ra.coverage_analysis(include_operations=["getUsers", "createUser"])
conflicts = ra.detect_conflicts()
suggestions = ra.improvement_suggestions()课程: EndpointFilter, ToolGrouper, EndpointPrioritizer, ConfigGenerator, RoutingAnalyzer
3.转换基准(benchmark.py)
在不运行实际MCP服务器的情况下估计和比较转换指标。
from fastapi_mcp_enhanced import SchemaMetrics, ComplexityEstimator, TransportComparator
# Measure schema metrics
metrics = SchemaMetrics(openapi_schema)
stats = metrics.summary()
# {'endpoints': 15, 'parameters': 42, 'schemas': 8, 'estimated_tools': 15}
filtered = metrics.estimate_tool_count(include_tags=["public"])
param_stats = metrics.parameter_statistics()
# Estimate endpoint complexity
estimator = ComplexityEstimator(openapi_schema)
scores = estimator.all_complexities()
# {'/users': 3.2, '/users/{id}/orders': 6.8, ...}
ranking = estimator.complexity_ranking()
hotspots = estimator.identify_hotspots(threshold=7.0)
# Compare SSE vs HTTP transports
comparator = TransportComparator()
comparison = comparator.compare()
recommendation = comparator.recommend(use_case="production")
# Full conversion benchmark
from fastapi_mcp_enhanced import ConversionBenchmark, ToolSizeEstimator
bench = ConversionBenchmark(openapi_schema)
report = bench.full_report()
strategies = bench.compare_filter_strategies()
# Check MCP tool size limits
sizer = ToolSizeEstimator(openapi_schema)
sizes = sizer.estimate_total_tools_size()
limits = sizer.check_limits(max_tools=50, max_total_size_kb=512)
optimizations = sizer.optimize_for_limits(max_total_size_kb=256)课程: SchemaMetrics, ComplexityEstimator, TransportComparator, ConversionBenchmark, ToolSizeEstimator
安装
git clone https://github.com/Rlin1027/fastapi-mcp-enhanced.git
cd fastapi-mcp-enhanced
pip install -e . # Install original fastapi-mcp这 fastapi_mcp_enhanced 该软件包可以独立工作,不需要运行MCP服务器进行分析、路由或基准测试。
测试
python3 -m pytest tests/test_analysis.py tests/test_routing.py tests/test_benchmark.py -v104个测试,涵盖所有3个增强模块。
许可证
麻省理工学院——与最初的fastapi-mcp项目相同。
积分
原始项目: tadata组织/fastapi_mcp
