robyn-mcp
Turn Robyn APIs into MCP tools, resources, and prompts instantly.
______________________________________________________________________
为什么选择罗宾·麦克普
您已经拥有Robyn后端。
您不需要重建它来支持MCP。
罗宾·麦克普弥合了这一差距。
- 转换现有路线→ MCP工具
- 无需重新设计即可添加资源和提示
- 保持架构完整
- 可立即发货生产的MCP
______________________________________________________________________
🚀 亮点
- ⚡ 将Robyn路由自动公开为MCP工具
- 🧠 从Python类型生成JSON模式
- 🔗 OpenAPI富集+
$ref决心 - 🔐 身份验证上下文+标头转发
- 📊 可观察性(指标、跟踪、审计日志)
- 🗂️ 带有标签无效的响应缓存
- 🧪 用于验证和调试的CLI
- 🖥️ 内置游乐场用户界面
- 📦 生产就绪包装
______________________________________________________________________
📦 安装
python -m pip install --upgrade pip
pip install robyn robyn-mcp
python -m robyn_mcp.cli install-notepip install robyn-mcp (wheel install)不执行安装后的包Python钩子,因此显式 install-note step是安装后立即显示横幅的可靠方法。
如果你想在一个命令中自动输出横幅+安装包摘要:
python scripts/install_with_banner.py --wheel dist/robyn_mcp-1.0.1-py3-none-any.whl______________________________________________________________________
⚡ 快速开始
from robyn import Robyn
from robyn_mcp import RobynMCP, RobynMCPConfig, expose_tool
app = Robyn(__file__)
@app.get("/health")
@expose_tool(summary="Return service health")
def health():
return {"ok": True}
mcp = RobynMCP(app, config=RobynMCPConfig(require_session=False))
mcp.mount_http("/mcp")
# Prints the ROBYN-MCP banner once, then starts Robyn.
app.start(port=8080)______________________________________________________________________
🗂️ 带有无效标签的响应缓存
from robyn_mcp import RobynMCPConfig, expose_tool
@expose_tool(operation_id="list_products", side_effect=False, cache_tags=["products"])
def list_products():
return {"items": [...]}
@expose_tool(operation_id="create_product", side_effect=True, invalidate_tags=["products"])
def create_product(id: str, name: str, price: int):
...
config = RobynMCPConfig(
require_session=False,
enable_response_cache=True,
response_cache_ttl_seconds=120,
)缓存行为:
- 读取工具可以用TTL缓存。
- 变异工具可以使匹配的缓存标签无效。
- 如果突变上没有提供无效标签,则默认情况下缓存会被安全清除。
卷曲流:
# 1) Read (cached after first call)
curl -X POST http://localhost:8080/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_products","arguments":{}}}'
# 2) Mutation (invalidates products cache tag)
curl -X POST http://localhost:8080/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"create_product","arguments":{"id":"sku-2","name":"sock","price":15}}}'
# 3) Read again (fresh result after invalidation)
curl -X POST http://localhost:8080/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"list_products","arguments":{}}}'请参阅完整的可运行示例: examples/cache_invalidation_example.py.
______________________________________________________________________
🧪 测试
curl -X POST http://localhost:8080/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'______________________________________________________________________
🛠 命令行界面
robyn-mcp runtime --json
robyn-mcp validate-endpoint --url http://localhost:8080/mcp
robyn-mcp release-audit --json
robyn-mcp release-bundle --json______________________________________________________________________
🖥 游乐场
启用:
RobynMCPConfig(enable_playground=True)打开:
/mcp/playground______________________________________________________________________
📊 可观测性
- 工具调用指标
- 错误追踪
- 延迟统计
- 审计日志
- 最近的痕迹
______________________________________________________________________
📁 结构
robyn_mcp/
├── src/
├── tests/
├── examples/
└── scripts/______________________________________________________________________
🧠 核心概念
| 概念 | 描述 |
|---|---|
| 工具 | 可调用MCP端点 |
| 资源 | 结构化数据源 |
| 提示 | 可重复使用的提示模板 |
当前能力
- MCP工具收割路线
- 工具、资源和提示的显式装饰器
- 从Python注释生成JSON模式
- 路由元数据存在时的OpenAPI感知丰富
- 流式HTTP风格单端点调度基础
- TTL会话生命周期支持
- 请求上下文、主体、租户和标头转发挂钩
- 每工具策略挂钩和内置令牌桶速率限制
- 基于标签的突变失效读取工具的响应缓存
- 指标和最近的审计事件捕获
- 文档、CI、发布工作流、冒烟测试和基准脚手架
______________________________________________________________________
最后说明
采用MCP不需要重建后端。
随着 罗宾·麦克普,您现有的Robyn路线将成为一个完全可发现、可检查和生产就绪的MCP表面,只需最小的努力和最大的杠杆。
