Skip to main content

An open MCP client implementation

Project description

MCP Open Client

PyPI version Python 3.10+ License: MIT

A powerful Python client and REST API for the Model Context Protocol (MCP), enabling seamless integration with MCP servers and AI providers.

Features

  • FastAPI REST API - Full-featured API server for managing MCP servers
  • Rich CLI - Beautiful command-line interface with colored output
  • AI Provider Integration - Support for OpenAI, Anthropic, and custom providers
  • Process Management - Automatic lifecycle management for MCP servers
  • Tool Discovery - Automatic detection and execution of MCP server tools
  • Conversation Management - Persistent conversation storage and retrieval
  • Type Safe - Full type hints with Pydantic v2

Installation

From PyPI (Recommended)

pip install mcp-open-client

From Source

git clone https://github.com/alejoair/mcp-open-client-v2.git
cd mcp-open-client-v2
pip install -e .

Quick Start

1. Start the API Server

mcp-open-client api serve --port 8001

The API server will be available at:

2. Add an MCP Server

mcp-open-client api add \
  --name "filesystem" \
  --command "npx" \
  --args "-y" \
  --args "@modelcontextprotocol/server-filesystem" \
  --args "."

3. Start the Server

mcp-open-client api start <server-id>

4. List Available Tools

mcp-open-client api tools <server-id>

CLI Reference

Direct Connection Commands

Connect directly to MCP servers without the API:

# Connect and test
mcp-open-client connect http://localhost:3000

# List resources
mcp-open-client list-resources http://localhost:3000

# List tools
mcp-open-client list-tools http://localhost:3000

# Call custom method
mcp-open-client call http://localhost:3000 method-name --params '{"key": "value"}'

API Server Management

Manage MCP servers through the REST API:

# Start API server
mcp-open-client api serve --port 8001 --host 127.0.0.1

# Server operations
mcp-open-client api add --name <name> --command <cmd> --args <arg>
mcp-open-client api list [--format json|table]
mcp-open-client api start <server-id>
mcp-open-client api stop <server-id>
mcp-open-client api tools <server-id> [--format json|table]

AI Provider Management

Configure AI providers for chat completions:

# Add provider
mcp-open-client api providers add \
  --name "OpenAI" \
  --type openai \
  --base-url "https://api.openai.com/v1" \
  --api-key "sk-..."

# List providers
mcp-open-client api providers list

# Show provider details
mcp-open-client api providers show <provider-id>

# Update provider
mcp-open-client api providers update <provider-id> \
  --name "New Name" \
  --api-key "new-key"

# Test connection
mcp-open-client api providers test <provider-id>

# Set as default
mcp-open-client api providers set-default <provider-id>

# Enable/disable
mcp-open-client api providers enable <provider-id>
mcp-open-client api providers disable <provider-id>

Model Configuration

Configure small and main models for providers:

# Set model
mcp-open-client api providers models set <provider-id> small \
  --name "gpt-3.5-turbo" \
  --max-tokens 4096

# List models
mcp-open-client api providers models list <provider-id>

# Remove model
mcp-open-client api providers models remove <provider-id> small

REST API Endpoints

Server Management

POST   /servers/                    # Add server
GET    /servers/                    # List servers
POST   /servers/{id}/start          # Start server
POST   /servers/{id}/stop           # Stop server
GET    /servers/{id}/tools          # Get server tools
DELETE /servers/{id}                # Remove server

Provider Management

POST   /providers/                  # Add provider
GET    /providers/                  # List providers
GET    /providers/{id}              # Get provider
PUT    /providers/{id}              # Update provider
PATCH  /providers/{id}              # Partial update
DELETE /providers/{id}              # Delete provider
POST   /providers/{id}/enable       # Enable provider
POST   /providers/{id}/disable      # Disable provider
POST   /providers/{id}/set-default  # Set as default
POST   /providers/{id}/test         # Test connection

Conversation Management

POST   /conversations               # Create conversation
GET    /conversations               # List conversations
GET    /conversations/{id}          # Get conversation
PUT    /conversations/{id}          # Update conversation
DELETE /conversations/{id}          # Delete conversation
POST   /conversations/{id}/chat     # Send message
GET    /conversations/{id}/messages # Get messages
POST   /conversations/{id}/context  # Add context
GET    /conversations/{id}/tools    # Get enabled tools

Chat Completions (OpenAI-Compatible)

POST   /v1/chat/completions         # Create chat completion
POST   /v1/chat/stream               # Stream completion
GET    /v1/models                    # List models

Configuration

Configuration files are stored in ~/.mcp-open-client/:

  • mcp_servers.json - MCP server configurations
  • ai_providers.json - AI provider configurations
  • conversations/ - Conversation storage directory

Development

Install Development Dependencies

pip install -e ".[dev]"

Code Quality Tools

# Format code
black mcp_open_client/
isort mcp_open_client/

# Lint
flake8 mcp_open_client/

# Type check
mypy mcp_open_client/

# Run tests
pytest

Pre-commit Hooks

# Install hooks
pre-commit install

# Run on all files
pre-commit run --all-files

Architecture

┌─────────────────────────────────────────────┐
│           mcp-open-client CLI               │
├─────────────────────────────────────────────┤
│                                             │
│  Direct Commands      API Commands         │
│  ├─ connect          ├─ api serve          │
│  ├─ list-resources   ├─ api add            │
│  ├─ list-tools       ├─ api start          │
│  └─ call             └─ api providers      │
│                                             │
└─────────────────┬───────────────────────────┘
                  │
                  ▼
    ┌─────────────────────────┐
    │   FastAPI REST API      │
    │   (Port 8001)           │
    └─────────────┬───────────┘
                  │
        ┌─────────┴─────────┐
        ▼                   ▼
┌───────────────┐   ┌──────────────┐
│ MCP Servers   │   │ AI Providers │
│ (FastMCP)     │   │ (OpenAI API) │
└───────────────┘   └──────────────┘

Chat Completion Example

import requests

response = requests.post("http://localhost:8001/v1/chat/completions", json={
    "model": "gpt-4",
    "messages": [
        {"role": "user", "content": "List files in current directory"}
    ],
    "model_type": "main"
})

print(response.json())

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Links

Acknowledgments

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

mcp_open_client-0.9.11.tar.gz (73.3 kB view details)

Uploaded Source

Built Distribution

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

mcp_open_client-0.9.11-py3-none-any.whl (95.2 kB view details)

Uploaded Python 3

File details

Details for the file mcp_open_client-0.9.11.tar.gz.

File metadata

  • Download URL: mcp_open_client-0.9.11.tar.gz
  • Upload date:
  • Size: 73.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for mcp_open_client-0.9.11.tar.gz
Algorithm Hash digest
SHA256 c9aa05ef5b34f958b426c5540d704b0145c4e5d2d7081b73c5a0e74361959109
MD5 d8df30fb94362688f70093d21c69776b
BLAKE2b-256 fe11ccd3b39e16cf8854afa862f5dc6c98cd6f3af545cea8a4262cb03f19417c

See more details on using hashes here.

File details

Details for the file mcp_open_client-0.9.11-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_open_client-0.9.11-py3-none-any.whl
Algorithm Hash digest
SHA256 eed7367c90ac67eb09e2236b05bd2301a274bdd3eae069b141e2885b06d88784
MD5 d6df5cbac1933a9d8f9c0cab2745803b
BLAKE2b-256 b9bea53f35b4af146c5f55df94557e9525e1958094ac6e9d9b7d97048db64758

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