Skip to main content
Glama
404Simon

wikicfp-mcp

by 404Simon
README.md
# WikiCFP MCP

Read-only MCP server for [WikiCFP](http://www.wikicfp.com), the community-curated academic conference database. Exposes conference search, full category browsing, and call-for-papers details as MCP tools.

## Requirements

- Python 3.13+
- [uv](https://docs.astral.sh/uv/)

## Configuration

This is an MCP server. You register it in your coding agent's MCP configuration, then the agent can use its tools.

Most agents accept a similar configuration. For example, in Opencode you add it to the `opencode.json`:

```json
{
  "mcp": {
    "wikicfp-mcp": {
      "command": [
        "uvx",
        "--from",
        "git+https://github.com/404Simon/wikicfp-mcp",
        "wikicfp-mcp"
      ],
      "enabled": true,
      "type": "local"
    }
  }
}
```

After this setup, the agent discovers the tools automatically and you can simply ask it things like:

> "Find upcoming conferences on Green AI with deadlines after September."

## Tools

### `search_conferences`

Search WikiCFP for academic conferences matching a query.

| Argument | Type                | Description                                                       |
| -------- | ------------------- | ----------------------------------------------------------------- |
| `query`  | `string` (required) | Search terms (e.g. "ai agent", "machine learning")                |
| `year`   | `string` (optional) | Year filter: `t` (this year, default), `n` (next year), `a` (all) |
| `limit`  | `number` (optional) | Maximum number of conferences to return (default: 10)             |

Returns a list of conferences, each with name, description, dates (`when`), location (`where`), submission `deadline`, and the WikiCFP `url`:

```json
[
  {
    "name": "Cyber-AI 2026",
    "description": "The 2nd IEEE 2026 International Conference on Cybersecurity and AI-Based Systems (Scopus)",
    "when": "Sep 22, 2026 - Sep 25, 2026",
    "where": "Bucharest, Romania",
    "deadline": "Jul 31, 2026",
    "url": "http://www.wikicfp.com/cfp/servlet/event.showcfp?eventid=191252&copyownerid=196290"
  }
]
```

### `conference_details`

Fetch full call-for-papers details for a conference from its WikiCFP page URL (the `url` field returned by `search_conferences`).

| Argument | Type                | Description                                      |
| -------- | ------------------- | ------------------------------------------------ |
| `url`    | `string` (required) | WikiCFP event page URL from `search_conferences` |

Returns name, description, dates, location, official website, all deadlines, and categories:

```json
{
  "name": "SMARTGREENS 2027",
  "description": "SMARTGREENS  2027 : 16th International Conference on Smart Cities and Green ICT Systems",
  "when": "Apr 16, 2027 - Apr 17, 2027",
  "where": "Rome, Italy",
  "website": "https://smartgreens.scitevents.org/",
  "submission_deadline": "Nov 17, 2026",
  "notification_due": "Jan 15, 2027",
  "final_version_due": "Jan 27, 2027",
  "categories": ["services", "grid computing", "green computing", "smart grid"]
}
```

### `list_categories`

List all conference categories tracked by WikiCFP, ordered by the number of CFPs each.

Returns up to ~300 categories with name, browse URL, and CFP count:

```json
[{"name": "artificial intelligence", "url": "http://www.wikicfp.com/cfp/call?conference=artificial intelligence", "count": 10667},
 {"name": "machine learning", "url": "http://www.wikicfp.com/cfp/call?conference=machine learning", "count": 6454},
 {"name": "green computing", "url": "http://www.wikicfp.com/cfp/call?conference=green computing", "count": 149}, ...]
```

### `conferences_by_category`

List conferences in a WikiCFP category, one page at a time. This is the **complete** view of a category: every CFP in it is reachable by iterating `page` from 1 to `total_pages` (~20 per page), unlike keyword search which WikiCFP caps.

| Argument   | Type                | Description                                    |
| ---------- | ------------------- | ---------------------------------------------- |
| `category` | `string` (required) | Category name as returned by `list_categories` |
| `page`     | `number` (optional) | Page number to return, 1-based (default: 1)    |

Returns page metadata (`total_pages`, `total_cfps`) plus the conferences on that page. Note that later pages include expired CFPs.

```json
{
  "category": "green computing",
  "page": 1,
  "total_pages": 8,
  "total_cfps": 149,
  "conferences": [
    {
      "name": "SMARTGREENS 2027",
      "description": "16th International Conference on Smart Cities and Green ICT Systems",
      "when": "Apr 16, 2027 - Apr 17, 2027",
      "where": "Rome, Italy",
      "deadline": "Nov 17, 2026",
      "url": "http://www.wikicfp.com/cfp/servlet/event.showcfp?eventid=201733&copyownerid=45217"
    },
    {
      "name": "GREEN 2026",
      "description": "The Eleventh International Conference on Green Communications, Computing and Technologies",
      "when": "Oct 25, 2026 - Oct 29, 2026",
      "where": "Lisbon, Portugal",
      "deadline": "Jul 6, 2026",
      "url": "http://www.wikicfp.com/cfp/servlet/event.showcfp?eventid=199671&copyownerid=83510"
    }
  ]
}
```

### `find_conferences`

Find upcoming conferences matching any of the given keywords.

| Argument       | Type                  | Description                                                                                              |
| -------------- | --------------------- | -------------------------------------------------------------------------------------------------------- |
| `keywords`     | `string[]` (required) | List of search terms; a conference matches if any term matches                                           |
| `year`         | `string` (optional)   | Year filter: `t` (this year), `n` (next year), `a` (all, default)                                        |
| `min_deadline` | `string` (optional)   | Only keep conferences whose submission deadline is on or after this date (`YYYY-MM-DD` or `Mon D, YYYY`) |
| `limit`        | `number` (optional)   | Maximum number of conferences to return (default: 50)                                                    |

Searches WikiCFP for each keyword, merges and deduplicates the results, and keeps only conferences that have not ended yet. Results are sorted by submission deadline (soonest first). Conferences whose dates or deadlines are unknown (`N/A`, `TBD`) are always kept.

```json
[{"name": "MIT AI Conference 2026",
  "description": "MIT AI Conference 2026- AI: The Age of Agency",
  "when": "Oct 17, 2026 - Oct 17, 2026", "where": "Computer History Museum Mountain View, C",
  "deadline": "Oct 17, 2026",
  "url": "http://www.wikicfp.com/cfp/servlet/event.showcfp?eventid=201388&copyownerid=199571"}, ...]
```

TDQS

A4/5.0

Scored across 5 tools

Disambiguation4/5

Tools are largely distinct: search vs browse vs details. However, `search_conferences` and `find_conferences` both perform search-like functions. `find_conferences` is more specific (upcoming, keyword-based, deduplicated, sorted by deadline), but their overlap could cause confusion for an agent.

Naming Consistency4/5

All tool names follow a consistent `verb_noun` pattern (e.g., conference_details, search_conferences, list_categories). The naming is clear and predictable, although `find_conferences` could have been named `search_upcoming_conferences` for more precision.

Tool Count5/5

With 5 tools, the server is tightly scoped to conference discovery. Each tool serves a clear purpose: searching, browsing by category, getting details, and filtering upcoming events. No tool feels redundant or extraneous.

Completeness4/5

The server covers the core conference browsing and search flows well. Missing elements include user account interactions or personalized features, which are likely out of scope. A small gap: there is no direct way to fetch all upcoming conferences without specifying keywords.

Maintenance

ActivityMaintained
ResponsivenessNo issues