# PulseEngine MCP Macros

Procedural macros for the PulseEngine MCP Framework that dramatically simplify server and tool development.

## Overview

This crate provides macros that reduce boilerplate code and enable a more developer-friendly experience while maintaining the enterprise-grade capabilities of PulseEngine MCP.

## Macros

### `#[mcp_tool]`

Automatically generates MCP tool definitions from Rust functions:

```rust
use pulseengine_mcp_macros::mcp_tool;

#[mcp_tool(description = "Say hello to someone")]
async fn say_hello(name: String, greeting: Option<String>) -> String {
    format!("{}, {}!", greeting.unwrap_or("Hello"), name)
}
```

### `#[mcp_backend]`

Auto-implements the `McpBackend` trait:

```rust
use pulseengine_mcp_macros::mcp_backend;

#[mcp_backend(name = "Hello World Server")]
struct HelloWorldBackend;
```

### `#[mcp_server]`

Complete server generation from a simple struct:

```rust
use pulseengine_mcp_macros::mcp_server;

#[mcp_server(name = "My Server")]
struct MyServer;
```

## Features

- **Zero Boilerplate**: Focus on business logic, not protocol details
- **Type Safety**: Compile-time validation of tool definitions
- **Auto Schema Generation**: JSON schemas derived from Rust types
- **Doc Comments**: Function documentation becomes tool descriptions
- **Progressive Complexity**: Start simple, add enterprise features as needed

## Usage

Add this to your `Cargo.toml`:

```toml
[dependencies]
pulseengine-mcp-macros = "0.5"
```

## License

Licensed under either of

- Apache License, Version 2.0, ([LICENSE-APACHE](../LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT](../LICENSE-MIT) or http://opensource.org/licenses/MIT)

at your option.
