mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-23 22:14:18 +02:00
Publish docs for v3.2.0 (#3713)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Jeremiah Lowin <jlowin@users.noreply.github.com> Co-authored-by: Marvin Context Protocol <41898282+Marvin Context Protocol@users.noreply.github.com> Co-authored-by: voidborne-d <voidborne-d@users.noreply.github.com> Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: d 🔹 <258577966+voidborne-d@users.noreply.github.com> Co-authored-by: Jeremiah Lowin <153965+jlowin@users.noreply.github.com> Co-authored-by: nightcityblade <nightcityblade@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Bill Easton <strawgate@users.noreply.github.com> Co-authored-by: Sumanshu Nankana <sumanshunankana@gmail.com> Co-authored-by: Eric Robinson <ericrobinson@indeed.com> Co-authored-by: Martim Santos <martimfasantos@gmail.com> Co-authored-by: d 🔹 <liusway405@gmail.com> Co-authored-by: Matthieu B <66959271+mtthidoteu@users.noreply.github.com> Co-authored-by: Sascha Buehrle <47737812+saschabuehrle@users.noreply.github.com> Co-authored-by: Hakancan <142545736+hkc5@users.noreply.github.com> Co-authored-by: nightcityblade <jackchen@haloailabs.com> Co-authored-by: Matt Hallowell <17804673+mhallo@users.noreply.github.com> Co-authored-by: nate nowack <thrast36@gmail.com> Co-authored-by: Bill Easton <williamseaston@gmail.com> Co-authored-by: Marcus Shu <46469249+shulkx@users.noreply.github.com> Co-authored-by: Rushabh Doshi <radoshi@gmail.com> Co-authored-by: AIKAWA Shigechika <shige@aikawa.jp> Co-authored-by: Jeremy Simon <simonjer805@gmail.com> Co-authored-by: Miguel Miranda Dias <7780875+pandego@users.noreply.github.com> Co-authored-by: Anthony James Padavano <padavano.anthony@gmail.com> Co-authored-by: Mostafa Kamal <hiremostafa@gmail.com> Fix auto-close MRE script posting comment without closing (#3386) Fix WorkOS token scope verification bypass 🤖 Generated with Codex (#3407) Fix initialize McpError fallthrough 🤖 Generated with Codex (#3413) Fix transform arg collisions with passthrough params (#3431) Fix get_* returning None when latest version is disabled (#3439) Fix get_* returning None when latest version is disabled (#3421) Fix server lifespan overlap teardown (#3415) Fix $ref output schema object detection regression (#3420) resolved annotations (#3429) Fix async partial callables rejected by iscoroutinefunction (#3438) Fix async partial callables rejected by iscoroutinefunction (#3423) fix: add version to components (#3458) fix: use intent-based flag for OIDC scope patch in load_access_token (#3465) Fixes #3461 fix: normalize Google scope shorthands and surface valid_scopes (#3477) fix: resolve ty 0.0.23 type-checking errors and bump pin (#3481) fix: shield lifespan teardown from cancellation (#3480) fix: forward custom_route endpoints from mounted servers (#3462) fix updates _get_additional_http_routes() to traverse providers, Fixes #3457 fix: remove hardcoded version from CLI help text (#3456) fix: monty 0.0.8 compatibility, drop external_functions from constructor (#3468) fix: task test teardown hanging 5s per test (#3499) Closes #3498 fix: validate workspace path is a directory before cursor install (#3440) Fixes #3426 fix: handle re.error from malformed URI templates in build_regex (#3501) fix: reject empty/OIDC-only required_scopes in AzureProvider (#3503) fix: restrict $ref resolution to local refs only (SSRF/LFI) (#3502) fix warnings and timeouts (#3504) close upgrade check issue when build passes (#3505) Closes #3484 fix: URL-encode path params to prevent SSRF/path traversal (GHSA-vv7q-7jx5-f767) (#3507) fix: prevent path traversal in skill download (#3493) fix: prefer IdP-granted scopes over client-requested scopes in OAuthProxy (#3492) fix: remove unrelated transform and http.py changes from PR scope fix: remove forced follow_redirects from httpx_client_factory calls (#3496) fix: stop passing follow_redirects to httpx_client_factory fix: restore follow_redirects=True for custom httpx client factories Closes #3509 fix: CSRF double-submit cookie check in consent flow (#3519) fix: validate server names in install commands (#3522) fix: use raw strings for regex in pytest.raises match (#3523) fix: reject refresh tokens used as Bearer access tokens (#3524) fix: route ResourcesAsTools/PromptsAsTools through server middleware (#3495) fix: resolve Pyright "Module is not callable" on @tool, @resource, @prompt decorators (#3540) fix: filter warnings by message in KEY_PREFIX test (#3549) fix: suppress output schema for ToolResult subclass annotations (#3548) fix: increase sleep duration in proxy cache tests (#3567) fix: store absolute token expiry to prevent stale expires_in on reload (#3572) fix: preserve tool properties named 'title' during schema compression (#3582) Fix loopback redirect URI port matching per RFC 8252 §7.3 (#3589) Fix app tool routing: visibility check and middleware propagation (#3591) Fix query parameter serialization to respect OpenAPI explode/style settings (#3595) Fix dev apps form: union types, textarea support, JSON parsing (#3597) fix(google): replace deprecated /oauth2/v1/tokeninfo with /oauth2/v3/userinfo (#3603) fix: resolve EntraOBOToken dependency injection through MultiAuth (#3609) fix(docs): correct misleading stateless_http header (#3622) fix: filesystem provider import machinery (#3626) Closes #3625 (issues 2, 3, 6) fix: recover StdioTransport after subprocess exits (#3630) fix(server): preserve mounted tool task metadata (#3632) fix: scope deprecation warning filter to FastMCPDeprecationWarning (#3649) fix imports, add PrefabAppConfig (#3650) fix: resolve CurrentFastMCP/ctx.fastmcp to child server in mounted background tasks (#3651) Fix blocking docs issues: chart imports, Select API, Rx consistency (#3652) closed by default (#3657) Fix prompt caching middleware missing wrap/unwrap round-trip (#3666) fix: serialize object query params per OpenAPI style/explode rules (#3662) Fixes #2857 fix: HTTP request headers not accessible in background task workers (#3631) fix: restore HTTP headers in worker execution path for background tasks (#3681) fix: strip discriminator after dereferencing schemas (#3682) fix: remove stale ty:ignore directives for ty 0.0.26 (#3684) Fix docs gaps in app provider pages (#3690) fix: dev apps log panel UX improvements (#3698) fix dev server empty string args (#3700)
This commit is contained in:
parent
ec7a83f5f9
commit
3a9717e6be
518 changed files with 26852 additions and 4738 deletions
29
.github/ISSUE_TEMPLATE/bug.yml
vendored
29
.github/ISSUE_TEMPLATE/bug.yml
vendored
|
|
@ -3,33 +3,30 @@ description: Report a bug or unexpected behavior in FastMCP
|
|||
labels: [bug, pending]
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: Thanks for contributing to FastMCP! 🙏
|
||||
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for reporting a bug!
|
||||
|
||||
A good bug report is one of the most valuable contributions you can make — see [CONTRIBUTING.md](../../CONTRIBUTING.md). If the fix is straightforward, a PR is also welcome.
|
||||
|
||||
### Before you submit
|
||||
|
||||
To help us help you, please:
|
||||
|
||||
- 🔄 **Make sure you're testing on the latest version of FastMCP** - many issues are already fixed in newer versions
|
||||
- 🔍 **Check if someone else has already reported this issue** or if it's been fixed on the main branch
|
||||
- 📋 **You MUST include a copy/pasteable and properly formatted MRE** (minimal reproducible example) below or your issue may be closed without response
|
||||
- 💡 **The ideal issue is a clear problem description and an MRE — that's it.** If you've done a genuine investigation and have a non-obvious insight into the root cause, include it. But please don't speculate or ask an LLM to generate a diagnosis or proposed fix. We have LLMs too, and an incorrect analysis is harder to work with than none at all.
|
||||
- ✂️ **Keep it short.** A one-paragraph description and a working MRE is the ideal bug report. Issues that are difficult to parse — due to length, speculation, or generated content — may be closed without response.
|
||||
|
||||
Thanks for helping to make FastMCP better! 🚀
|
||||
- Make sure you're testing on the **latest version** of FastMCP — many issues are already fixed in newer releases
|
||||
- Check if someone else has **already reported this** or if it's been fixed on the main branch
|
||||
- You **must** include a copy/pasteable, properly formatted MRE (minimal reproducible example) or your issue may be closed without response
|
||||
- **The ideal issue is a clear problem description and an MRE — that's it.** If you've done genuine investigation and have a non-obvious insight into the root cause, include it. But please don't speculate or ask an LLM to generate a diagnosis. We have LLMs too, and an incorrect analysis is harder to work with than none at all.
|
||||
- **Keep it short.** A clear description plus a concise MRE is ideal — aim to fit in a single screen. Issues that include unsolicited root cause analysis, proposed fixes, or multi-section diagnostic writeups will be labeled `too-long` and not triaged until condensed.
|
||||
- **Using an LLM?** Great — but it must follow these guidelines. Generic LLM output that ignores our contributing conventions will be closed. See [CONTRIBUTING.md](../../CONTRIBUTING.md).
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
label: What happened?
|
||||
description: |
|
||||
Please explain what you're experiencing and what you would expect to happen instead.
|
||||
Describe the bug in a few sentences. What did you do, what happened, and what did you expect instead?
|
||||
|
||||
Provide as much detail as possible to help us understand and solve your problem quickly.
|
||||
Do NOT include root cause analysis, proposed fixes, or diagnostic writeups — just describe the problem.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
|
|
|||
26
.github/ISSUE_TEMPLATE/enhancement.yml
vendored
26
.github/ISSUE_TEMPLATE/enhancement.yml
vendored
|
|
@ -3,33 +3,27 @@ description: Suggest an idea or improvement for FastMCP
|
|||
labels: [enhancement, pending]
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: Thanks for contributing to FastMCP! 🙏
|
||||
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for suggesting an improvement to FastMCP!
|
||||
|
||||
Enhancement issues are the **primary way** features and improvements get into FastMCP. Maintainers use well-written issues to implement changes that fit the codebase's patterns and ship quickly. A clear issue here is more impactful than a PR — see [CONTRIBUTING.md](../../CONTRIBUTING.md) for why.
|
||||
|
||||
### Before you submit
|
||||
|
||||
To help us evaluate your enhancement request:
|
||||
|
||||
- 🔍 **Check if this has already been requested** - search existing issues first
|
||||
- 💭 **Think about the broader impact** - how would this affect other users?
|
||||
- 📋 **Consider implementation complexity** - is this a small change or a major feature?
|
||||
- ✂️ **Keep it short.** Describe the problem you're trying to solve and why existing behavior falls short. Skip proposed implementations unless you have a specific, well-considered suggestion — we don't need LLM-generated API designs. Requests that are difficult to parse may be closed without response.
|
||||
|
||||
Thanks for helping to make FastMCP better! 🚀
|
||||
- 🔍 **Check if this has already been requested** — search existing issues first
|
||||
- 🎯 **Describe the problem you're trying to solve**, not the solution you want — we'll figure out the best implementation
|
||||
- ✂️ **Keep it short.** A motivating description and a concrete use case is the ideal request — aim to fit in a single screen. Skip proposed implementations, API designs, or multi-option analyses — maintainers will figure out the approach. Requests that are difficult to parse will be labeled `too-long` and not triaged until condensed.
|
||||
- 🤖 **Using an LLM?** Great — but it must follow these guidelines. Generic LLM output that ignores our contributing conventions will be closed. See [CONTRIBUTING.md](../../CONTRIBUTING.md).
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Enhancement
|
||||
description: |
|
||||
Please describe the enhancement:
|
||||
What problem or use case does this solve? How does current behavior fall short?
|
||||
|
||||
- What problem or use case would it solve?
|
||||
- How would it improve your workflow or experience with FastMCP?
|
||||
- Are there any alternative solutions you've considered?
|
||||
Focus on the *what* and *why* — the motivating scenario. You don't need to propose an API or implementation.
|
||||
validations:
|
||||
required: true
|
||||
|
|
|
|||
10
.github/actions/run-pytest/action.yml
vendored
10
.github/actions/run-pytest/action.yml
vendored
|
|
@ -3,7 +3,7 @@ description: "Run pytest with appropriate flags for the test type and platform"
|
|||
|
||||
inputs:
|
||||
test-type:
|
||||
description: "Type of tests to run: unit, integration, or client_process"
|
||||
description: "Type of tests to run: unit, integration, client_process, or conformance"
|
||||
required: false
|
||||
default: "unit"
|
||||
|
||||
|
|
@ -23,8 +23,13 @@ runs:
|
|||
TIMEOUT="5"
|
||||
MAX_PROCS="0"
|
||||
EXTRA_FLAGS="-x"
|
||||
elif [ "${{ inputs.test-type }}" == "conformance" ]; then
|
||||
MARKER="conformance"
|
||||
TIMEOUT="120"
|
||||
MAX_PROCS="0"
|
||||
EXTRA_FLAGS="-x"
|
||||
else
|
||||
MARKER="not integration and not client_process"
|
||||
MARKER="not integration and not client_process and not conformance"
|
||||
TIMEOUT="5"
|
||||
MAX_PROCS="4"
|
||||
EXTRA_FLAGS=""
|
||||
|
|
@ -38,6 +43,7 @@ runs:
|
|||
uv run --no-sync pytest \
|
||||
--inline-snapshot=disable \
|
||||
--timeout=$TIMEOUT \
|
||||
--durations=50 \
|
||||
-m "$MARKER" \
|
||||
$PARALLEL_FLAGS \
|
||||
$EXTRA_FLAGS \
|
||||
|
|
|
|||
34
.github/pull_request_template.md
vendored
34
.github/pull_request_template.md
vendored
|
|
@ -1,28 +1,22 @@
|
|||
## Description
|
||||
<!--
|
||||
Please provide a clear and concise description of the changes made in this pull request.
|
||||
|
||||
Using AI to generate code? Please include a note in the description with which AI tool you used.
|
||||
-->
|
||||
<!-- What does this PR do? Link to the issue it addresses. -->
|
||||
|
||||
**Contributors Checklist**
|
||||
<!--
|
||||
NOTE:
|
||||
1. You must create an issue in the repository before making a Pull Request.
|
||||
2. You must not create a Pull Request for an issue that is already assigned to someone else.
|
||||
Closes #
|
||||
|
||||
If you do not follow these steps, your Pull Request will be closed without review.
|
||||
-->
|
||||
## Contribution type
|
||||
|
||||
- [ ] My change closes #(issue number)
|
||||
- [ ] I have followed the repository's development workflow
|
||||
- [ ] I have tested my changes manually and by adding relevant tests
|
||||
- [ ] I have performed all required documentation updates
|
||||
<!-- Check the one that applies. If you're unsure whether your change is welcome, please open an issue first — see CONTRIBUTING.md. -->
|
||||
|
||||
**Review Checklist**
|
||||
<!-- Your Pull Request will not be reviewed if tests are failing, you have not self-reviewed your changes, or you have not checked all of the following: -->
|
||||
- [ ] Bug fix (simple, well-scoped fix for a clearly broken behavior)
|
||||
- [ ] Documentation improvement
|
||||
- [ ] Enhancement (maintainers typically implement enhancements — see [CONTRIBUTING.md](../CONTRIBUTING.md))
|
||||
|
||||
## Checklist
|
||||
|
||||
- [ ] This PR addresses an existing issue (or fixes a self-evident bug)
|
||||
- [ ] I have read [CONTRIBUTING.md](../CONTRIBUTING.md)
|
||||
- [ ] I have added tests that cover my changes
|
||||
- [ ] I have run `uv run prek run --all-files` and all checks pass
|
||||
- [ ] I have self-reviewed my changes
|
||||
- [ ] My Pull Request is ready for review
|
||||
|
||||
---
|
||||
- [ ] If I used an LLM, it followed the repo's contributing conventions (not generic output)
|
||||
|
|
|
|||
26
.github/release.yml
vendored
26
.github/release.yml
vendored
|
|
@ -8,12 +8,25 @@ changelog:
|
|||
labels:
|
||||
- feature
|
||||
|
||||
- title: Enhancements 🔧
|
||||
- title: Breaking Changes ⚠️
|
||||
labels:
|
||||
- breaking change
|
||||
exclude:
|
||||
labels:
|
||||
- contrib
|
||||
- security
|
||||
|
||||
- title: Enhancements ✨
|
||||
labels:
|
||||
- enhancement
|
||||
exclude:
|
||||
labels:
|
||||
- breaking change
|
||||
- security
|
||||
|
||||
- title: Security 🔒
|
||||
labels:
|
||||
- security
|
||||
|
||||
- title: Fixes 🐞
|
||||
labels:
|
||||
|
|
@ -21,13 +34,7 @@ changelog:
|
|||
exclude:
|
||||
labels:
|
||||
- contrib
|
||||
|
||||
- title: Breaking Changes 🛫
|
||||
labels:
|
||||
- breaking change
|
||||
exclude:
|
||||
labels:
|
||||
- contrib
|
||||
- security
|
||||
|
||||
- title: Docs 📚
|
||||
labels:
|
||||
|
|
@ -41,6 +48,9 @@ changelog:
|
|||
- title: Dependencies 📦
|
||||
labels:
|
||||
- dependencies
|
||||
exclude:
|
||||
labels:
|
||||
- security
|
||||
|
||||
- title: Other Changes 🦾
|
||||
labels:
|
||||
|
|
|
|||
2
.github/workflows/auto-close-duplicates.yml
vendored
2
.github/workflows/auto-close-duplicates.yml
vendored
|
|
@ -20,7 +20,7 @@ jobs:
|
|||
|
||||
- name: Generate Marvin App token
|
||||
id: marvin-token
|
||||
uses: actions/create-github-app-token@v2
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ secrets.MARVIN_APP_ID }}
|
||||
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
||||
|
|
|
|||
2
.github/workflows/auto-close-needs-mre.yml
vendored
2
.github/workflows/auto-close-needs-mre.yml
vendored
|
|
@ -20,7 +20,7 @@ jobs:
|
|||
|
||||
- name: Generate Marvin App token
|
||||
id: marvin-token
|
||||
uses: actions/create-github-app-token@v2
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ secrets.MARVIN_APP_ID }}
|
||||
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
||||
|
|
|
|||
2
.github/workflows/martian-test-failure.yml
vendored
2
.github/workflows/martian-test-failure.yml
vendored
|
|
@ -29,7 +29,7 @@ jobs:
|
|||
|
||||
- name: Generate Marvin App token
|
||||
id: marvin-token
|
||||
uses: actions/create-github-app-token@v2
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ secrets.MARVIN_APP_ID }}
|
||||
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
||||
|
|
|
|||
2
.github/workflows/martian-triage-issue.yml
vendored
2
.github/workflows/martian-triage-issue.yml
vendored
|
|
@ -33,7 +33,7 @@ jobs:
|
|||
|
||||
- name: Generate Marvin App token
|
||||
id: marvin-token
|
||||
uses: actions/create-github-app-token@v2
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ secrets.MARVIN_APP_ID }}
|
||||
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
||||
|
|
|
|||
|
|
@ -36,14 +36,9 @@ jobs:
|
|||
- name: Install dependencies
|
||||
run: uv sync --python 3.12
|
||||
|
||||
- name: Run prek
|
||||
uses: j178/prek-action@v1
|
||||
env:
|
||||
SKIP: no-commit-to-branch
|
||||
|
||||
- name: Generate Marvin App token
|
||||
id: marvin-token
|
||||
uses: actions/create-github-app-token@v2
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ secrets.MARVIN_APP_ID }}
|
||||
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
||||
|
|
|
|||
7
.github/workflows/marvin-comment-on-pr.yml
vendored
7
.github/workflows/marvin-comment-on-pr.yml
vendored
|
|
@ -38,14 +38,9 @@ jobs:
|
|||
- name: Install dependencies
|
||||
run: uv sync --python 3.12
|
||||
|
||||
- name: Run prek
|
||||
uses: j178/prek-action@v1
|
||||
env:
|
||||
SKIP: no-commit-to-branch
|
||||
|
||||
- name: Generate Marvin App token
|
||||
id: marvin-token
|
||||
uses: actions/create-github-app-token@v2
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ secrets.MARVIN_APP_ID }}
|
||||
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
||||
|
|
|
|||
2
.github/workflows/marvin-dedupe-issues.yml
vendored
2
.github/workflows/marvin-dedupe-issues.yml
vendored
|
|
@ -25,7 +25,7 @@ jobs:
|
|||
|
||||
- name: Generate Marvin App token
|
||||
id: marvin-token
|
||||
uses: actions/create-github-app-token@v2
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ secrets.MARVIN_APP_ID }}
|
||||
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
||||
|
|
|
|||
17
.github/workflows/marvin-label-triage.yml
vendored
17
.github/workflows/marvin-label-triage.yml
vendored
|
|
@ -36,7 +36,7 @@ jobs:
|
|||
|
||||
- name: Generate Marvin App token
|
||||
id: marvin-token
|
||||
uses: actions/create-github-app-token@v2
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ secrets.MARVIN_APP_ID }}
|
||||
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
||||
|
|
@ -49,7 +49,7 @@ jobs:
|
|||
PROMPT<<PROMPT_END
|
||||
You're an issue triage assistant for FastMCP, a Python framework for building Model Context Protocol servers and clients. Your task is to analyze issues/PRs and apply appropriate labels.
|
||||
|
||||
IMPORTANT: Your ONLY action should be to apply labels using mcp__github__update_issue. DO NOT post any comments.
|
||||
IMPORTANT: Your primary action should be to apply labels using mcp__github__update_issue. DO NOT post comments EXCEPT when applying the too-long label (see below).
|
||||
|
||||
Issue/PR Information:
|
||||
- REPO: ${{ github.repository }}
|
||||
|
|
@ -68,7 +68,7 @@ jobs:
|
|||
|
||||
3. Analyze and apply labels based on these guidelines:
|
||||
|
||||
CORE CATEGORIES (apply EXACTLY ONE - these are mutually exclusive):
|
||||
CORE CATEGORIES (apply EXACTLY ONE - these are mutually exclusive; skip if applying too-long):
|
||||
- bug: Reports of broken functionality OR PRs that fix bugs
|
||||
- enhancement: New functions/endpoints, improvements to existing features, internal tooling, workflow improvements, minor new capabilities
|
||||
- feature: ONLY for major headline functionality worthy of a blog post announcement (2-4 per release, never for issues)
|
||||
|
|
@ -96,8 +96,12 @@ jobs:
|
|||
|
||||
STATUS (apply if applicable):
|
||||
- needs more info: Issue lacks reproduction steps, error messages, or clear description
|
||||
- good first issue: ONLY if it's clearly scoped, has obvious solution, and touches limited files
|
||||
- invalid: Spam, completely off-topic, or nonsensical (often LLM-generated)
|
||||
- too-long: Apply when an issue or PR doesn't conform to CONTRIBUTING.md. Issues should be a short problem description, an MRE, and expected vs. actual behavior — not a design document. PRs should have a focused description of the change — not a report. We don't need proposed solutions or design alternatives (the issue should describe the problem and let maintainers architect the fix), summaries of what tests cover, explanations of code we can read ourselves, or speculative root-cause analysis. Common LLM failure modes to watch for: verbose "diagnostic" writeups, large proposed patches in issue bodies, multi-section reports restating what's visible in the diff, numbered lists of possible approaches or solutions, "suggested" schemas/shapes/APIs, generic analysis that doesn't reference specific code, and "Notes" sections. But these are heuristics, not rules — a complex PR may legitimately need more context, and a brief submission can still be low-quality. Judge by whether the content helps a reviewer or just adds noise. When applying, do not apply other triage labels. The author needs to condense before triage is worthwhile.
|
||||
|
||||
WHEN APPLYING too-long: After labeling, post a brief comment using mcp__github__add_issue_comment:
|
||||
"Thanks for the report. This issue goes beyond what our contributor guidelines ask for — we just need a short problem description and an MRE. Please see our [contributing guidelines](https://github.com/PrefectHQ/fastmcp/blob/main/CONTRIBUTING.md) and condense this issue. We'll triage it once it's trimmed down."
|
||||
Use this exact text (or very close to it). Do not editorialize or add details.
|
||||
|
||||
AREA LABELS (apply ONLY when thematically central to the issue):
|
||||
- cli: Issues primarily about FastMCP CLI commands (run, dev, install)
|
||||
|
|
@ -108,6 +112,7 @@ jobs:
|
|||
- http: HTTP transport or networking is the main issue
|
||||
- contrib: Specifically about community contributions in src/contrib/
|
||||
- tests: Issues primarily about testing infrastructure, CI/CD workflows, or test coverage
|
||||
- security: Apply ONLY when the issue/PR addresses an exploitable vulnerability or hardens against one. Examples: SSRF, LFI, path traversal, injection, auth bypass allowing unauthorized access, scope escalation, open redirects. Do NOT apply for ordinary auth bugs (wrong scopes returned, token refresh logic, OAuth flow correctness) unless an attacker could exploit the bug to bypass access controls or escalate privileges. The key question: "Could a malicious actor exploit this?" If the answer is just "it breaks for legitimate users," that's a bug, not a security issue.
|
||||
|
||||
IMPORTANT LABELING RULES:
|
||||
- Be selective - only apply labels that are clearly relevant
|
||||
|
|
@ -122,7 +127,7 @@ jobs:
|
|||
|
||||
4. Apply selected labels:
|
||||
Use mcp__github__update_issue to apply your selected labels
|
||||
DO NOT post any comments
|
||||
DO NOT post any comments unless applying too-long (see above)
|
||||
PROMPT_END
|
||||
EOF
|
||||
|
||||
|
|
@ -139,7 +144,7 @@ jobs:
|
|||
allowed_non_write_users: "*"
|
||||
allowed_bots: "marvin-context-protocol"
|
||||
claude_args: |
|
||||
--allowedTools Bash(gh label list),mcp__github__get_issue,mcp__github__get_issue_comments,mcp__github__update_issue,mcp__github__get_pull_request_files
|
||||
--allowedTools Bash(gh label list),mcp__github__get_issue,mcp__github__get_issue_comments,mcp__github__update_issue,mcp__github__add_issue_comment,mcp__github__get_pull_request_files
|
||||
settings: |
|
||||
{
|
||||
"model": "claude-sonnet-4-6",
|
||||
|
|
|
|||
2
.github/workflows/run-static.yml
vendored
2
.github/workflows/run-static.yml
vendored
|
|
@ -35,6 +35,6 @@ jobs:
|
|||
resolution: locked
|
||||
|
||||
- name: Run prek
|
||||
uses: j178/prek-action@v1
|
||||
uses: j178/prek-action@v2
|
||||
env:
|
||||
SKIP: no-commit-to-branch
|
||||
|
|
|
|||
23
.github/workflows/run-tests.yml
vendored
23
.github/workflows/run-tests.yml
vendored
|
|
@ -73,6 +73,29 @@ jobs:
|
|||
with:
|
||||
test-type: client_process
|
||||
|
||||
run_conformance_tests:
|
||||
name: "MCP conformance tests"
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Setup uv
|
||||
uses: ./.github/actions/setup-uv
|
||||
with:
|
||||
resolution: locked
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: "22"
|
||||
|
||||
- name: Run conformance tests
|
||||
uses: ./.github/actions/run-pytest
|
||||
with:
|
||||
test-type: conformance
|
||||
|
||||
run_integration_tests:
|
||||
name: "Integration tests"
|
||||
runs-on: ubuntu-latest
|
||||
|
|
|
|||
28
.github/workflows/run-upgrade-checks.yml
vendored
28
.github/workflows/run-upgrade-checks.yml
vendored
|
|
@ -38,7 +38,7 @@ jobs:
|
|||
resolution: upgrade
|
||||
|
||||
- name: Run prek
|
||||
uses: j178/prek-action@v1
|
||||
uses: j178/prek-action@v2
|
||||
env:
|
||||
SKIP: no-commit-to-branch
|
||||
|
||||
|
|
@ -105,7 +105,7 @@ jobs:
|
|||
uses: jayqi/failed-build-issue-action@v1
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
label: "build-failure"
|
||||
label: "build failed"
|
||||
title-template: "Upgrade checks failing on main branch"
|
||||
body-template: |
|
||||
## Upgrade Checks Failure on Main Branch
|
||||
|
|
@ -131,3 +131,27 @@ jobs:
|
|||
|
||||
---
|
||||
*This issue was automatically created by a GitHub Action.*
|
||||
|
||||
close-on-success:
|
||||
name: Close issue on success
|
||||
needs: [static_analysis, run_tests, run_integration_tests]
|
||||
if: success() && github.event.pull_request == null && github.ref == 'refs/heads/main'
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Close resolved failure issue
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
issue=$(gh issue list \
|
||||
--repo "$GITHUB_REPOSITORY" \
|
||||
--label "build failed" \
|
||||
--state open \
|
||||
--json number \
|
||||
--jq '.[0].number // empty')
|
||||
|
||||
if [ -n "$issue" ]; then
|
||||
gh issue close "$issue" \
|
||||
--repo "$GITHUB_REPOSITORY" \
|
||||
--comment "Upgrade checks are passing again as of [\`${GITHUB_SHA::7}\`](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/commit/${GITHUB_SHA})."
|
||||
fi
|
||||
|
|
|
|||
2
.github/workflows/update-config-schema.yml
vendored
2
.github/workflows/update-config-schema.yml
vendored
|
|
@ -23,7 +23,7 @@ jobs:
|
|||
steps:
|
||||
- name: Generate Marvin App token
|
||||
id: marvin-token
|
||||
uses: actions/create-github-app-token@v2
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ secrets.MARVIN_APP_ID }}
|
||||
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
||||
|
|
|
|||
2
.github/workflows/update-sdk-docs.yml
vendored
2
.github/workflows/update-sdk-docs.yml
vendored
|
|
@ -23,7 +23,7 @@ jobs:
|
|||
steps:
|
||||
- name: Generate Marvin App token
|
||||
id: marvin-token
|
||||
uses: actions/create-github-app-token@v2
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ secrets.MARVIN_APP_ID }}
|
||||
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue