Update README with deployment options and MCP configuration examples

This commit is contained in:
Kaustabh Ganguly
2025-03-26 22:28:30 +05:30
parent 7a57d56f6b
commit c6eb0c893d

124
README.md
View File

@@ -26,32 +26,92 @@ An MCP (Model Context Protocol) server that provides chat and image analysis cap
- Exponential backoff for retries - Exponential backoff for retries
- Automatic rate limit handling - Automatic rate limit handling
## Installation ## Quick Start Configuration
```bash
npm install @stabgan/openrouter-mcp-multimodal
```
## Configuration
### Prerequisites ### Prerequisites
1. Get your OpenRouter API key from [OpenRouter Keys](https://openrouter.ai/keys) 1. Get your OpenRouter API key from [OpenRouter Keys](https://openrouter.ai/keys)
2. Choose a default model (optional) 2. Choose a default model (optional)
### Setup ### MCP Configuration Options
Add the server to your MCP settings file (e.g., `cline_mcp_settings.json` or `claude_desktop_config.json`): Add one of the following configurations to your MCP settings file (e.g., `cline_mcp_settings.json` or `claude_desktop_config.json`):
#### Option 1: Using npx (Node.js)
```json ```json
{ {
"mcpServers": { "mcpServers": {
"openrouter_multimodal": { "openrouter": {
"command": "npx", "command": "npx",
"args": ["@stabgan/openrouter-mcp-multimodal"], "args": [
"-y",
"@stabgan/openrouter-mcp-multimodal"
],
"env": { "env": {
"OPENROUTER_API_KEY": "your-api-key-here", "OPENROUTER_API_KEY": "your-api-key-here",
"OPENROUTER_DEFAULT_MODEL": "optional-default-model" "OPENROUTER_DEFAULT_MODEL": "anthropic/claude-3.5-sonnet"
}
}
}
}
```
#### Option 2: Using uv (Python Package Manager)
```json
{
"mcpServers": {
"openrouter": {
"command": "uv",
"args": [
"run",
"-m",
"openrouter_mcp_multimodal"
],
"env": {
"OPENROUTER_API_KEY": "your-api-key-here",
"OPENROUTER_DEFAULT_MODEL": "anthropic/claude-3.5-sonnet"
}
}
}
}
```
#### Option 3: Using Docker
```json
{
"mcpServers": {
"openrouter": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "OPENROUTER_API_KEY=your-api-key-here",
"-e", "OPENROUTER_DEFAULT_MODEL=anthropic/claude-3.5-sonnet",
"stabgan/openrouter-mcp-multimodal:latest"
]
}
}
}
```
#### Option 4: Using Smithery (recommended)
```json
{
"mcpServers": {
"openrouter": {
"command": "smithery",
"args": [
"run",
"stabgan/openrouter-mcp-multimodal"
],
"env": {
"OPENROUTER_API_KEY": "your-api-key-here",
"OPENROUTER_DEFAULT_MODEL": "anthropic/claude-3.5-sonnet"
} }
} }
} }
@@ -66,7 +126,7 @@ Send text or multimodal messages to OpenRouter models:
```javascript ```javascript
use_mcp_tool({ use_mcp_tool({
server_name: "openrouter_multimodal", server_name: "openrouter",
tool_name: "chat_completion", tool_name: "chat_completion",
arguments: { arguments: {
model: "google/gemini-2.5-pro-exp-03-25:free", // Optional if default is set model: "google/gemini-2.5-pro-exp-03-25:free", // Optional if default is set
@@ -89,7 +149,7 @@ For multimodal messages with images:
```javascript ```javascript
use_mcp_tool({ use_mcp_tool({
server_name: "openrouter_multimodal", server_name: "openrouter",
tool_name: "chat_completion", tool_name: "chat_completion",
arguments: { arguments: {
model: "anthropic/claude-3.5-sonnet", model: "anthropic/claude-3.5-sonnet",
@@ -120,7 +180,7 @@ Analyze a single image with an optional question:
```javascript ```javascript
use_mcp_tool({ use_mcp_tool({
server_name: "openrouter_multimodal", server_name: "openrouter",
tool_name: "analyze_image", tool_name: "analyze_image",
arguments: { arguments: {
image_path: "/absolute/path/to/image.jpg", image_path: "/absolute/path/to/image.jpg",
@@ -136,7 +196,7 @@ Analyze multiple images with a single prompt:
```javascript ```javascript
use_mcp_tool({ use_mcp_tool({
server_name: "openrouter_multimodal", server_name: "openrouter",
tool_name: "multi_image_analysis", tool_name: "multi_image_analysis",
arguments: { arguments: {
images: [ images: [
@@ -160,7 +220,7 @@ Search and filter available models:
```javascript ```javascript
use_mcp_tool({ use_mcp_tool({
server_name: "openrouter_multimodal", server_name: "openrouter",
tool_name: "search_models", tool_name: "search_models",
arguments: { arguments: {
query: "claude", // Optional text search query: "claude", // Optional text search
@@ -179,7 +239,7 @@ Get detailed information about a specific model:
```javascript ```javascript
use_mcp_tool({ use_mcp_tool({
server_name: "openrouter_multimodal", server_name: "openrouter",
tool_name: "get_model_info", tool_name: "get_model_info",
arguments: { arguments: {
model: "anthropic/claude-3.5-sonnet" model: "anthropic/claude-3.5-sonnet"
@@ -193,7 +253,7 @@ Check if a model ID is valid:
```javascript ```javascript
use_mcp_tool({ use_mcp_tool({
server_name: "openrouter_multimodal", server_name: "openrouter",
tool_name: "validate_model", tool_name: "validate_model",
arguments: { arguments: {
model: "google/gemini-2.5-pro-exp-03-25:free" model: "google/gemini-2.5-pro-exp-03-25:free"
@@ -211,6 +271,32 @@ The server provides detailed error messages for various failure cases:
- Invalid image formats - Invalid image formats
- Authentication problems - Authentication problems
## Troubleshooting
### Common Issues
- **"fetch is not defined" error**: This often occurs when the Node.js environment doesn't have global fetch. Use Node.js v18+ or add the PATH environment variable to your configuration as shown below:
```json
{
"mcpServers": {
"openrouter": {
"command": "npx",
"args": [
"-y",
"@stabgan/openrouter-mcp-multimodal"
],
"env": {
"OPENROUTER_API_KEY": "your-api-key-here",
"PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
}
}
}
}
```
- **Image analysis failures**: Make sure your image path is absolute and the file format is supported.
## Development ## Development
To build from source: To build from source: