Remote MCP
Connect an agent to a remote MCP server, scope its actions, and run queries against external systems — without rebuilding tools from scratch.
Prerequisites:
- aiXplain account and API key (get one ↗)
pip install aixplain
Quick start
from aixplain import Aixplain
aix = Aixplain(api_key="YOUR_API_KEY")
# Create and save the MCP tool
mcp_tool = aix.Tool(
integration="aixplain/mcp-server",
name="Remote MCP Tool",
config={"url": "https://remote.mcpservers.org/fetch/mcp"},
)
mcp_tool.save()
mcp_tool.allowed_actions = ["fetch"]
# Create an agent and run
agent = aix.Agent(
name="MCP Agent",
description="Fetches a URL via remote MCP and summarises.",
instructions="Use the MCP tool to fetch page content and summarise key points.",
tools=[mcp_tool],
)
response = agent.run(query="Give me information about the aiXplain website.")
print(response.data.output)
Transport protocols
aiXplain Remote MCP supports both standard MCP transport protocols:
| Protocol | URL pattern | Best for |
|---|---|---|
| HTTP | http://host:port/mcp | Stateless tools — fetch, search, retrieval |
| SSE | http://host:port/sse | Streaming or event-based servers, partial outputs |
Choose based on your server's capabilities and interaction pattern.
Step 1: Create the MCP tool
mcp_tool = aix.Tool(
integration="aixplain/mcp-server",
name="Remote MCP Tool",
config={"url": "https://remote.mcpservers.org/fetch/mcp"},
)
mcp_tool.save()
save() persists the tool and makes it usable inside agents.
Step 2: Explore available actions
Inspect what the MCP server exposes before scoping:
print(mcp_tool.list_actions())
# Inspect a specific action
mcp_tool.actions["fetch"]
Step 3: Scope allowed actions
Restrict the tool to only the actions your agent needs:
mcp_tool.allowed_actions = ["fetch"]
When allowed_actions is None or [], all server actions are exposed. Scoping reduces parameter bloat and prevents the agent from using actions you haven't reviewed.
Step 4: Test the tool directly
Verify the tool works before attaching it to an agent:
result = mcp_tool.run(data={"url": "https://www.aixplain.com"})
print(result)
Step 5: Create and run the agent
mcp_agent = aix.Agent(
name="Remote MCP Demo Agent",
description="Fetches a page via MCP and summarises.",
instructions="Call the MCP tool to fetch page content, then summarise the key information in bullets.",
tools=[mcp_tool],
)
response = mcp_agent.run(query="Summarise key info about https://aixplain.com")
print(response.data.output)
Use progress_format="logs" to inspect tool invocations during debugging:
response = mcp_agent.run(
query="Give me information about the aiXplain website.",
progress_format="logs",
progress_verbosity=1,
)
print(response.data.output)
Full example
from aixplain import Aixplain
aix = Aixplain(api_key="YOUR_API_KEY")
# Tool
mcp_tool = aix.Tool(
integration="aixplain/mcp-server",
name="Remote MCP Tool",
config={"url": "https://remote.mcpservers.org/fetch/mcp"},
)
mcp_tool.save()
mcp_tool.allowed_actions = ["fetch"]
# Agent
mcp_agent = aix.Agent(
name="Remote MCP Demo Agent",
description="Fetches a URL and summarises.",
instructions="Use the MCP tool to fetch content, then summarise in 5 concise bullets.",
tools=[mcp_tool],
)
# Run
response = mcp_agent.run(query="Summarise https://aixplain.com")
print(response.data.output)
Troubleshooting
Agent doesn't invoke the tool Make the instructions explicit: tell the agent to use the MCP tool by name for the relevant task.
Connection or timeout errors Check the MCP server URL, network egress rules, and any firewall restrictions on the server side.
Too many parameters / agent ignores some actions
Overexposed actions inflate parameter count. Tighten allowed_actions to only what you need.
Invalid action name
Confirm action identifiers with mcp_tool.list_actions().
Tool not found
Ensure mcp_tool.save() was called after creation.