arcade-mcp/libs/arcade-tdk
Eric Gustin 9e4d36b8e3
Local MCP Fixes and Address General Feedback (#586)
# Release Candidate 2
## This PR:
- [x] No more confusing 307 redirect logs when using `/mcp` instead of
`/mcp/` (requested by @shubcodes)
- [x] Fix bug in `arcade configure` for Python < 3.12 (reported by
@evantahler
- [x] Fix bug where tools with unsatisfied secret requirements could
still be executed (reported by @evantahler, @shubcodes)
- [x] Auth providers can now be imported via `from
arcade_mcp_server.auth import Reddit` (requested by @shubcodes)
- [x] Add complete E2E oauth flow for tool calls with informational
errors about how to log into arcade and where to go to authorize
(requested by @evantahler, @shubcodes)
- [x] Add OAuth tool in `arcade new`'s generated server (requested by
@shubcodes)
- [x] Standardize on defaulting to running servers on port 8000
- [x] Improve credentials.yaml reading logic
- [x] CLI user friendliness (requested by @Spartee)
- [x] Remove `arcade serve` CLI command
- [x] Fix race condition in `arcade logout`
- [x] Update docs for desired developer onboarding flow

## Next PRs:
- Get `arcade deploy` working for MCP servers. (Command is hidden for
now)
- Rename all occurrences of `toolkit` to `server`/`tools` and rename all
occurrences of `worker` to `server`
2025-09-29 16:00:47 -07:00
..
arcade_tdk [READY][PROD-215][TDK] Adding Slack error adaptor (#577) 2025-09-24 17:26:37 -03:00
pyproject.toml Local MCP Fixes and Address General Feedback (#586) 2025-09-29 16:00:47 -07:00
README.md PyPI release arcade-serve and arcade-tdk (#432) 2025-06-13 13:06:11 -07:00

Arcade TDK (Toolkit Development Kit)

Toolkit Development Kit for building and testing Arcade tools.

Overview

Arcade TDK provides the essential tools and utilities for building Arcade tools:

  • Tool Decorator: Simple @tool decorator for creating Arcade tools
  • Authentication: Auth providers and helpers for tool security
  • Annotations: Type annotations and parameter validation
  • Core Integration: Seamless integration with arcade-core components

Installation

pip install arcade-tdk

Usage

from typing import Annotated

from arcade_tdk import tool

@tool
def hello_world(name: Annotated[str, "The name of the person to greet"]) -> str:
    """Say hello to someone."""
    return f"Hello, {name}!"

# The tool is automatically registered and available for use

Advanced Usage

from typing import Annotated

from arcade_tdk import tool, ToolCatalog, Toolkit
from arcade_tdk.auth import Reddit

# Create tools with auth requirement
@tool(requires_auth=Reddit(scopes=["read"]))
def get_posts_in_subreddit(
    subreddit: Annotated[str, "The name of the subreddit"],
    limit: Annotated[int, "The number of posts to return]
) -> dict:
    """Get posts from a specific subreddit"""
    # TODO: Implement your Reddit tool
    return {}

License

MIT License - see LICENSE file for details.