modelcontextprotocol / modelcontextprotocol/python-sdk

FastMCP: Support dynamic annotation updates

Abierto
#1,475 2 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

enhancement improves spec compliance P2
Lenguaje dominante
Python
Estrellas
24.3k
Forks
4k
Merge medio
1 d 1 h
PR fusionados (30 d)
31

Descripción

Problem

FastMCP will support resource annotations (audience, priority, lastModified) via the @mcp.resource() decorator (see #1468). However, annotations are set once at decoration time and cannot be updated as the server runs.

This is problematic for lastModified especially. If you annotate a file resource, there's no easy way to keep the timestamp current as the file changes:

@mcp.resource("file://docs/readme.md", annotations=Annotations(
    audience=["user"],
    lastModified="2025-01-12T15:00:58Z"
))
def read_readme() -> str:
    return open("readme.md").read()

Once deployed, this annotation is stale. If the file updates tomorrow, clients see outdated metadata.

Solution

Allow annotations to be updated dynamically. Possible approaches:

  • Provide a method to update resource annotations at runtime
  • Allow annotation callables/lambdas that compute values on each list_resources() call
  • Return fresh annotations from resource handler functions

This would enable:

  • Accurate lastModified timestamps from file mtimes
  • Dynamic audience/priority based on server state
  • Better integration with external data sources

Issue written by Claude, reviewed by @maxisbey

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con la ruta de registro de FastMCP @mcp.resource() y el comportamiento de list_resources() mencionado en el issue. Compara los enfoques propuestos de actualización en tiempo de ejecución, callable y retorno del handler, y luego define cómo una implementación mantendría actualizadas para los clientes las anotaciones audience, priority y lastModified.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
api
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.