Skip to main content

Client for joinly: Make your meetings accessible to AI Agents

Project description

joinly-client: Client for a conversational meeting agent used with joinly

Command line usage

Connect to a running joinly server and join a meeting:

uvx joinly-client --joinly-url http://localhost:8000/mcp/ <MeetingUrl>

Add other MCP servers using a configuration file:

{
    "mcpServers": {
        "localServer": {
            "command": "npx",
            "args": ["-y", "package@0.1.0"]
        },
        "remoteServer": {
            "url": "http://mcp.example.com",
            "auth": "oauth"
        }
    }
}
uvx joinly-client --mcp-config config.json <MeetingUrl>

Code usage

Direct use of run function:

import joinly_client.run

async def main():
    await joinly_client.run(
        joinly_url="http://localhost:8000/mcp/",
        meeting_url="<MeetingUrl>",
        llm_provider="openai",
        llm_model="gpt-4o-mini",
        prompt="You are joinly, a...",
        name="joinly",
        name_trigger=False,
        mcp_config=None,  # MCP servers configuration (dict)
        settings=None,  # settings propagated to joinly server (dict)
    )

Or with only the client and a custom agent:

import asyncio
from joinly_client import JoinlyClient
from joinly_client.types import TranscriptSegment


async def main():
    client = JoinlyClient(
        joinly_url="http://localhost:8000/mcp/",
        name="joinly",
        name_trigger=False,
        settings=None,
    )
    # optionally, load all tools from the server
    tool_list = await client.client.list_tools()

    async def on_utterance(segments: list[TranscriptSegment]) -> None:
        for segment in segments:
            print(f"Received utterance: {segment.text}")
            if "marco" in segment.text.lower():
                await client.client.call_tool("speak_text", {"text": "Polo!"})
    client.add_utterance_callback(on_utterance)

    async with client:
        await client.join_meeting("<MeetingUrl>")
        await asyncio.Event().wait()  # wait until cancelled

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

joinly_client-0.1.0.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

joinly_client-0.1.0-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file joinly_client-0.1.0.tar.gz.

File metadata

  • Download URL: joinly_client-0.1.0.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.17

File hashes

Hashes for joinly_client-0.1.0.tar.gz
Algorithm Hash digest
SHA256 534c756a1891c4b2e01a32e0760f8340bc60646990e8bda0966764633cb3966e
MD5 b4f7ebaf4ec694a1a80323c8d7aae81d
BLAKE2b-256 d33619d87770da2ca66fc2616178aa908e3786093e377b9994829ab7cff7c7dc

See more details on using hashes here.

File details

Details for the file joinly_client-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for joinly_client-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 77eb442679583b7f7d9daa3ebb10c06221204ab5e168b37d2781fc8d14e2a4e4
MD5 4f046388b6e76c9095d1875179a5eadd
BLAKE2b-256 0e8f5f394840b0b85d1743dc0058a6030f0f60b8c11fe2ee48cbb591144998e6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page