Skip to main content
Glama

MCP Chat

by Ramsi-K
main.py1.69 kB
import asyncio import sys import os from dotenv import load_dotenv from contextlib import AsyncExitStack from mcp_client import MCPClient from core.claude import Claude from core.cli_chat import CliChat from core.cli import CliApp load_dotenv() # Anthropic Config claude_model = os.getenv("CLAUDE_MODEL", "") anthropic_api_key = os.getenv("ANTHROPIC_API_KEY", "") assert claude_model, "Error: CLAUDE_MODEL cannot be empty. Update .env" assert anthropic_api_key, ( "Error: ANTHROPIC_API_KEY cannot be empty. Update .env" ) async def main(): claude_service = Claude(model=claude_model) server_scripts = sys.argv[1:] clients = {} command, args = ( ("uv", ["run", "mcp_server.py"]) if os.getenv("USE_UV", "0") == "1" else ("python", ["mcp_server.py"]) ) async with AsyncExitStack() as stack: doc_client = await stack.enter_async_context( MCPClient(command=command, args=args) ) clients["doc_client"] = doc_client for i, server_script in enumerate(server_scripts): client_id = f"client_{i}_{server_script}" client = await stack.enter_async_context( MCPClient(command="uv", args=["run", server_script]) ) clients[client_id] = client chat = CliChat( doc_client=doc_client, clients=clients, claude_service=claude_service, ) cli = CliApp(chat) await cli.initialize() await cli.run() if __name__ == "__main__": if sys.platform == "win32": asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy()) asyncio.run(main())

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Ramsi-K/mcp-chatbot-cli'

If you have feedback or need assistance with the MCP directory API, please join our Discord server