We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/joelgombin/mcp-wikidata'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
"""Configuration management for MCP Wikidata server."""
import os
from pathlib import Path
from typing import Optional
from pydantic import BaseModel, Field
from dotenv import load_dotenv
class Config(BaseModel):
user_agent: str = Field(
default="MCP-Wikidata/0.1.0",
description="User-Agent string for API requests"
)
rate_limit: int = Field(
default=60,
description="Maximum requests per minute"
)
timeout: int = Field(
default=30,
description="Request timeout in seconds"
)
cache_ttl: int = Field(
default=3600,
description="Cache TTL in seconds"
)
max_results: int = Field(
default=50,
description="Maximum number of results per request"
)
sparql_endpoint: str = Field(
default="https://query.wikidata.org/sparql",
description="SPARQL endpoint URL"
)
wikibase_api_url: str = Field(
default="https://www.wikidata.org/w/api.php",
description="Wikibase API endpoint URL"
)
default_language: str = Field(
default="en",
description="Default language code"
)
@classmethod
def from_env(cls) -> "Config":
load_dotenv()
return cls(
user_agent=os.getenv("WIKIDATA_USER_AGENT", "MCP-Wikidata/0.1.0"),
rate_limit=int(os.getenv("WIKIDATA_RATE_LIMIT", "60")),
timeout=int(os.getenv("WIKIDATA_TIMEOUT", "30")),
cache_ttl=int(os.getenv("WIKIDATA_CACHE_TTL", "3600")),
max_results=int(os.getenv("WIKIDATA_MAX_RESULTS", "50")),
sparql_endpoint=os.getenv(
"WIKIDATA_SPARQL_ENDPOINT",
"https://query.wikidata.org/sparql"
),
wikibase_api_url=os.getenv(
"WIKIDATA_API_URL",
"https://www.wikidata.org/w/api.php"
),
default_language=os.getenv("WIKIDATA_DEFAULT_LANGUAGE", "en"),
)
@classmethod
def from_file(cls, config_path: Optional[str] = None) -> "Config":
if config_path and Path(config_path).exists():
import json
with open(config_path) as f:
config_data = json.load(f)
return cls(**config_data)
return cls.from_env()