Commit graph

3,289 commits

Author SHA1 Message Date
Jeremiah Lowin
6584750667 Fix external schema reference handling in OpenAPI parser
Previously, external schema references (URLs) in OpenAPI schemas were
silently passed through and only failed during JSON schema validation
with confusing "failed to match exactly one schema" errors.

This change:
- Detects external references in _replace_ref_with_defs() and raises clear error messages
- Updates exception handlers to propagate external reference errors while preserving other error handling
- Adds comprehensive test coverage for external reference detection
- Provides helpful error messages explaining that FastMCP only supports local schema references

Fixes #926

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 21:25:06 -04:00
Jeremiah Lowin
cf72bbf94f
Merge branch 'main' into claude-wt-20250625-195151 2025-06-25 21:01:07 -04:00
Jeremiah Lowin
e68fa0653b Use proper isinstance(Enum) check instead of hasattr
Replace hasattr(param_in, 'value') with isinstance(param_in, Enum)
for more robust enum detection as suggested in review.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 21:00:39 -04:00
Jeremiah Lowin
3c160d60d6
Merge pull request #952 from jlowin/claude-wt-20250625-200736 2025-06-25 20:49:29 -04:00
nate nowack
0f3c7d144c Merge pull request #949 from jlowin/fix-doc-render
fix a couple parsing issues
2025-06-25 20:43:42 -04:00
Jeremiah Lowin
f566e9a60f Fix parameter location enum handling in OpenAPI parser
Fixes issue where ParameterLocation enum values from openapi_pydantic
were not properly converted to strings, causing validation errors.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 20:38:00 -04:00
nate nowack
c79665c76e
Merge pull request #949 from jlowin/fix-doc-render
fix a couple parsing issues
2025-06-25 11:28:12 -05:00
zzstoatzz
3d43e80b8e fix a couple parsing issues 2025-06-25 11:26:22 -05:00
Jeremiah Lowin
00ed9a07bc
Merge pull request #947 from jlowin/fix-right-nav 2025-06-25 11:55:39 -04:00
Jeremiah Lowin
029007e97e Update CSS 2025-06-25 11:55:03 -04:00
zzstoatzz
66dfeef483 regen api ref 2025-06-25 09:43:22 -05:00
Jeremiah Lowin
7369fbeefa
Merge pull request #938 from jlowin/claude-wt-20250624-182536 2025-06-24 22:49:27 -04:00
Jeremiah Lowin
872f37299e Fix typing 2025-06-24 22:49:01 -04:00
Jeremiah Lowin
38036b1f42 Add automatic MCP list change notifications and client message handling
Implements comprehensive notification system for tools, resources, and prompts with automatic client updates and flexible message handlers.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 22:33:06 -04:00
Jeremiah Lowin
272559a993 Fix duplicate error logging in exception handlers
Remove redundant `{e}` interpolation from logger.exception() calls.
Since logger.exception() automatically logs the full exception traceback,
including `{e}` in the message causes duplicate error output.

Fixes #936

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 22:04:27 -04:00
Jeremiah Lowin
c8da2432c3
Merge pull request #935 from jlowin/source-link-api-ref 2025-06-24 16:54:49 -04:00
zzstoatzz
034fa72b9c run api ref gen 2025-06-24 13:02:03 -05:00
Jeremiah Lowin
9bbca08862
Merge pull request #929 from jlowin/docs1 2025-06-23 19:51:26 -04:00
Jeremiah Lowin
49188a6002 Fix PR numbers 2025-06-23 18:51:39 -04:00
Jeremiah Lowin
336d05ea26 Update changelog and updates for 2.9 release 2025-06-23 18:47:13 -04:00
nate nowack
691e047031
Merge pull request #927 from jlowin/bsky-example-create-thread
add `create_thread` tool to bsky MCP server
2025-06-23 12:52:06 -05:00
zzstoatzz
6d19f4369f i dont think i need that 2025-06-23 12:43:42 -05:00
zzstoatzz
560c347949 Add delay between thread posts to ensure proper indexing
- Add 0.5s sleep between posts in create_thread
- Prevents 'Parent post not found' errors
- Ensures each post is indexed before creating replies

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 12:40:20 -05:00
zzstoatzz
5b10fd2107 thread 2025-06-23 12:38:11 -05:00
Jeremiah Lowin
e117fa0fa3
Merge pull request #924 from jlowin/docstring v2.9.0 2025-06-23 10:30:55 -04:00
Jeremiah Lowin
a14b621ab9 Update release.yml 2025-06-23 10:30:38 -04:00
Jeremiah Lowin
44d5bce0ec
Merge pull request #923 from jlowin/docstring 2025-06-23 10:28:46 -04:00
Jeremiah Lowin
4a4054fe5a Update release categories 2025-06-23 10:28:24 -04:00
Jeremiah Lowin
8b52a6ec73
Merge pull request #922 from jlowin/docstring 2025-06-23 10:23:11 -04:00
Jeremiah Lowin
547bceb154
Merge pull request #919 from jlowin/middleware 2025-06-23 10:18:54 -04:00
Jeremiah Lowin
03d0cad8ed ControlFlow -> FastMCP 😅 2025-06-23 10:18:18 -04:00
Jeremiah Lowin
b2c39f3ce1
Merge pull request #907 from jlowin/feature/api-ref-exclude-modules 2025-06-23 10:17:37 -04:00
nate nowack
e81327d687
Merge pull request #921 from jlowin/rm-source-example
remove uv source in example
2025-06-23 02:33:18 -05:00
zzstoatzz
7b14a00b4e remove uv source in example 2025-06-23 02:31:26 -05:00
nate nowack
8f6570f96c
Merge pull request #920 from jlowin/small-example-fix
fix path in atproto example pyproject
2025-06-23 02:29:01 -05:00
zzstoatzz
e42f9fec7f fix path in atproto example pyproject 2025-06-23 02:27:08 -05:00
nate nowack
d0e4fba34b
Merge pull request #916 from jlowin/atproto-example
Add ATProto (Bluesky) MCP Server Example
2025-06-23 01:07:48 -05:00
zzstoatzz
395bde3d5a rm example as workspace member for now 2025-06-23 01:05:48 -05:00
zzstoatzz
dc52874300 update url for main 2025-06-22 23:48:25 -05:00
zzstoatzz
2701de8e7b Move search from resource to tool
- Search is an action with parameters, not a resource
- Resources are for fetching by URI (profile, timeline, notifications)
- Tools are for actions (post, search, follow, like, repost)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-22 23:28:29 -05:00
zzstoatzz
a5e2cf46fd ope 2025-06-22 23:16:22 -05:00
zzstoatzz
c70ac4284d allow config limit 2025-06-22 23:10:54 -05:00
zzstoatzz
0745f457c8 Refactor ATProto MCP server with unified API
- Consolidate 4 separate posting tools into single flexible 'post' tool
- Reorganize _atproto.py into modular structure with clear separation
- Update demo to test all features comprehensively
- Simplify API: post, follow, like, repost (was 8 tools, now 4)

The unified post tool supports all combinations:
- Simple text posts
- Images (up to 4)
- Rich text (links, mentions)
- Replies and threads
- Quote posts
- Advanced combinations (quote + image, reply + rich text, etc.)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-22 23:06:53 -05:00
zzstoatzz
d30b1b771d update python verison 2025-06-22 22:39:14 -05:00
zzstoatzz
2502ba8093 Fix strong ref creation and image handling in new features
- Use ComAtprotoRepoStrongRef.Main instead of create_strong_ref
- Fix image posting to properly handle downloads and uploads
- Add follow_redirects for image URLs
- All features now tested and working

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-22 22:39:14 -05:00
zzstoatzz
3264c85606 Add advanced ATProto features: replies, rich text, quotes, and images
- Add reply_to_post for threaded conversations
- Add post_with_rich_text for clickable links and mentions
- Add quote_post for sharing with commentary
- Add post_with_images for visual content (up to 4 images)
- Update types with new response structures
- Add httpx dependency for image downloads
- Document AI assistant use cases in README
2025-06-22 22:39:14 -05:00
zzstoatzz
0e89236185 update python verison 2025-06-22 22:39:14 -05:00
zzstoatzz
6905a00b0b Fix ATProto API calls for follow, like, and repost
- Fix follow_user to use params dict for search_actors API
- Add CID fetching for like_post (required by atproto API)
- Add CID fetching for repost (required by atproto API)
- Both like and repost now fetch the post first to get its CID
2025-06-22 22:39:14 -05:00
zzstoatzz
2eb10094b5 Refactor ATProto example to use resources and proper type annotations
- Add TypedDict definitions for all responses in types.py
- Convert read operations to resources (status, timeline, search, notifications)
- Keep state-modifying operations as tools (post, follow, like, repost)
- Add proper type annotations with Annotated and Field descriptions
- Update demo to use read_resource for resources
- Better separation of concerns with typed interfaces
2025-06-22 22:39:14 -05:00
zzstoatzz
5c23ac8ee9 Refactor ATProto example with modular design and improved demo
- Create _atproto.py module for private implementation details
- Clean server.py to only expose public API (tools)
- Update demo with --post flag instead of comments
- Better separation of concerns
2025-06-22 22:39:14 -05:00