Documentation Index
Fetch the complete documentation index at: https://docs.definable.ai/llms.txt
Use this file to discover all available pages before exploring further.
This guide walks you through connecting to an MCP server, discovering its tools, and using them in an agent.
Prerequisites
- An MCP server to connect to (we’ll use the filesystem server from npm)
- Node.js installed (for
npx)
Step 1: Define the Server
Create a configuration for the MCP server:
from definable.mcp import MCPConfig, MCPServerConfig
config = MCPConfig(servers=[
MCPServerConfig(
name="filesystem",
transport="stdio",
command="npx",
args=["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
),
])
Wrap the configuration in an MCPToolkit:
from definable.mcp import MCPToolkit
toolkit = MCPToolkit(config=config)
Step 3: Connect and Use
Use the toolkit as a context manager to manage the server connection lifecycle:
from definable.agent import Agent
from definable.model import OpenAIChat
async with toolkit:
# Inspect available tools
for t in toolkit.tools:
print(f" {t.name}: {t.description}")
# Create an agent with MCP tools
agent = Agent(
model=OpenAIChat(id="gpt-4o"),
toolkits=[toolkit],
instructions="You can read and write files. Help the user with file operations.",
)
output = await agent.arun("Create a file called hello.txt with 'Hello, MCP!' in /tmp")
print(output.content)
Complete Example
import asyncio
from definable.agent import Agent
from definable.mcp import MCPToolkit, MCPConfig, MCPServerConfig
from definable.model import OpenAIChat
async def main():
config = MCPConfig(servers=[
MCPServerConfig(
name="filesystem",
transport="stdio",
command="npx",
args=["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
),
])
async with MCPToolkit(config=config) as toolkit:
agent = Agent(
model=OpenAIChat(id="gpt-4o"),
toolkits=[toolkit],
)
output = await agent.arun("List the files in /tmp and tell me what's there.")
print(output.content)
asyncio.run(main())
Using SSE or HTTP Transports
For remote servers, use SSE or HTTP:
MCPServerConfig(
name="remote",
transport="sse",
url="https://mcp-server.example.com/sse",
)
Sync Usage
If you’re not in an async context, use the sync wrappers:
with MCPToolkit(config=config) as toolkit:
agent = Agent(model=OpenAIChat(id="gpt-4o"), toolkits=[toolkit])
output = agent.run("List files in /tmp")
print(output.content)
Next Steps