Skip to main content

Standard I/O (stdio) Clients

For stdio clients, there is a Pond MCP binary that you can download and run directly. This is located at

/Applications/Pond.app/Contents/MacOS/pond_mcp_server

You'll need to register your local app with Pond to run the server properly. To do this, press "Connect a new app" in Pond, choose an app name that doesn't conflict with existing ones, and get the APP_ID and the POND_ACCESS_TOKEN from the JSON snippet.

Now make sure to run the server with the following environment variables:

TRANSPORT=stdio
APP_ID=your_app_id
POND_ACCESS_TOKEN=your_access_token

Example

If you're writing an MCP client from scratch, you should first follow the official tutorial here for making a Python client. Once you get that working, replace the following functions in your code:

async def connect_to_server(
self,
server_binary_path: str,
env: dict[str, str]
):
"""Connect to an MCP server binary

Args:
server_binary_path: Path to the server binary
env: Environment variables to set for the server
"""

server_params = StdioServerParameters(
command=server_binary_path,
env=env
)

stdio_transport = await self.exit_stack.enter_async_context(stdio_client(server_params))
self.stdio, self.write = stdio_transport
self.session = await self.exit_stack.enter_async_context(ClientSession(self.stdio, self.write))

await self.session.initialize()

# List available tools
response = await self.session.list_tools()
tools = response.tools
print("\nConnected to server with tools:", [tool.name for tool in tools])

And the main function:

async def main():
SERVER_BINARY_PATH = "/Applications/Pond.app/Contents/MacOS/pond_mcp_server"
APP_ID = "your_app_id"
secret_key = input("Enter your Pond access token: ")

env = {
"TRANSPORT": "stdio",
"APP_ID": APP_ID,
"POND_ACCESS_TOKEN": secret_key
}

client = MCPClient()
try:
await client.connect_to_server(SERVER_BINARY_PATH, env)
await client.chat_loop()
finally:
await client.cleanup()