# MCProto

## Installation
TODO: Launch - Gem hasn't been made public 

## Usage

MCProto is a Ruby gem that allows you to chain MCP servers and auxiliary ruby code together for custom solutions.

After installing the gem, create an initializer, `config/initializers/mcproto.rb` and create your servers:

```ruby
# Create any number of servers by passing in server classes, host, and port.
beta_invite_server = MCProto::Server.new(
  InviteUserToBeta,
  host: 'localhost',
  port: 3000
)

# Perform logic you may need before starting the servers.
beta_invite_server.start!
```

Ex: An MCP server can be run on its own

```ruby
# servers/tag_user.rb
class TriggerByEmail
  include MCProto 
  
  delegate :email, to: :context
  
  resource do
    # TODO
    # define your resource (ex: db table)
    { name: 'email', description: 'Trigger by email' }
  end
  
  tool do
    # TODO
    description "Run when use email is mentioned."
  end
  
  call do
    run unless email_exists?(email)
  end
  
  private
  
  def email_exists?(email)
    #...
  end
end
```

Or, chain them together:

```ruby
# servers/invite_user_to_beta.rb
class InviteUserToBeta
  include MCProto::Chain
  
  chain [ TriggerByEmail, SendEmailInvite ]
end
```

Each server can access the `context` object and read data from previous servers, or add their own data to the context.

## License

The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).

## Code of Conduct

Everyone interacting in the Mcproto project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/mcproto/blob/master/CODE_OF_CONDUCT.md).
