Model Context Protocol (MCP) Implementation
A robust implementation of the Model Context Protocol (MCP) that enables AI models to interact with external tools and services through a standardized protocol.
🌟 Features
- 🚀 Implementation of the Model Context Protocol (MCP)
- 🤖 Integration with Anthropic's Claude AI model
- 🛠️ Tool execution system with JSON-RPC communication
- 🔐 Environment variable configuration for API keys
- ⏰ Example tool implementation (get_current_time)
📋 Prerequisites
- Python 3.11 or higher
- Anthropic API key
- pip (Python package installer)
🚀 Installation
- Clone the repository:
git clone <your-repository-url>
cd <repository-name>
- Install the required dependencies:
pip install -r requirements.txt
- Create a
.envfile in the root directory and add your Anthropic API key:
ANTHROPIC_API_KEY=your_api_key_here
📁 Project Structure
.
├── chatbot.py # Main client implementation
├── mcp_server.py # Server implementation
├── requirements.txt # Python dependencies
└── .env # API key configuration (not in repo)
💻 Usage
- Start the chatbot:
python chatbot.py
- Interact with the chatbot in the terminal:
- Ask questions that might require tool usage
- Type "exit" to quit the program
📝 Example Interaction
User: What time is it?
Assistant: Let me check the current time for you.
Found 1 tool calls
Tool get_current_time result: 2024-03-26 15:30:45
Assistant: The current time is 2024-03-26 15:30:45.
🔧 How It Works
- The
MCPClientclass manages communication with the MCP server using JSON-RPC - When a user sends a message, it's processed by Claude
- If Claude determines a tool is needed, it makes a tool call
- The tool call is executed by the MCP server
- The result is sent back to Claude for final response generation
🔒 Security
- 🔑 API keys are stored in
.envfile and not committed to the repository - 🚫 The
.envfile is included in.gitignoreto prevent accidental commits
🤝 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.
🙏 Acknowledgments
- Anthropic for the Claude AI model
- The Model Context Protocol specification
