Skip to main content
Connect a CAMEL-AI agent to Civic using MCPToolkit with an HTTP-based MCPClient. CAMEL-AI’s toolkit discovers all Civic tools and exposes them to a ChatAgent.

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 camel-ai anthropic 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

Create an MCPClient with a ServerConfig, then connect the toolkit explicitly before use:
import os
import asyncio
from dotenv import load_dotenv
from camel.toolkits.mcp_toolkit import MCPToolkit
from camel.utils.mcp_client import MCPClient, ServerConfig
from camel.agents import ChatAgent
from camel.models import ModelFactory
from camel.types import ModelPlatformType

load_dotenv()

async def main():
    client = MCPClient(
        config=ServerConfig(
            url=os.environ["CIVIC_URL"],
            headers={"Authorization": f"Bearer {os.environ['CIVIC_TOKEN']}"},
        )
    )
    toolkit = MCPToolkit(clients=[client])

    await toolkit.connect()
    try:
        tools = toolkit.get_tools()
        print(f"{len(tools)} tools loaded")

        model = ModelFactory.create(
            model_platform=ModelPlatformType.ANTHROPIC,
            model_type="claude-sonnet-4-6",
        )
        agent = ChatAgent(
            system_message="You are a helpful assistant with access to Civic tools.",
            model=model,
            tools=tools,
        )

        response = agent.step("What events do I have today?")
        print(response.msgs[0].content)
    finally:
        await toolkit.disconnect()

asyncio.run(main())
Use await toolkit.connect() and await toolkit.disconnect() — MCPToolkit does not have a connection() async context manager method. Always disconnect in a finally block to avoid hanging connections.

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

camel-ai-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