A Ruby implementation of an AI Pair Programmer MCP (Model Context Protocol) server that provides AI-powered tools for code review, brainstorming, performance analysis, and security review.
This server provides 5 AI-powered tools:
- pair - General collaboration and problem-solving
- review - Comprehensive code review with actionable feedback
- brainstorm - Creative ideation and solution exploration
- review_performance - Performance analysis and optimization suggestions
- review_security - Security-focused code review and vulnerability detection
- Ruby 3.0+
- An OpenRouter API key
The server uses inline bundler for automatic gem installation. Required gems:
fast-mcp
- Ruby MCP server frameworkruby_llm
- Unified AI model interface
- Set your OpenRouter API key:
export OPENROUTER_API_KEY="your_api_key_here"
ruby ./server.rb
The server will:
- Automatically install missing gems on first run
- Start with STDIO transport for MCP clients
- Log to STDERR which should be saved by your MCP Host.
If the MCP fails to start when lunching Claude Code it's probably due to timeout.
The bundler is installing dependecies. To fix that either set an envvar MCP_TIMEOUT=10000
(10s) or start the MCP server in the terminal first.
The server supports these AI models via OpenRouter:
- Gemini (default) -
google/gemini-2.5-pro-preview
- O3 -
openai/o3
- Grok -
x-ai/grok-3-beta
- DeepSeek -
deepseek/deepseek-r1-0528
- Opus -
anthropic/claude-opus-4
Add to your claude_desktop_config.json
:
{
"mcpServers": {
"AiPairProgrammer": {
"command": "ruby",
"args": ["/path/to/server.rb"]
}
}
}
Once connected to an MCP client:
Please review this Ruby code for best practices and potential issues:
def process_data(items)
items.map { |item| item.upcase }
end
Can you analyze this code for performance bottlenecks?
def find_duplicates(array)
duplicates = []
array.each do |item|
if array.count(item) > 1 && !duplicates.include?(item)
duplicates << item
end
end
duplicates
end
Please check this authentication code for security vulnerabilities:
def authenticate(username, password)
user = User.find_by(username: username)
if user && user.password == password
session[:user_id] = user.id
true
else
false
end
end
I need ideas for improving user onboarding in my Ruby on Rails app. The current flow has a 60% drop-off rate.
I'm struggling with this algorithm problem. Can you help me think through it step by step?
The server is built with:
- FastMcp - Ruby MCP server framework with STDIO transport
- RubyLLM - Unified interface to AI models via OpenRouter
- Inline Bundler - Automatic gem installation for easy deployment
MIT License
AI Assistant MCP Server by Eduard https://github.com/eduardm/ai_pairs_with_ai
- Fork the repository
- Create a feature branch
- Make your changes
- Test with
ruby test_server.rb
- Submit a pull request