mcp nefino
Provides large language models with access to news and information about renewable energy projects in Germany, allowing filtering by location, topic (solar, wind, hydrogen), and date range.
Provides large language models with access to news and information about renewable energy projects in Germany, allowing filtering by location, topic (solar, wind, hydrogen), and date range.
The Nefino MCP Server is a Model Context Protocol (MCP) server that provides Large Language Models (LLMs) with access to news and information about renewable energy projects, planning, and announcements in Germany. It integrates with the Nefino API to provide structured access to this data.
pip install git+https://github.com/nefino/mcp-nefino.git
The server requires several environment variables to be set. They should be passed in directly when running the server.
NEFINO_USERNAME=your_username
NEFINO_PASSWORD=your_password
NEFINO_JWT_SECRET=your_jwt_secret
NEFINO_BASE_URL=http://api_endpoint
Install Claude Desktop
Add the following to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json
on macOS or %APPDATA%Claudeclaude_desktop_config.json
on Windows):
{
"mcpServers": {
"nefino": {
"command": "python",
"args": ["-m", "mcp_nefino"],
"env": {
"NEFINO_USERNAME": "your_username",
"NEFINO_PASSWORD": "your_password",
"NEFINO_JWT_SECRET": "your_jwt_secret",
"NEFINO_BASE_URL": "http://api_endpoint"
}
}
}
}
You can also run the server directly:
python -m mcp_nefino
Retrieves news items for a specific location with various filtering options.
Parameters:
- place_id
(string): The ID of the place
- place_type
(enum): Type of place (PR, CTY, AU, LAU)
- range_or_recency
(enum, optional): RANGE or RECENCY
- last_n_days
(integer, optional): Number of days to look back (for RECENCY mode)
- date_range_begin
(string, optional): Start date in YYYY-MM-DD format (for RANGE mode)
- date_range_end
(string, optional): End date in YYYY-MM-DD format (for RANGE mode)
- news_topics
(list of enums, optional): Topics to filter by (BATTERY_STORAGE, GRID_EXPANSION, SOLAR, HYDROGEN, WIND)
Example query via Claude:
Get renewable energy news for administrative unit DE9_AU0213 from January to June 2024, focusing on solar projects.
To run in development mode with the MCP Inspector:
mcp dev -m mcp_nefino
The server performs validation on: - Date formats (YYYY-MM-DD) - Date range validity - Parameter combinations for RANGE vs RECENCY modes - API credentials and connectivity - News topic validity
All errors are returned with descriptive messages to help diagnose issues.
[License type - e.g., MIT] - see LICENSE file for details
[
{
"description": "Start an asynchronous news retrieval task for a place",
"inputSchema": {
"$defs": {
"NewsTopic": {
"enum": [
"batteryStorage",
"gridExpansion",
"solar",
"hydrogen",
"wind"
],
"title": "NewsTopic",
"type": "string"
},
"PlaceTypeNews": {
"enum": [
"PR",
"CTY",
"AU",
"LAU"
],
"title": "PlaceTypeNews",
"type": "string"
},
"RangeOrRecency": {
"enum": [
"RANGE",
"RECENCY"
],
"title": "RangeOrRecency",
"type": "string"
}
},
"properties": {
"date_range_begin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": {
"path": "uv.lock",
"type": "blob"
},
"description": "Start date in YYYY-MM-DD format (when range_or_recency=RANGE)",
"title": "Date Range Begin"
},
"date_range_end": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": {
"path": "uv.lock",
"type": "blob"
},
"description": "End date in YYYY-MM-DD format (when range_or_recency=RANGE)",
"title": "Date Range End"
},
"last_n_days": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": {
"path": "uv.lock",
"type": "blob"
},
"description": "Number of days to search for (when range_or_recency=RECENCY)",
"title": "Last N Days"
},
"news_topics": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/NewsTopic"
},
"type": "array"
},
{
"type": "null"
}
],
"default": {
"path": "uv.lock",
"type": "blob"
},
"description": "List of topics to filter by",
"title": "News Topics"
},
"place_id": {
"description": "The id of the place",
"title": "Place Id",
"type": "string"
},
"place_type": {
"$ref": "#/$defs/PlaceTypeNews",
"description": "The type of the place (PR, CTY, AU, LAU)"
},
"range_or_recency": {
"anyOf": [
{
"$ref": "#/$defs/RangeOrRecency"
},
{
"type": "null"
}
],
"default": {
"path": "uv.lock",
"type": "blob"
},
"description": "Type of search (RANGE or RECENCY)"
}
},
"required": [
"place_id",
"place_type"
],
"title": "start_news_retrievalArguments",
"type": "object"
},
"name": "StartNewsRetrieval"
},
{
"description": "Get the results of a previously started news retrieval task",
"inputSchema": {
"properties": {
"task_id": {
"description": "The task ID returned by StartNewsRetrieval",
"title": "Task Id",
"type": "string"
}
},
"required": [
"task_id"
],
"title": "get_news_resultsArguments",
"type": "object"
},
"name": "GetNewsResults"
}
]