RSpace MCP Server
# RSpace MCP server
This is a proof-of-principle MCP server for RSpace. It exposes some RSpace API endpoints to LLM agents using the Model Context Protocol.
To run,[ install `uv`](https://docs.astral.sh/uv/#highlights) and `python`, then add this to your Claude or VS Code mcp.json
- clone this repo
- run `uv sync` to install dependencies
- create a `.env` file in this folder. Add
- RSPACE_URL=RSpace URL # e.g. https://community.researchspace.com
- RSPACE_API_KEY=your API key
Configure your LLM app. Below is config for VSCode Copilot.
For Claude Desktop add the "rspace" server definition below to your MCP config file.
```json
{
"inputs": [
{
"type": "promptString",
"id": "rspace-apikey",
"description": "RSpace API Key",
"password": true
},
{
"type": "promptString",
"id": "rspace-url",
"description": "RSpace base URL",
"password": false
}
],
"servers": {
"rspace": {
"command": "uv",
"args": [
"--directory",
"<full path to this directory>",
"run",
"main.py"
],
"env": {
"RSPACE_API_KEY": "${input:rspace-apikey}",
"RSPACE_URL": "${input:rspace-url}"
}
}
}
}
```
TDQS
Scored across 9 tools
Each tool targets a distinct resource/action combination, with clear singular/plural distinctions (e.g., get_documents vs get_single_Rspace_document) and separate operations for creating notebooks vs entries, tagging vs renaming. No two tools appear to do the same thing.
The tool names mix snake_case (get_documents, get_single_Rspace_document) with camelCase (createNewNotebook, tagDocumentOrNotebookEntry), and an inconsistent verb style (status vs get_ vs create vs tag). This violates the consistency rule and creates a chaotic naming pattern.
With 9 tools covering status, document retrieval, notebook/entry creation, tagging, renaming, audit, and file download, the set is well-scoped and every tool serves a distinct purpose within the RSpace domain.
The surface covers core workflows (retrieve, create, tag, rename, audit, download) but lacks deletion and direct content update for existing documents, and it's unclear if notebooks/entries can be listed distinctly. These gaps could require agent workarounds.