Skip to main content
Glama

@mcp/openverse

README.md5.68 kB
# @mcp/openverse An MCP (Model Context Protocol) server that provides tools for searching and fetching openly-licensed images from [Openverse](https://openverse.org/). <a href="https://glama.ai/mcp/servers/@neno-is-ooo/mcp-openverse"> <img width="380" height="200" src="https://glama.ai/mcp/servers/@neno-is-ooo/mcp-openverse/badge" alt="@mcp/openverse MCP server" /> </a> ## Features - 🔍 Search for CC-licensed and public domain images - 🎨 Filter by license type, source, file format, and more - 📊 Get detailed image information including attribution - 🔗 Find related images - 📝 Essay-specific image search for content illustration - ⚡ Built with TypeScript and fastmcp for excellent performance ## Installation ```bash npm install -g @mcp/openverse ``` Or install from source: ```bash git clone https://github.com/yourusername/mcp-openverse.git cd mcp-openverse npm install npm run build npm link ``` ## Usage ### As an MCP Server Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`): ```json { "mcpServers": { "openverse": { "command": "npx", "args": ["@mcp/openverse"] } } } ``` Or if installed locally: ```json { "mcpServers": { "openverse": { "command": "node", "args": ["/path/to/mcp-openverse/dist/index.js"] } } } ``` ### Available Tools #### `search_images` Search for openly-licensed images with various filters. Parameters: - `query` (required): Search terms - `page`: Page number (default: 1) - `page_size`: Results per page (default: 20, max: 500) - `license`: License type (`by`, `by-sa`, `by-nc`, `by-nd`, `cc0`, etc.) - `license_type`: `commercial` or `modification` - `creator`: Filter by creator name - `source`: Filter by source (`flickr`, `wikimedia`, `met`, etc.) - `extension`: File type (`jpg`, `png`, `gif`, `svg`) - `aspect_ratio`: `tall`, `wide`, or `square` - `size`: `small`, `medium`, or `large` - `mature`: Include mature content (default: false) Example: ```typescript // Search for nature photos with commercial license { "query": "forest landscape", "page_size": 10, "license_type": "commercial", "extension": "jpg", "aspect_ratio": "wide" } ``` #### `get_image_details` Get detailed information about a specific image. Parameters: - `image_id` (required): Openverse image ID (UUID format) #### `get_related_images` Find images related to a specific image. Parameters: - `image_id` (required): The image ID to find related images for - `page`: Page number (default: 1) - `page_size`: Results per page (default: 10) #### `get_image_stats` Get statistics about available images by source. No parameters required. #### `search_images_for_essay` High-level tool for finding images to illustrate essays or articles. Parameters: - `essay_topic` (required): Main topic/title of the essay - `concepts` (required): Array of key concepts to find images for - `style`: `photo`, `illustration`, or `any` (default: `any`) - `max_images`: Maximum images to return (default: 10) Example: ```typescript { "essay_topic": "Climate Change", "concepts": ["global warming", "renewable energy", "carbon emissions"], "style": "photo", "max_images": 15 } ``` ## Image Attribution All images from Openverse come with attribution requirements. The API provides: - `attribution`: Pre-formatted attribution text - `license`: License code (e.g., 'by-sa') - `license_url`: Link to the license - `creator`: Original creator/photographer - `creator_url`: Link to creator's profile Always include proper attribution when using images. ## Rate Limits The Openverse API has the following rate limits: - Anonymous: 100 requests/day, 5 requests/hour - Authenticated: 10,000 requests/day, 100 requests/minute This MCP server currently uses anonymous access. For higher rate limits, consider implementing OAuth authentication. ## Development ### Building from Source ```bash npm install npm run build ``` ### Running in Development Mode ```bash npm run dev ``` ### Testing the Server You can test the server using the MCP inspector: ```bash npx @modelcontextprotocol/inspector dist/index.js ``` ## Examples ### Finding Images for a Blog Post ```typescript // Using the search_images_for_essay tool { "essay_topic": "Sustainable Architecture", "concepts": ["green building", "solar panels", "eco-friendly design"], "style": "photo", "max_images": 10 } ``` ### Searching with Specific Requirements ```typescript // Using the search_images tool { "query": "mountain landscape sunrise", "aspect_ratio": "wide", "license_type": "commercial", "extension": "jpg", "size": "large", "page_size": 20 } ``` ## License MIT License - see LICENSE file for details. ## Contributing Contributions are welcome! Please feel free to submit a Pull Request. ### Development Guidelines 1. Follow TypeScript best practices 2. Add tests for new features 3. Update documentation 4. Ensure all tools have proper error handling ## Acknowledgments - [Openverse](https://openverse.org/) for providing the API and openly-licensed content - [WordPress](https://github.com/WordPress/openverse) for maintaining the Openverse project - [fastmcp](https://github.com/punkpeye/fastmcp) for the excellent MCP framework ## Troubleshooting ### Common Issues 1. **Rate limit errors**: You're hitting the anonymous API limits. Wait an hour or implement authentication. 2. **No results**: Try broader search terms or remove filters. 3. **Connection errors**: Check your internet connection and firewall settings. ### Debug Mode Set the `DEBUG` environment variable: ```bash DEBUG=mcp:* npx @mcp/openverse ```

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/neno-is-ooo/mcp-openverse'

If you have feedback or need assistance with the MCP directory API, please join our Discord server