Skip to main content
Connect a smolagents agent from Hugging Face to Civic using MCPClient with Streamable HTTP transport. smolagents’ MCP client discovers all available tools and exposes them to a CodeAgent.

Prerequisites

  • Python 3.11+
  • A Civic account at nexus.civic.com with a configured toolkit
  • A Civic token and an Anthropic API key

Installation

pip install "smolagents[mcp]" litellm python-dotenv

Environment Variables

CIVIC_URL=https://nexus.civic.com/hub/mcp?profile=your-toolkit
CIVIC_TOKEN=your-civic-token
ANTHROPIC_API_KEY=your-anthropic-key

Get Your Credentials

How to generate a Civic token and configure toolkit URL parameters

Connecting to Civic

Pass a single config dict to MCPClient with the transport key set to "streamable-http" (hyphen, not underscore):
import os
from dotenv import load_dotenv
from smolagents import CodeAgent, LiteLLMModel
from smolagents.mcp_client import MCPClient

load_dotenv()

mcp_client = MCPClient(
    {
        "transport": "streamable-http",  # hyphen required — not streamable_http
        "url": os.environ["CIVIC_URL"],
        "headers": {"Authorization": f"Bearer {os.environ['CIVIC_TOKEN']}"},
    }
)
tools = mcp_client.get_tools()
print(f"{len(tools)} tools loaded")

model = LiteLLMModel(model_id="anthropic/claude-sonnet-4-6")
agent = CodeAgent(tools=tools, model=model)
The transport key must be "streamable-http" with a hyphen. Using "streamable_http" with an underscore will fail. Pass a flat dict to MCPClient — not a nested {"server_name": {...}} structure.

Running the Agent

result = agent.run("What events do I have today?")
print(result)

# Always disconnect when done
mcp_client.disconnect()

Production Configuration

For production agents, lock to a specific toolkit using the profile URL parameter:
CIVIC_URL=https://nexus.civic.com/hub/mcp?profile=your-production-toolkit

Reference Implementation

smolagents-reference-implementation-civic

Complete implementation with FastAPI chat UI and deployment guide

Next Steps

Agent Deployment

Production deployment guide: profile locking, URL params, authentication

Guardrails

Constrain what tools your agent can call

Audit Trail

Query what your agent did via Civic Chat

Get Credentials

Token generation and URL parameter reference