| name | modify-agent |
| description | Modify agent code, add tools, or change configuration. Use when: (1) User says 'modify agent', 'add tool', 'change model', or 'edit agent.py', (2) Adding MCP servers to agent, (3) Changing agent instructions, (4) Understanding SDK patterns. |
Modify the Agent
Main File
agent_server/agent.py - Agent logic, model selection, instructions, MCP servers
Key Files
| File | Purpose |
|---|
agent_server/agent.py | Agent logic, model, instructions, MCP servers |
agent_server/start_server.py | FastAPI server + MLflow setup |
agent_server/evaluate_agent.py | Agent evaluation with MLflow scorers |
agent_server/utils.py | Databricks auth helpers, stream processing |
databricks.yml | Bundle config & resource permissions |
SDK Setup
import mlflow
from databricks_openai import AsyncDatabricksOpenAI
from agents import set_default_openai_api, set_default_openai_client, Agent
from agents.tracing import set_trace_processors
set_default_openai_client(AsyncDatabricksOpenAI())
set_default_openai_api("chat_completions")
set_trace_processors([])
mlflow.openai.autolog()
Adding MCP Servers
from databricks_openai.agents import McpServer
uc_server = McpServer(
url=f"{host}/api/2.0/mcp/functions/{catalog}/{schema}",
name="uc functions",
)
genie_server = McpServer(
url=f"{host}/api/2.0/mcp/genie/{space_id}",
name="genie space",
)
vector_server = McpServer(
url=f"{host}/api/2.0/mcp/vector-search/{catalog}/{schema}/{index}",
name="vector search",
)
agent = Agent(
name="my agent",
instructions="You are a helpful agent.",
model="databricks-claude-3-7-sonnet",
mcp_servers=[uc_server, genie_server, vector_server],
)
After adding MCP servers: Grant permissions in databricks.yml (see add-tools skill)
Changing the Model
Available models (check workspace for current list):
databricks-claude-3-7-sonnet
databricks-claude-3-5-sonnet
databricks-meta-llama-3-3-70b-instruct
agent = Agent(
name="my agent",
model="databricks-claude-3-7-sonnet",
...
)
Note: Some workspaces require granting the app access to the serving endpoint in databricks.yml. See the add-tools skill and examples/serving-endpoint.yaml.
Changing Instructions
agent = Agent(
name="my agent",
instructions="""You are a helpful data analyst assistant.
You have access to:
- Company sales data via Genie
- Product documentation via vector search
Always cite your sources when answering questions.""",
...
)
Running the Agent
from agents import Runner
messages = [{"role": "user", "content": "hi"}]
result = await Runner.run(agent, messages)
result = Runner.run_streamed(agent, input=messages)
async for event in result.stream_events():
pass
Converting to Responses API format: Use process_agent_stream_events() from agent_server/utils.py to convert streaming output to Responses API compatible format:
from agent_server.utils import process_agent_stream_events
result = Runner.run_streamed(agent, input=messages)
async for event in process_agent_stream_events(result.stream_events()):
yield event
External Resources
- databricks-openai SDK
- Agent examples
- Agent Framework docs
- Adding tools
- OpenAI Agents SDK
- Responses API
Next Steps
- Discover available tools: see discover-tools skill
- Grant resource permissions: see add-tools skill
- Test locally: see run-locally skill
- Deploy: see deploy skill