Beyond the Conference MCP
Officialby uw-r2i
README.md
# Beyond the Conference MCP
A local MCP server and R2I plugin that helps researchers practice talking about their work outside a conference setting. In a low-stakes interview, explain your research in plain language, identify who it matters to, describe what could change if it were used, and practice a concrete next step or ask.
ChatGPT and Claude Desktop load the same skill. The host runs the same local stdio server. No OpenAI or Anthropic API key is required.
The server stores only the words the caller saves and grades them with a rough, approximate rubric. It does not call a model. Open source, industry adoption, and a startup are examples of paths, not required tracks. Seasoned reviewers can replace the rubric later.
## Install and use
```sh
git clone https://github.com/uw-r2i/beyond-the-conference-mcp.git
cd beyond-the-conference-mcp
uv sync
uv run python setup_local.py
```
`setup_local.py` writes `plugins/r2i/.mcp.json` with the absolute `uv` command and args for this checkout. That file is gitignored. Rerun setup after moving the checkout. The hosts start those local stdio tools. There is no remote MCP URL.
### ChatGPT
From this directory, add the marketplace and install the plugin the same way as a local Codex marketplace:
```sh
codex plugin marketplace add "$PWD"
codex plugin add r2i@r2i-local
```
Restart ChatGPT, open a fresh local thread, and ask:
> @R2I interview me about my research
The same request without the @ mention is the skill's trigger too. The visible name is **R2I**.
### Claude Desktop and Claude Code
The plugin directory is `plugins/r2i`. It has `.claude-plugin/plugin.json`, the shared `skills/` tree, and the generated `.mcp.json`.
Claude Code:
```sh
claude --plugin-dir "$PWD/plugins/r2i"
```
Claude Desktop: zip `plugins/r2i` (the plugin folder itself, with `.claude-plugin/plugin.json` at the archive root or one directory down) and upload it as a local plugin. A recent desktop build starts local plugin servers. Claude Code and Cowork sessions on this computer start the stdio server. Claude chat on the web ignores a local command server. The skill still loads where skills load. Tool-backed grading runs only where the host starts the stdio server.
In either host, ask to be interviewed about your research. The interview asks one question at a time. At the end, present the grade the tool returns. The rubric is approximate. Do not treat a different score as the result.
## What the interview stores
One local draft lives in `data/interviews.sqlite3` (override the directory with `R2I_DATA_DIR`). `data/` is gitignored.
1. `begin_interview` starts a draft, resumes an unfinished draft, or returns a graded session without replacing it.
2. `save_interview_answers` writes only the text the caller passes, field by field, unchanged.
3. `get_interview` reads that draft back.
4. `grade_interview` applies the approximate rubric and closes the session. A later begin returns that grade instead of starting over. A new practice run is `begin_interview` with `new_session` true, and only after a graded session.
An empty draft does not pass. A title, abstract, or venue with no audience, consequence, or ask fails the beyond-paper concerns. An answer that names a non-academic beneficiary, a concrete consequence of adoption, and a next step passes those concerns.
## Rubric
`plugins/r2i/skills/interview/references/rubric.json` is the definition the server loads. `rubric.md` next to it is the copy the skill reads, rendered from that file's prose. The label is **approximate**.
After editing the JSON prose, regenerate the markdown:
```sh
uv run python -c "from interview import write_rubric_markdown; write_rubric_markdown()"
```
## Verify
```sh
uv run python -m unittest discover -s tests -v
```
The tests talk to the shipped `main.py` over stdio. They are not a second copy of the grader.
## License
MIT. See [LICENSE](LICENSE).
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues