Worth separating the two halves. If you already have an MCP client, point it at the research server and the OpenAI key never enters the picture — the search and extraction tools are self-contained. The client is there as a worked example of driving a server, and its `server_config.json` shows the same pattern with filesystem and fetch servers alongside this one.
A FastMCP server for arXiv research, shipped with a chatbot client that drives it. The server searches papers and extracts their details; everything it finds is written to JSON on disk, organised by topic.
- Search arXiv by topic, with a configurable maximum number of results
- Extract a paper's details by its arXiv id — title, authors, summary, PDF URL and publication date
- Persistent storage: results are saved under a `papers` directory, one folder per topic, so a search you ran last week is still there
- A command-line chatbot client that connects to the server and turns plain questions into these calls
Run from a checkout: `uv pip install -r pyproject.toml`, then start the server with `uv run src/research_server.py`. Python 3.12+, with arxiv, mcp, openai, nest-asyncio and python-dotenv as dependencies. The server itself needs no key. The bundled client does — it calls OpenAI, reading the key from `src/keys.json`, and defaults to `gpt-4o-mini`.
One command plus a key — npx -y @modelcontextprotocol/server-filesystem ., then supply credentials
