Mettre en place un serveur MCP en Python 3.13
Qu’est ce qu’un serveur MCP (Model Context Protocole?)
Un serveur MCP est un webservice qui fournit de la data, cette data va servir de contexte pour l’IA générative. A la différence du RAG (Retrieval Augmented Generation), il n’est pas besoin de base vectorielle pour stocker des informations.
Le workflow est le suivant, le client IA (Claude Desktop) va requêter le serveur MCP pour retirer les informations dont il a besoin pour envoyer au LLM.(chatGPT par exemple).
Cette technologie inventée par Anthropic (à l’origine de Claude) est devenue très populaire. Je pense que c’est dû au fait qu’il n’est besoin que de connaissances existantes (Webservice) par les développeurs pour pouvoir taquiner les IA afin d’éviter les hallucination.
Mais cela va au delà des hallucination, un serveur MCP est un webservice à destination non du programmeur mais de l’IA générative. Je pense que c’est une bonne comparaison, l’IA (ou plutôt l’agent IA) va pouvoir décider en autonomie de requêter un serveur MCP pour chercher les information dont il a besoin?
Donc un serveur MCP est un webservice pour agent IA, au même titre qu’un webservice est un …. webservice pour un programmeur. Dans notre cas on va utiliser Claude Desktop comme « agent IA » ou plutôt comme Client IA.
Mise en place du serveur MCP dans Pycharm
Création de mon environnement virtuel
On crée le répertoire MCP puis on fait la commande :
vous avez un répertoire appelé MCP rentrez dedans $ python -m venv .venv # activez l'environnement virtuel (sous powershell) $ .\.venv\Scripts\Activate.ps1 #c'est activé (normalement) vous avez accès à la commande pip $ pip --version
Installation de uv
uv est un gestionnaire de paquet nouvelle génération écrite en RUST.
pip install uv puis avec uv on installe mcp uv add "mcp[cli]"
A partir de maintenant on va utiliser uv pour installer notre projet
uv init # la commande tree -L 2 nous donne la structure suivante . |-- README.md |-- main.py |-- .venv | |-- Include | |-- Lib | |-- Scripts | `-- pyvenv.cfg |-- pyproject.toml `-- uv.lock
Pour install tree dans Windows Gitbash, il faut télécharger l’EXE et le mettre dans C:\Program Files\Git\usr\bin, un tuto est accessible sur ce lien.
Le soucis c’est que mcp s’attends à ce que le dossier environnement virtuel soit nommé .venv, si vous faites la commande:
$ uv run mcp warning: `VIRTUAL_ENV=mcpvenv` does not match the project environment path `.venv` and will be ignored; use `--active` to target the active environment instead Désativez l'environnement avec $ deactivate si un .venv est présent, exécutez le venv de ce répertoire.
Exemple rapide de serveur MCP:
#server.py
from mcp.server.fastmcp import FastMCP
# Create an MCP server
mcp = FastMCP("Demo")
# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
"""Get a personalized greeting"""
return f"Hello, {name}!"
# Add a prompt
@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:
"""Generate a greeting prompt"""
styles = {
"friendly": "Please write a warm, friendly greeting",
"formal": "Please write a formal, professional greeting",
"casual": "Please write a casual, relaxed greeting",
}
return f"{styles.get(style, styles['friendly'])} for someone named {name}."
Pour le faire tourner
mcp dev server.py #il vous sera demandé d'installer le paquet @modelcontextprotocol/inspector@0.17.0
Source: https://composio.dev/blog/mcp-server-step-by-step-guide-to-building-from-scrtch















