A Model Context Protocol (MCP) server built with FastMCP that exposes the structure and documentation of the openreview-py library. This allows LLM clients to discover available classes, functions, and their documentation to generate accurate Python code examples using the OpenReview library.
This MCP server provides read-only access to the openreview-py library's structure - no code execution or API calls are performed. It's designed to help LLMs understand and generate code using the OpenReview Python library by providing:
- Function signatures and documentation
- Class structures and methods
- Search capabilities across the library
- Comprehensive library overview
- Python 3.11+
uvpackage manager
- Clone and navigate to the project:
cd openreview-mcp- Install dependencies:
uv syncThis will install:
fastmcp- MCP server frameworkopenreview-py- The library we're introspecting (from GitHub)- Development tools (pytest, black, ruff, mypy)
Start the MCP server:
uv run openreview-mcpOr run directly:
uv run python src/server.pyThe server will start and display available tools:
Starting OpenReview Python Library MCP Server...
Available tools:
- list_openreview_functions: List all available functions
- list_openreview_classes: List all available classes
- search_openreview_api: Search functions by keyword
- get_openreview_overview: Get library overview
- get_function_details: Get detailed function information
Lists all available functions from the openreview-py library.
Parameters:
filter_by_module(optional): Filter by specific module (e.g., "openreview.api")
Returns: Array of functions with name, docstring, module, signature, and type.
Lists all available classes from the openreview-py library.
Parameters:
include_methods(default: true): Whether to include class methods
Returns: Array of classes with name, docstring, module, and methods.
Search for functions by name or keywords in docstrings.
Parameters:
query(required): Search term
Returns: Array of matching functions.
Get a comprehensive overview of the entire library.
Returns: Dictionary with functions, classes, modules, and statistics.
Get detailed information about a specific function.
Parameters:
function_name(required): Name of the function
Returns: Detailed function information.
openreview-mcp/
βββ src/
β βββ server.py # FastMCP server implementation
β βββ introspect.py # Library introspection utilities
β βββ __init__.py # (optional) package init
βββ pyproject.toml # Project configuration and dependencies
βββ README.md # This file
β Implemented:
- Complete FastMCP server setup with 5 tools
- Project structure and configuration
- Stub implementations with realistic example data
π§ TODO - Future Enhancements:
The current implementation uses stub data. Here's how to expand it:
# TODO: Replace stub implementations with real introspection
import openreview
import inspect
def get_openreview_functions():
# Use inspect module to dynamically discover functions
# Walk through openreview module and submodules
# Extract real docstrings, signatures, parameters
pass# TODO: Implement advanced search features
- Fuzzy string matching
- Search in parameter names and types
- Regex pattern support
- Result ranking by relevance# TODO: Add caching for introspection results
- Cache function/class discoveries
- Lazy loading of module information
- Performance monitoring and optimization# TODO: Add sophisticated filtering options
- Filter by function complexity
- Filter by parameter count
- Include/exclude private methods
- Filter by inheritance hierarchy# Install development dependencies
uv sync --dev
# Run tests (when implemented)
uv run pytest
# Format code
uv run black .
# Lint code
uv run ruff check .
# Type checking
uv run mypy .To add a new tool to the server:
- Define the tool function in
server.py:
@mcp.tool()
def your_new_tool(param1: str, param2: int = 10) -> Dict[str, Any]:
"""
Description of what your tool does.
Args:
param1: Description of parameter
param2: Optional parameter with default
Returns:
Description of return value
"""
# Implementation here
return {"result": "your data"}- Add any supporting logic to
introspect.pyif needed:
def supporting_function():
"""Helper function for your new tool."""
pass- Update the main() function to advertise the new tool:
def main():
print("Available tools:")
print("- your_new_tool: Description")Configure the server in your Claude Desktop MCP settings:
{
"mcpServers": {
"openreview": {
"command": "uv",
"args": ["run", "python", "/path/to/openreview-mcp/src/server.py"],
"host": "localhost",
"port": 4000
}
}
}You can also configure the MCP server in VS Code using the Model Context Protocol extension (or compatible MCP client):
- Open the command palette and search for "MCP: Add Server" or open the MCP extension settings.
- Make sure the port matches your deployment (default is 4000, or set MCP_PORT env variable).
- Save and connect to the server from the MCP extension sidebar.
Once connected (in Claude Desktop or VS Code), you can ask:
"What functions are available for working with notes in OpenReview?"
The client would use the search_openreview_api tool with query "note" to find relevant functions.
"Show me all the classes in the openreview library"
The client would use list_openreview_classes to get the class information.
Key areas for contribution:
- Implement real introspection in
introspect.pyusing Python'sinspectmodule - Add comprehensive error handling for import failures and edge cases
- Implement caching for better performance
- Add tests for all functionality
- Enhance search capabilities with fuzzy matching and ranking
- Read-only: This server only provides metadata - no code execution
- No API calls: No actual OpenReview API interactions
- No authentication: No API keys or credentials required
- Educational: Designed for code generation assistance, not production API usage
This project is provided as-is for educational and development purposes.