=== NEW SERVERS ADDED (7) === - servers/closebot — 119 tools, 14 modules, 4,656 lines TS (Stage 7) - servers/google-console — Google Search Console MCP (Stage 7) - servers/meta-ads — Meta/Facebook Ads MCP (Stage 8) - servers/twilio — Twilio communications MCP (Stage 8) - servers/competitor-research — Competitive intel MCP (Stage 6) - servers/n8n-apps — n8n workflow MCP apps (Stage 6) - servers/reonomy — Commercial real estate MCP (Stage 1) === FACTORY INFRASTRUCTURE ADDED === - infra/factory-tools — mcp-jest, mcp-validator, mcp-add, MCP Inspector - 60 test configs, 702 auto-generated test cases - All 30 servers score 100/100 protocol compliance - infra/command-center — Pipeline state, operator playbook, dashboard config - infra/factory-reviews — Automated eval reports === DOCS ADDED === - docs/MCP-FACTORY.md — Factory overview - docs/reports/ — 5 pipeline evaluation reports - docs/research/ — Browser MCP research === RULES ESTABLISHED === - CONTRIBUTING.md — All MCP work MUST go in this repo - README.md — Full inventory of 37 servers + infra docs - .gitignore — Updated for Python venvs TOTAL: 37 MCP servers + full factory pipeline in one repo. This is now the single source of truth for all MCP work.
Copyright (c) 2025 Scott Wilcox
SPDX-License-Identifier: AGPL-3.0-or-later
MCP Transport Layers
This directory contains the transport layer implementations for the MCP testing framework. Transport layers handle the communication between the testing framework and MCP servers using different protocols.
Components
- base.py: Abstract base class defining the transport layer interface
- stdio.py: Implementation for Standard Input/Output (STDIO) transport
- http.py: Implementation for HTTP transport
Transport Interface
All transport implementations inherit from the MCPTransport base class, which defines a common interface for MCP communication:
class MCPTransport:
def initialize(self, protocol_version, capabilities=None):
"""Initialize the MCP server."""
pass
def list_tools(self):
"""List available tools."""
pass
def invoke_tool_call(self, tool_name, parameters):
"""Invoke a tool."""
pass
def get_tool_call_status(self, tool_call_id):
"""Get status of an async tool call."""
pass
def shutdown(self):
"""Shutdown the MCP server."""
pass
Adding New Transport Layers
To add a new transport layer:
- Create a new file in this directory (e.g.,
websocket.py) - Implement a class that inherits from
MCPTransport - Implement all required methods defined in the base class
- Add appropriate error handling and logging
- Update the
__init__.pyfile to expose the new transport
Example of a new transport implementation:
from .base import MCPTransport
class WebSocketTransport(MCPTransport):
def __init__(self, url, **kwargs):
super().__init__()
self.url = url
self.connection = None
# ... initialization code ...
def initialize(self, protocol_version, capabilities=None):
# ... implementation ...
pass
# ... other method implementations ...
Usage Example
from mcp_testing.transports.http import HTTPTransport
from mcp_testing.transports.stdio import STDIOTransport
# Create transport instances
http = HTTPTransport("http://localhost:9000/mcp")
stdio = STDIOTransport("python ./server.py")
# Initialize connections
http.initialize("2025-03-26")
stdio.initialize("2025-03-26")
# List available tools
http_tools = http.list_tools()
stdio_tools = stdio.list_tools()
# Clean up
http.shutdown()
stdio.shutdown()