MCP
Code examples
Five ways to do the same thing: connect to https://copperheadplumbingreviews.com/mcp, list tools, call get_business, then search the top 5-star reviews.
TypeScript
// npm i @modelcontextprotocol/sdk
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const transport = new StreamableHTTPClientTransport(new URL('https://copperheadplumbingreviews.com/mcp'));
const client = new Client({ name: 'example-client', version: '1.0.0' });
await client.connect(transport);
// List the available tools
const { tools } = await client.listTools();
console.log(tools.map((t) => t.name));
// Call get_business
const business = await client.callTool({ name: 'get_business', arguments: {} });
console.log(business.content);
// Find the 3 most relevant 5-star reviews
const reviews = await client.callTool({
name: 'search_reviews',
arguments: { rating: 5, limit: 3 },
});
console.log(reviews.content);
await client.close();Python
# pip install mcp
import asyncio
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async def main():
async with streamablehttp_client("https://copperheadplumbingreviews.com/mcp") as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
# List the available tools
tools = await session.list_tools()
print([t.name for t in tools.tools])
# Call get_business
business = await session.call_tool("get_business", {})
print(business.content)
# Find the 3 most relevant 5-star reviews
reviews = await session.call_tool(
"search_reviews", {"rating": 5, "limit": 3}
)
print(reviews.content)
asyncio.run(main())Claude Desktop
// ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
// %APPDATA%\\Claude\\claude_desktop_config.json (Windows)
//
// Claude Desktop speaks MCP over stdio, so bridge the remote HTTP
// server with mcp-remote. Restart Claude Desktop after saving.
{
"mcpServers": {
"pushbuttonreviews-10544": {
"command": "npx",
"args": [
"mcp-remote",
"https://copperheadplumbingreviews.com/mcp"
]
}
}
}cURL
# 1) Initialize a session. The streamable-http transport requires the
# SSE Accept header and returns a session id in the response headers.
curl -i -X POST 'https://copperheadplumbingreviews.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": { "name": "curl", "version": "1.0" }
}
}'
# 2) Call get_business (pass the Mcp-Session-Id from step 1's response headers).
curl -X POST 'https://copperheadplumbingreviews.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'Mcp-Session-Id: <session-id-from-step-1>' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_business","arguments":{}}}'
# 3) Search the 3 most relevant 5-star reviews.
curl -X POST 'https://copperheadplumbingreviews.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'Mcp-Session-Id: <session-id-from-step-1>' \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search_reviews","arguments":{"rating":5,"limit":3}}}'Anthropic API
# pip install anthropic
# The Messages API can attach a remote MCP server directly via mcp_servers.
# It connects, lists tools, and calls get_business / search_reviews for you.
import anthropic
client = anthropic.Anthropic() # reads ANTHROPIC_API_KEY
message = client.beta.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
extra_headers={"anthropic-beta": "mcp-client-2025-04-04"},
mcp_servers=[
{
"type": "url",
"url": "https://copperheadplumbingreviews.com/mcp",
"name": "pushbuttonreviews-10544",
}
],
messages=[
{
"role": "user",
"content": "Summarize Copperhead Plumbing LLC and quote 3 five-star reviews.",
}
],
)
print(message.content)