# CLAUDE.md
## š“ CRITICAL Requirements
**MANDATORY before ANY code:**
1. TypeScript: NEVER use `any`. Use `unknown` or proper types
2. Security: NO API keys in logs. NO vulnerabilities
3. Validation: `pnpm run tsc && pnpm run lint && pnpm run test`
4. Tools limit: ā¤20 (hard limit: 25)
**MANDATORY reads:**
- Tools ā `docs/adding-tools.mdc`
- Prompts ā `docs/adding-prompts.mdc`
- Resources ā `docs/adding-resources.mdc`
- Testing ā `docs/testing.mdc`
- PRs ā `docs/pr-management.mdc`
## š” MANDATORY Workflow
```bash
# BEFORE coding (parallel execution)
cat docs/[component].mdc & ls -la neighboring-files & git status
# AFTER coding (sequential - fail fast)
pnpm run tsc && pnpm run lint && pnpm run test # ALL must pass
```
## Repository Map
```
sentry-mcp/
āāā packages/
ā āāā mcp-server/ # Main MCP server
ā ā āāā src/
ā ā ā āāā tools/ # 19 tool modules
ā ā ā āāā prompts.ts # MCP prompts
ā ā ā āāā resources.ts # MCP resources
ā ā ā āāā server.ts # MCP protocol
ā ā ā āāā api-client/ # Sentry API
ā ā ā āāā internal/ # Shared utils
ā ā āāā scripts/ # Build scripts
ā āāā mcp-cloudflare/ # Web app
ā āāā mcp-server-evals/ # AI tests
ā āāā mcp-server-mocks/ # MSW mocks
ā āāā mcp-test-client/ # Test client
āāā docs/ # All docs
```
## AI-Powered Search Tools
**search_events** (`packages/mcp-server/src/tools/search-events/`):
- Natural language ā DiscoverQL queries
- GPT-4o agent with structured outputs
- Tools: `datasetAttributes`, `otelSemantics`, `whoami`
- Requires: `OPENAI_API_KEY`
**search_issues** (`packages/mcp-server/src/tools/search-issues/`):
- Natural language ā issue search syntax
- GPT-4o agent with structured outputs
- Tools: `issueFields`, `whoami`
- Requires: `OPENAI_API_KEY`
## š¢ Key Commands
```bash
# Development
pnpm run dev # Start development
pnpm run build # Build all packages
pnpm run generate-otel-namespaces # Update OpenTelemetry docs
# Quality checks (combine for speed)
pnpm run tsc && pnpm run lint && pnpm run test
# Common workflows
pnpm run build && pnpm run test # Before PR
grep -r "TODO\|FIXME" src/ # Find tech debt
```
## Quick Reference
**Defaults:**
- Organization: `sentry`
- Project: `mcp-server`
- Transport: stdio
- Auth: access tokens (NOT OAuth)
**Doc Index:**
- `docs/adding-tools.mdc` - Tool development
- `docs/adding-prompts.mdc` - Prompt development
- `docs/adding-resources.mdc` - Resource development
- `docs/testing.mdc` - Testing requirements
- `docs/common-patterns.mdc` - Code patterns
- `docs/api-patterns.mdc` - API usage
- `docs/architecture.mdc` - System design
- `docs/quality-checks.mdc` - Quality checks
- `docs/pr-management.mdc` - PR guidelines
## Rules
1. **Code**: Follow existing patterns. Check adjacent files
2. **Errors**: Try/catch all async. Log: `console.error('[ERROR]', error.message, error.stack)`
- Sentry API 429: Retry with exponential backoff
- Sentry API 401/403: Check token permissions
3. **Docs**: Update when changing functionality
4. **PR**: Read `docs/pr-management.mdc`. Include Claude Code attribution
5. **Tasks**: Use TodoWrite for 3+ steps. Batch tool calls when possible
---
*Optimized for Claude Code (Sonnet 4/Opus 4)*