Skip to main content
Connect a LlamaIndex agent to Civic using BasicMCPClient and McpToolSpec. LlamaIndex’s MCP integration discovers all available tools and exposes them to a FunctionAgent.

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 llama-index llama-index-tools-mcp llama-index-llms-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

Use BasicMCPClient to connect (URL is positional, not a keyword argument), then convert tools with McpToolSpec:
import os
import asyncio
from dotenv import load_dotenv
from llama_index.tools.mcp import BasicMCPClient, McpToolSpec
from llama_index.llms.anthropic import Anthropic
from llama_index.core.agent.workflow import FunctionAgent

load_dotenv()

async def main():
    mcp_client = BasicMCPClient(
        os.environ["CIVIC_URL"],  # positional — not url=
        headers={"Authorization": f"Bearer {os.environ['CIVIC_TOKEN']}"},
    )
    spec = McpToolSpec(client=mcp_client)
    tools = await spec.to_tool_list_async()
    print(f"{len(tools)} tools loaded")

    llm = Anthropic(model="claude-sonnet-4-6")
    agent = FunctionAgent(
        tools=tools,
        llm=llm,
        system_prompt="You are a helpful assistant with access to Civic tools.",
    )
    response = await agent.run("What events do I have today?")
    print(response)

asyncio.run(main())
Pass the URL as a positional argument to BasicMCPClient — using url= as a keyword will raise an error. Use FunctionAgent from llama_index.core.agent.workflowReActAgent.from_tools is not available in LlamaIndex v0.14+.

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

llamaindex-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