An open MCP client implementation
Project description
MCP Open Client
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 configurationsai_providers.json- AI provider configurationsconversations/- 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.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Links
- PyPI: https://pypi.org/project/mcp-open-client/
- GitHub: https://github.com/alejoair/mcp-open-client-v2
- Issues: https://github.com/alejoair/mcp-open-client-v2/issues
Acknowledgments
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a90d1b2c00540e4c80def30fd915cb6dfe744e43e51c482804a31ace2b88a5a
|
|
| MD5 |
734017d54eda4454caf47b4787f58034
|
|
| BLAKE2b-256 |
bb0c4e688839dbf9586f54f5aee4b7a4e4d47de802f3f8119d27fa418e32544f
|
File details
Details for the file mcp_open_client-0.9.3-py3-none-any.whl.
File metadata
- Download URL: mcp_open_client-0.9.3-py3-none-any.whl
- Upload date:
- Size: 92.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28f4a0b0852c801f1e9f767f50befbb1ee219dbdef27363ee7fee49756359aee
|
|
| MD5 |
ea3fd0e0bb92b280d95827553eade73a
|
|
| BLAKE2b-256 |
a28357db2a192419623ee3128908359dc9556fd72d4cf359445b453b5331db91
|