Development Guide

This guide will help you set up your development environment and contribute to mcp_use.

Prerequisites

  • Python 3.8 or higher
  • Git
  • Node.js and npm (for MCP server dependencies)

Setting Up Development Environment

  1. Clone the repository:
git clone https://github.com/pietrozullo/mcp-use.git
cd mcp-use
  1. Install development dependencies:
pip install -e ".[dev]"
  1. Install pre-commit hooks:
pre-commit install

Code Style

mcp_use uses Ruff for code formatting and linting. The project follows these style guidelines:

  • Use type hints for all function parameters and return values
  • Follow PEP 8 style guide
  • Use docstrings for all public functions and classes
  • Keep functions focused and single-purpose

Running Tests

The project uses pytest for testing. To run the test suite:

pytest

For more specific test runs:

# Run tests with coverage
pytest --cov=mcp_use

# Run specific test file
pytest tests/test_client.py

# Run tests with verbose output
pytest -v

Documentation

Documentation is written in MDX format and uses Mintlify for rendering. To preview documentation changes:

  1. Install Mintlify CLI:
npm i -g mintlify
  1. Run the development server:
mintlify dev

Contributing

  1. Create a new branch for your feature:
git checkout -b feature/your-feature-name
  1. Make your changes and commit them:
git add .
git commit -m "Description of your changes"
  1. Push your changes and create a pull request:
git push origin feature/your-feature-name

Project Structure

mcp-use/
├── mcp_use/           # Main package code
├── tests/             # Test files
├── examples/          # Example usage
├── docs/             # Documentation
├── static/           # Static assets
└── pyproject.toml    # Project configuration

Adding New MCP Servers

To add support for a new MCP server:

  1. Create a new configuration template in the examples directory
  2. Add necessary server-specific code in the mcp_use package
  3. Update documentation with new server information
  4. Add tests for the new server functionality

Release Process

  1. Update version in pyproject.toml
  2. Update CHANGELOG.md
  3. Create a new release tag
  4. Build and publish to PyPI:
python -m build
python -m twine upload dist/*