Token导航 LogoToken导航

MCP Server · 开发工具

Fastapi Fastmcp Autogen

一个自动生成FastAPI REST端点和FastMCP工具的项目,减少重复代码编写。

stdio官方级别未说明来源级核验工具 0
代码生成API开发PythonFastMCP自动化

快速开始

作者 / 组织
TinoFerrucci
提供方
TinoFerrucci
运行时
Python

工具数量

0

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

1

仓库热度

收录来源

1 个

MCP World

选型结论

Fastapi Fastmcp Autogen 属于开发工具类 MCP Server,公开资料标注 0 个工具,通过stdio 本地进程接入,客户端适配情况以官方文档为准,有可以直接复制的安装命令;接入前先确认权限范围。

分类

开发工具

传输方式

stdio

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

安装命令

uv run uvicorn main:app --reload

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 0 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

FastAPI + FastMCP Auto-Generator

Harto de escribir el mismo código dos veces para tener una API REST y un servidor MCP? Este proyecto resuelve eso generando automáticamente una cosa desde la otra.

El problema

Cuando trabajas con FastAPI y FastMCP, terminas duplicando lógica:

# Primero defines la tool MCP
@mcp.tool()
def sumar(a: float, b: float) -> dict:
    return {"resultado": a + b}

# Luego defines el endpoint (el mismo código otra vez)
@app.post("/sumar")
async def sumar_endpoint(req: Request):
    return {"resultado": req.a + req.b}

Esto es tedioso y propenso a errores. Si cambias algo, tienes que acordarte de cambiarlo en ambos lados.

La solución

Dos enfoques dependiendo de tu caso de uso:

main.py - Escribes las herramientas MCP, se generan los endpoints automáticamente main2.py - Escribes los endpoints FastAPI, se generan las herramientas MCP automáticamente

Eliges el punto de partida que te convenga más y el otro lado se crea solo.

Instalación

git clone 
cd mcp_test
uv sync

Uso

Opción 1: Empezar desde MCP (main.py)

uv run uvicorn main:app --reload

Defines herramientas así:

@mcp.tool()
def multiplicar(a: float, b: float) -> dict:
    """Multiplica dos números."""
    return {"resultado": a * b}

Y automáticamente tienes POST /multiplicar disponible.

Opción 2: Empezar desde FastAPI (main2.py)

uv run uvicorn main2:app --port 8001 --reload

Defines endpoints así:

@app.post("/multiplicar")
async def multiplicar(req: OperacionRequest):
    """Multiplica dos números."""
    return {"resultado": req.a * req.b}

Y automáticamente tienes la herramienta MCP multiplicar disponible.

Ejemplos

Ambos servidores exponen las mismas operaciones:

# Llamar al endpoint REST
curl -X POST "http://localhost:8000/sumar" \
  -H "Content-Type: application/json" \
  -d '{"a": 10, "b": 5}'

# Respuesta: {"a":10.0,"b":5.0,"operacion":"suma","resultado":15.0}

El servidor MCP está montado en /calculadora/mcp/ y la documentación Swagger en /docs.

Cómo funciona

main.py (MCP → FastAPI)

  1. Registras funciones con @mcp.tool()
  2. Una función inspecciona todas las tools del registry de FastMCP
  3. Para cada una, crea un modelo Pydantic con los mismos parámetros
  4. Registra un endpoint POST en FastAPI que llama a la tool original

main2.py (FastAPI → MCP)

  1. Defines endpoints POST normales en FastAPI
  2. Una función recorre todas las rutas registradas
  3. Extrae el modelo Pydantic que usa cada endpoint
  4. Genera dinámicamente una función con parámetros explícitos (FastMCP no acepta **kwargs)
  5. Registra esa función como tool MCP que llama al endpoint original

El truco en main2.py es que FastMCP requiere parámetros explícitos, así que uso exec() para generar el código de la función dinámicamente. No es lo más elegante pero funciona.

Cuál usar?

Depende de tu situación:

Usa main.py si:

  • Estás empezando un proyecto nuevo enfocado en MCP
  • Prefieres el estilo minimalista de FastMCP
  • No necesitas control fino sobre HTTP

Usa main2.py si:

  • Ya tienes una API FastAPI y quieres agregarle MCP
  • Necesitas controlar códigos de estado, headers, etc.
  • Prefieres trabajar con FastAPI directamente

Yo personalmente prefiero main.py porque es más limpio, pero main2.py es útil si ya tienes código FastAPI existente.

Agregar operaciones nuevas

Solo defines en tu lado preferido:

main.py:

@mcp.tool()
def dividir(a: float, b: float) -> dict:
    if b == 0:
        return {"error": "División por cero"}
    return {"resultado": a / b}

main2.py:

@app.post("/dividir")
async def dividir(req: OperacionRequest):
    if req.b == 0:
        raise HTTPException(400, "División por cero")
    return {"resultado": req.a / req.b}

El resto se genera automáticamente.

Estructura

.
├── main.py          # MCP → FastAPI
├── main2.py         # FastAPI → MCP
├── pyproject.toml   # Dependencias (FastAPI, FastMCP, Uvicorn)
└── uv.lock

Limitaciones

  • Los parámetros tienen que ser tipos básicos (int, float, str, bool)
  • En main2.py cada endpoint necesita exactamente un parámetro Pydantic
  • Solo endpoints POST se convierten en tools (GET no tiene mucho sentido como tool)
  • El código generado con exec() en main2.py es medio feo pero funciona

Tecnologías

  • FastAPI para el servidor HTTP
  • FastMCP para el servidor MCP
  • Pydantic para validación
  • Uvicorn como servidor ASGI

Notas

Este es un proyecto de demostración. En producción probablemente querrías agregar:

  • Autenticación
  • Rate limiting
  • Logging apropiado
  • Tests
  • Manejo de errores más robusto

Pero el concepto base de auto-generación funciona bien y ahorra bastante código repetitivo.

License

MIT - haz lo que quieras con esto.

工具与能力

工具数量

0

资源数量

0

提示词数量

0

能力标签

代码生成Python本地部署自动化工具API开发FastAPIFastMCP

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

让助手直接读代码

把仓库、提交记录和 issue 交给模型检索,补全和重构时不用来回复制文件。

在对话里跑命令

触发构建、测试和脚本,执行结果直接回到上下文,省去切终端。

接进开发流程

把 PR、CI 状态和代码审查接进助手,减少在几个工具之间跳。

选择建议

值得选的地方

  • 只提供 0 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在开发工具场景里让模型直接调用外部能力的人。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Fastapi Fastmcp Autogen

MCP World · 本页

0stdio有1 个2026-05-17
Git 838e2ec1

MCP World

12stdio有2 个2026-05-17
Markitdown MCP 2c653a5f

MCP World

1stdio有1 个2026-05-17
Context7 MCP C671e75a

MCP World

0stdio有1 个2026-05-17
Context7 831acf40

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Fastapi Fastmcp Autogen 怎么安装?

公开资料给出的安装命令是 uv run uvicorn main:app --reload,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Fastapi Fastmcp Autogen 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

Fastapi Fastmcp Autogen 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Fastapi Fastmcp Autogen 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

Fastapi Fastmcp Autogen 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP