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:

  • API: http://localhost:8001
  • Swagger Docs: http://localhost:8001/docs
  • ReDoc: http://localhost:8001/redoc

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.3.tar.gz (72.0 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.3-py3-none-any.whl (92.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mcp_open_client-0.9.3.tar.gz
  • Upload date:
  • Size: 72.0 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.3.tar.gz
Algorithm Hash digest
SHA256 2a90d1b2c00540e4c80def30fd915cb6dfe744e43e51c482804a31ace2b88a5a
MD5 734017d54eda4454caf47b4787f58034
BLAKE2b-256 bb0c4e688839dbf9586f54f5aee4b7a4e4d47de802f3f8119d27fa418e32544f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mcp_open_client-0.9.3-py3-none-any.whl
Algorithm Hash digest
SHA256 28f4a0b0852c801f1e9f767f50befbb1ee219dbdef27363ee7fee49756359aee
MD5 ea3fd0e0bb92b280d95827553eade73a
BLAKE2b-256 a28357db2a192419623ee3128908359dc9556fd72d4cf359445b453b5331db91

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