This project enables powerful, LLM-agnostic interactions with Claude 3.7 Sonnet, either via the Claude Desktop (MCP GUI) or directly through a command-line client using AWS Bedrock and the MCP protocol.
You can interact with Claude in two ways:
Claude Desktop provides a graphical interface for working with Claude via the MCP protocol. It is ideal for users who want a visual tool experience.
- GUI-based interaction with Claude
- Tool registration and calls via local or remote servers
- Plug-and-play tool development and testing
-
Start Claude Desktop
- Run the application
- Point it to your local or remote MCP-compatible tool server (
fastmcp install server_name.py
)
-
Connect a tool server
- Claude Desktop uses MCP’s
stdio
orhttp
transport to connect to tool providers.
- Claude Desktop uses MCP’s
-
Start chatting
- You can test tool calling, observe Claude's responses, and debug tool output.
📦 For more info, visit: https://github.com/ai-sdk/mcp
This CLI tool connects to Claude through AWS Bedrock and automatically handles tool calling using the MCP protocol.
- CLI-driven interaction with Claude 3.7 Sonnet
- Automatic tool discovery via MCP
- Tool call execution and response routing
- Rich UI with markdown, syntax highlighting, and spinners
- Lightweight and extensible
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/your-username/claude-mcp-client.git
cd claude-mcp-client
uv venv .venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
uv pip install -r requirements.txt
Create a .env
file in the root:
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
AWS_REGION=us-east-1
AUTHTOKEN=bltsomething
BRAND_KIT_UID=cssomething
🧠 Model used:
us.anthropic.claude-3-7-sonnet-20250219-v1:0
python client.py ./brand-kit/knowledge-vault/crud.py
# tool_server.py
from mcp.server.fastmcp import FastMCP
server = FastMCP()
@server.tool()
class AddTool(Tool):
name = "add"
description = "Adds two numbers"
input_schema = {"a": "number", "b": "number"}
async def call(self, input):
return input["a"] + input["b"]
if __name__ == "__main__":
server.run()
- The CLI maintains a conversation history (configurable)
- Claude can detect when a tool is needed and call it automatically
- Tool responses are routed back to Claude for follow-up
- Everything is streamed and displayed beautifully in your terminal
Claude (via AWS Bedrock)
|
Client.py
|
┌────────────┐
│ MCP Server │ <── Tool: Python or JS
└────────────┘
The client ensures graceful shutdown using AsyncExitStack
and aclose()
to clean up all sessions.
Here's a quick look at Claude Desktop in action:
MIT License