Releases: PrefectHQ/marvin
πthon dependencies amirite
What's Changed
Docs 📚
Other Changes 🦾
- Fix Slackbot improvements (tasks 1-2): Progress message and uv extras by @zzstoatzz in #1189
- fix tpuf import by @zzstoatzz in #1190
- fix pydantic ai changes by @zzstoatzz in #1191
- fix tools by @zzstoatzz in #1192
- Fix slackbot GitHub discussions search and turbopuffer authentication by @zzstoatzz in #1195
- test tool limiting by @zzstoatzz in #1196
- avoid dep issues by @zzstoatzz in #1197
- fix tool limiting by @zzstoatzz in #1198
- ope by @zzstoatzz in #1199
- unpin openai by @zzstoatzz in #1202
- update pydantic ai lower bound by @zzstoatzz in #1203
New Contributors
Full Changelog: v3.1.3...v3.1.4
v3.1.3
What's Changed
Docs 📚
- Update Chroma memory provider for Chroma Cloud by @kylediaz in #1183
- Fix AttributeError with pydantic-ai deprecated attribute by @zzstoatzz in #1187
Other Changes 🦾
- add claude files by @zzstoatzz in #1157
- [slackbot] key off user id, not bot id by @zzstoatzz in #1158
- [slackbot] improve answers by @zzstoatzz in #1159
- organize slackbot into library by @zzstoatzz in #1160
- add basic asset impl to slackbot by @zzstoatzz in #1161
- Add thread summary asset to slackbot by @zzstoatzz in #1162
- woops by @zzstoatzz in #1163
- [slackbot] show thinking by @zzstoatzz in #1164
- smol tweaks by @zzstoatzz in #1165
- proompt by @zzstoatzz in #1166
- add note by @zzstoatzz in #1167
- another note by @zzstoatzz in #1168
- replace inlined pretty-mod by @zzstoatzz in #1169
- tweak prompt and hoist mod tools by @zzstoatzz in #1170
- avoid bad marvin recommendations by @zzstoatzz in #1173
- bot prompts tweak by @zzstoatzz in #1174
- update pydantic-ai to enable sampling support by @wreed4 in #1175
- minor slackbot improvements by @zzstoatzz in #1177
- add check cli tool by @zzstoatzz in #1178
- Fix agent printing too often while thinking by @wreed4 in #1172
- add retry example by @zzstoatzz in #1179
- tweak prompt by @zzstoatzz in #1180
- temp by @zzstoatzz in #1185
- response format prompt by @zzstoatzz in #1186
New Contributors
Full Changelog: v3.1.2...v3.1.3
there's no "Team" in "marvin"
What's Changed
- slackbot fix by @zzstoatzz in #1145
- expose Team as suggested by docs by @zzstoatzz in #1154
- Readme and docs by @zzstoatzz in #1155
Full Changelog: v3.1.1...v3.1.2
double trouble
fixes an issue with duplicate tool discover in MCP support for agents, see #1142
What's Changed
New Features 🎉
- fastmcp adapter by @zzstoatzz in #1141
Other Changes 🦾
- fix mcp wrapping by @zzstoatzz in #1143
Full Changelog: v3.1.0...v3.1.1
I have so much stuff in my repo. Structured outputs, agents, MCP, obviously. A scary goose server, obviously. Obviously a Deepseek example. I have no problem being in my repo for hours and hours.
https://www.youtube.com/shorts/4qi7MsXyP8E
This release includes MCP support for agents.
example
import asyncio
from pathlib import Path
from typing import Annotated, TypedDict
from pydantic import Field
from pydantic_ai.mcp import MCPServerStdio
from rich import print as pprint
import marvin
class Reflection(TypedDict):
score: Annotated[int, Field(ge=0, le=100)]
areas_for_improvement: list[str]
# Requires Deno: `deno install -A ... jsr:@pydantic/mcp-run-python`
run_python_server = MCPServerStdio(
command="deno",
args=["run", "-A", "jsr:@pydantic/mcp-run-python", "stdio"],
)
# Requires uv: `uvx mcp-server-git`
git_server = MCPServerStdio(
command="uvx",
args=["mcp-server-git"],
)
def write_summary_of_work(description: str, file_path: str) -> str:
"""log your efforts in your own style"""
Path(file_path).write_text(description)
return f"Summary written to {file_path}"
linus = marvin.Agent(
name="Linus",
instructions="Use the available tools as needed to accomplish the user's goal.",
mcp_servers=[run_python_server, git_server],
tools=[write_summary_of_work],
)
async def main():
with marvin.Thread():
pprint("\n--- Starting Agent Run ---")
result = await linus.run_async(
(
"1. Get the latest commit hash from this repo using the git_log tool\n"
"2. Report how many characters long the commit hash is\n"
"3. Calculate the square root of that number with python\n"
"finish with a haiku about your experience"
)
)
pprint("\n--- Final Result ---")
pprint(result)
pprint("\n--- Reflection ---")
pprint(
await linus.run_async(
"reflect on your work and write a short `summary.txt` file",
result_type=Reflection,
)
)
if Path("summary.txt").exists():
input("\n--- As expected, summary.txt exists - hit enter to remove it")
Path("summary.txt").unlink()
else:
raise RuntimeError("agent did not write summary.txt")
if __name__ == "__main__":
asyncio.run(main())What's Changed
New Features 🎉
- config cli by @zzstoatzz in #1128
- add mcp support to agents by @zzstoatzz in #1129
- improve mcp impl by @zzstoatzz in #1134
Fixes 🐞
- smol fix to mcp by @zzstoatzz in #1135
Breaking Changes 🛫
- ignore unprefixed
DATABASE_URLby @zzstoatzz in #1137
Docs 📚
- tweak readme by @zzstoatzz in #1130
- add test for 1131 by @zzstoatzz in #1132
- Fix mcp by @zzstoatzz in #1133
Other Changes 🦾
- [bug fix] in tasks executed by team by @eformica in #1131
- rm by @zzstoatzz in #1138
New Contributors
Full Changelog: v3.0.6...v3.1.0
Not Everybody Knows How To Do Everything, MCP isn't the only thing
https://youtu.be/CaIH2KuCIXY?si=qdBPFHkn3dLtdxF_&t=13
What's Changed
fixes
- Fix mcp by @zzstoatzz in #1133
- tasks executed by team by @eformica in #1131
docs
- tweak readme by @zzstoatzz in #1130
other
- add test for 1131 by @zzstoatzz in #1132
New Contributors
Full Changelog: v3.1.0-alpha...v3.1.0-alpha.1
alphabet soup
this alpha release contains experimental MCP support, please comment here if you have thoughts or suggestions for this
changes
- config cli by @zzstoatzz in #1128
- add mcp support to agents by @zzstoatzz in #1129
Full Changelog: v3.0.6...v3.1.0-alpha
gotta respect the prompt
this is a patch release to fix a bug with the generate_schema functions where a passed prompt would not be used
Fixes
- fix test and prompt passthrough by @zzstoatzz in #1126
Full Changelog: v3.0.5...v3.0.6
handled promptly
What's Changed
New Features 🎉
- Azure example by @zzstoatzz in #1123
- allow custom handlers and prompts in functions by @zzstoatzz in #1125
Docs 📚
New Contributors
Full Changelog: v3.0.4...v3.0.5
License to Chill
adds back unintentionally removed apache 2 license
What's Changed
- add back license by @zzstoatzz in #1121
Full Changelog: v3.0.3...v3.0.4