arcade-mcp/libs/arcade-mcp-server/docs/examples/03_context.md
Eric Gustin a11f79b32d
Update arcade-mcp-server docs (#597)
1. Updates docs to prefer `uv run server.py` instead of `arcade mcp` or
`python -m arcade_mcp_server`
2. Found a bug with running stdio servers while updating the docs, so i
snuck that in this PR
2025-10-02 17:16:38 -07:00

1.6 KiB

03 - Tool Context

Access runtime features through Context including logging, secrets, and progress reporting.

Running the Example

  • Run: uv run 03_context.py
  • Run (stdio): uv run 03_context.py stdio
  • Env: set API_KEY, DATABASE_URL

Source Code

--8<-- "docs/examples/03_context.py"

Context Features

The Context provides access to runtime features:

1. Logging

Send log messages at different levels:

await context.log.debug("Debug message")
await context.log.info("Information message")
await context.log.warning("Warning message")
await context.log.error("Error message")

2. Secrets Management

Access environment variables securely:

try:
    api_key = context.get_secret("API_KEY")
except ValueError:
    # Handle missing secret

3. User Context

Access information about the current user:

user_id = context.user_id or "anonymous"

4. Progress Reporting

Report progress for long-running operations:

await context.progress.report(current, total, "Processing...")

5. Tool Decorator Options

Specify required secrets:

@tool(requires_secrets=["DATABASE_URL", "API_KEY"])
async def my_tool(context: Context, ...):

Key Concepts

  • Context Parameter: Tools receive a Context as their first parameter
  • Async Functions: Use async def for tools that use context features
  • Secure Secrets: Secrets are accessed through context, not hardcoded
  • Structured Logging: Log at appropriate levels for debugging
  • Progress Updates: Keep users informed during long operations