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

64 lines
1.6 KiB
Markdown

# 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
```python
--8<-- "docs/examples/03_context.py"
```
## Context Features
The Context provides access to runtime features:
### 1. Logging
Send log messages at different levels:
```python
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:
```python
try:
api_key = context.get_secret("API_KEY")
except ValueError:
# Handle missing secret
```
### 3. User Context
Access information about the current user:
```python
user_id = context.user_id or "anonymous"
```
### 4. Progress Reporting
Report progress for long-running operations:
```python
await context.progress.report(current, total, "Processing...")
```
### 5. Tool Decorator Options
Specify required secrets:
```python
@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