add code example

This commit is contained in:
Ishaan Jaff 2025-03-29 16:48:38 -07:00
parent 79e8bbbfd4
commit f2885bfb65

View file

@ -0,0 +1,92 @@
import React from 'react';
const codeString = `import asyncio
from openai import AsyncOpenAI
from openai.types.chat import ChatCompletionUserMessageParam
from mcp import ClientSession
from mcp.client.sse import sse_client
from litellm.experimental_mcp_client.tools import (
transform_mcp_tool_to_openai_tool,
transform_openai_tool_call_request_to_mcp_tool_call_request,
)
async def main():
# Initialize clients
client = AsyncOpenAI(
api_key="sk-1234",
base_url="http://localhost:4000"
)
# Connect to MCP
async with sse_client("http://localhost:4000/mcp/") as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
mcp_tools = await session.list_tools()
print("List of MCP tools for MCP server:", mcp_tools.tools)
# Create message
messages = [
ChatCompletionUserMessageParam(
content="Send an email about LiteLLM supporting MCP",
role="user"
)
]
# Request with tools
response = await client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=[transform_mcp_tool_to_openai_tool(tool) for tool in mcp_tools.tools],
tool_choice="auto"
)
# Handle tool call
if response.choices[0].message.tool_calls:
tool_call = response.choices[0].message.tool_calls[0]
if tool_call:
# Convert format
mcp_call = transform_openai_tool_call_request_to_mcp_tool_call_request(
openai_tool=tool_call.model_dump()
)
# Execute tool
result = await session.call_tool(
name=mcp_call.name,
arguments=mcp_call.arguments
)
print("Result:", result)
# Run it
asyncio.run(main())`;
export const CodeExample: React.FC = () => {
return (
<div className="bg-white rounded-lg shadow h-full">
<div className="border-b px-4 py-3">
<h3 className="text-base font-medium text-gray-900">Using MCP Tools</h3>
</div>
<div className="p-4">
<div className="flex items-center gap-2 mb-2">
<div className="flex-1">
<div className="text-sm font-medium text-gray-700">Python integration</div>
</div>
<button
className="text-xs bg-gray-100 hover:bg-gray-200 text-gray-600 px-2 py-1 rounded-md transition-colors"
onClick={() => {
navigator.clipboard.writeText(codeString);
}}
>
Copy
</button>
</div>
<div className="overflow-auto rounded-md bg-gray-50 border" style={{ maxHeight: "calc(100vh - 280px)" }}>
<pre className="p-3 text-xs font-mono text-gray-800 whitespace-pre overflow-x-auto">
{codeString}
</pre>
</div>
</div>
</div>
);
};