A Python SDK for Model Context Protocol (MCP) development.
Model Context Protocol connects LLMs to external tools, resources, and data through a JSON-RPC 2.0 standard. Hosts create clients that communicate with MCP servers to access capabilities beyond text generation.
- Pythonic - Feels natural for Python developers
- Reliable - Comprehensive tests, clean abstractions
- Delightful - Works the way you expect
Transport Layer    →  ServerTransport (stdio, HTTP, etc.)
Session Layer      →  ServerSession (protocol conversations)  
Protocol Layer     →  Managers (tools, resources, prompts)
Here's a working MCP server that provides a calculator tool (needs a lot of polish but works with Claude Desktop!):
import asyncio
from conduit.protocol.content import TextContent
from conduit.protocol.tools import CallToolRequest, CallToolResult, JSONSchema, Tool
from conduit.server.message_context import MessageContext
from conduit.server.session import ServerSession
from conduit.transport.stdio import StdioServerTransport
async def main():
    server = ServerSession(transport=StdioServerTransport())
    
    # Define a calculator tool
    tool = Tool(
        name="calculate",
        description="Calculate the sum of two numbers",
        input_schema=JSONSchema(
            type="object", 
            properties={"a": {"type": "number"}, "b": {"type": "number"}}
        ),
    )
    
    # Handle tool calls
    async def calculate_handler(context: MessageContext, request: CallToolRequest) -> CallToolResult:
        a = request.arguments["a"]
        b = request.arguments["b"]
        result = a + b
        return CallToolResult(
            content=[TextContent(text=f"The sum of {a} and {b} is {result}")]
        )
    
    server.tools.add_tool(tool, calculate_handler)
    await server._start()
    
    # Keep server running
    try:
        while True:
            await asyncio.sleep(1)
    except KeyboardInterrupt:
        await server._stop()
if __name__ == "__main__":
    asyncio.run(main())See src/conduit/examples/calculator.py for the full example.
🚧 In developement - Core architecture complete. stdio transport complete. Integrating OAuth 2.1 client into HTTP transport
Read our contributing guide to get started.