import os
import uuid
from gravixlayer import GravixLayer
TEMPLATE = os.environ["GRAVIXLAYER_CLAUDE_TEMPLATE"]
ANTHROPIC_API_KEY = os.environ["ANTHROPIC_API_KEY"]
MCP_URL = os.environ["MCP_URL"] # e.g. https://mcp.example.com/mcp
MCP_TOKEN = os.environ["MCP_TOKEN"]
MCP_HOST = os.environ["MCP_HOST"] # e.g. mcp.example.com
client = GravixLayer()
provider = client.identity.providers.create(
name=f"anthropic-mcp-{uuid.uuid4().hex[:8]}",
provider_type="api_key",
secrets=[
{"key": "ANTHROPIC_API_KEY", "value": ANTHROPIC_API_KEY},
{"key": "MCP_TOKEN", "value": MCP_TOKEN},
],
)
policy = client.network_policies.create(
name=f"claude-mcp-{uuid.uuid4().hex[:8]}",
egress_mode="allowlist",
rules=[
{"destination": "api.anthropic.com", "port": 443, "protocol": "tcp"},
{"destination": MCP_HOST, "port": 443, "protocol": "tcp"},
],
)
runtime = client.runtime.create(
template=TEMPLATE,
providers=[provider.id],
network_policy_ids=[policy.id],
env_vars={
"ANTHROPIC_API_KEY": ANTHROPIC_API_KEY,
"MCP_TOKEN": MCP_TOKEN,
},
timeout=1800,
)
add = runtime.run_cmd(
command="claude",
args=[
"mcp",
"add",
"--transport",
"http",
"team-mcp",
MCP_URL,
"--header",
f"Authorization: Bearer {MCP_TOKEN}",
],
timeout=120,
)
print(add.stdout, add.stderr)
assert add.success, add.stderr
result = runtime.run_cmd(
command="claude",
args=[
"--dangerously-skip-permissions",
"-p",
"Use the team-mcp tools to list available tools and summarize them in three bullets.",
"--output-format",
"text",
],
timeout=900,
)
print(result.stdout)
print("exit_code:", result.exit_code)
runtime.kill()
client.identity.providers.delete(provider.id)
client.network_policies.delete(policy.id)