Single Toolkit MCP
For most use cases, we recommend using the quickstart. This provides dynamic tool access and a much better MCP experience with context management handled by us.
Install the SDK
pip install devcasternpm install @devcaster/coreCreate an MCP server
Initialize Devcaster
from devcaster import Devcaster
devcaster = Devcaster(api_key="YOUR_API_KEY")import { Devcaster } from '@devcaster/core';
const devcaster = new Devcaster({
apiKey: process.env.DEVCASTER_API_KEY
});Create server configuration
Before you begin: Create an auth configuration for your toolkit.
server = devcaster.mcp.create(
name="my-gmail-server",
toolkits=[{
"toolkit": "gmail",
"auth_config": "ac_xyz123"
}],
allowed_tools=["GMAIL_FETCH_EMAILS", "GMAIL_SEND_EMAIL"]
)
print(f"Server created: {server.id}")import { Devcaster } from '@devcaster/core';
const devcaster = new Devcaster({ apiKey: process.env.DEVCASTER_API_KEY });
// ---cut---
const server = await devcaster.mcp.create("my-gmail-server", {
toolkits: [
{
authConfigId: "ac_xyz123",
toolkit: "gmail"
}
],
allowedTools: ["GMAIL_FETCH_EMAILS", "GMAIL_SEND_EMAIL"]
});
console.log(`Server created: ${server.id}`);You can also create and manage MCP configs from the Devcaster dashboard.
Generate user URLs
Users must authenticate with the toolkits configured in your MCP server first. See authentication for details.
instance = devcaster.mcp.generate(user_id="user-123", mcp_config_id=server.id)
print(f"MCP Server URL: {instance['url']}")import { Devcaster } from '@devcaster/core';
const devcaster = new Devcaster({ apiKey: process.env.DEVCASTER_API_KEY });
const server = { id: 'my-gmail-server' };
// ---cut---
const instance = await devcaster.mcp.generate("user-123", server.id);
console.log("MCP Server URL:", instance.url);Use with AI providers
from openai import OpenAI
client = OpenAI(api_key="your-openai-api-key")
mcp_server_url = "https://backend.devcaster.dev/v3/mcp/YOUR_SERVER_ID?user_id=YOUR_USER_ID"
response = client.responses.create(
model="gpt-5",
tools=[{
"type": "mcp",
"server_label": "devcaster-server",
"server_url": mcp_server_url,
"require_approval": "never",
}],
input="What are my latest emails?",
)
print(response.output_text)from anthropic import Anthropic
client = Anthropic(api_key="your-anthropic-api-key")
mcp_server_url = "https://backend.devcaster.dev/v3/mcp/YOUR_SERVER_ID?user_id=YOUR_USER_ID"
response = client.beta.messages.create(
model="claude-sonnet-4-5",
max_tokens=1000,
messages=[{"role": "user", "content": "What are my latest emails?"}],
mcp_servers=[{
"type": "url",
"url": mcp_server_url,
"name": "devcaster-mcp-server"
}],
betas=["mcp-client-2025-04-04"]
)
print(response.content)import { MCPClient } from "@mastra/mcp";
import { openai } from "@ai-sdk/openai";
import { Agent } from "@mastra/core/agent";
const MCP_URL = "https://backend.devcaster.dev/v3/mcp/YOUR_SERVER_ID?user_id=YOUR_USER_ID";
const client = new MCPClient({
id: "mcp-client",
servers: {
devcaster: { url: new URL(MCP_URL) },
}
});
const agent = new Agent({
id: "assistant",
name: "Assistant",
instructions: "You are a helpful assistant that can read and manage emails.",
model: openai("gpt-4-turbo"),
tools: await client.getTools()
});
const res = await agent.generate("What are my latest emails?");
console.log(res.text);Server management
List servers
servers = devcaster.mcp.list()
print(f"Found {len(servers['items'])} servers")
# Filter by toolkit
gmail_servers = devcaster.mcp.list(toolkits="gmail", limit=20)import { Devcaster } from '@devcaster/core';
const devcaster = new Devcaster({ apiKey: 'your_api_key' });
// ---cut---
const servers = await devcaster.mcp.list({
toolkits: [],
authConfigs: [],
limit: 10,
page: 1
});
console.log(`Found ${servers.items.length} servers`);
// Filter by toolkit
const gmailServers = await devcaster.mcp.list({
toolkits: ["gmail"],
authConfigs: [],
limit: 20,
page: 1
});Get server details
server = devcaster.mcp.get("mcp_server_id")
print(f"Server: {server.name}")import { Devcaster } from '@devcaster/core';
const devcaster = new Devcaster({ apiKey: 'your_api_key' });
// ---cut---
const server = await devcaster.mcp.get("mcp_server_id");
console.log(`Server: ${server.name}`);Update a server
updated = devcaster.mcp.update(
server_id="mcp_server_id",
name="updated-name",
allowed_tools=["GMAIL_FETCH_EMAILS", "GMAIL_SEARCH_EMAILS"]
)import { Devcaster } from '@devcaster/core';
const devcaster = new Devcaster({ apiKey: 'your_api_key' });
// ---cut---
const updated = await devcaster.mcp.update("mcp_server_id", {
name: "updated-name",
allowedTools: ["GMAIL_FETCH_EMAILS", "GMAIL_SEARCH_EMAILS"]
});Delete a server
result = devcaster.mcp.delete("mcp_server_id")
if result['deleted']:
print("Server deleted")import { Devcaster } from '@devcaster/core';
const devcaster = new Devcaster({ apiKey: 'your_api_key' });
// ---cut---
const result = await devcaster.mcp.delete("mcp_server_id");
if (result.deleted) {
console.log("Server deleted");
}