SciComp Docs Agent
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SciComp Docs Agentfind instructions for submitting GPU jobs on Triton"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SciComp Docs Assistant
Search and Q&A over Aalto scicomp-docs (Triton HPC and related guides).
Two ways to use this project:
Use case | What you get | Needs LLM API key? |
Browser chat UI with tool-calling loop | Yes (Aalto LLM gateway + VPN) | |
Docs search tool for AI agents (Codex, Cursor, Claude, etc.) | No |
Both paths share the same Python search stack in app/doc_tools.py. The web chat drives fine-grained tools via an LLM; MCP exposes a single one-shot search_scicomp_docs tool.
Prerequisites
Python 3.12+ or Docker
Docs snapshot in
docs-source/(git submodule — required for both paths)ripgrep optional for local dev (
brew install ripgrep); included in the Docker imageLLM API key only for the web chat UI
Related MCP server: mcp-agno
Clone
git clone --recurse-submodules https://github.com/AaltoSciComp/scicomp-docs-assistant.git
cd scicomp-docs-assistantIf you already cloned without submodules:
git submodule update --init --recursiveAfter a healthy clone, /api/health should report docs_present: true and index_pages in the hundreds (typically 300+). If index_pages is 0, the docs submodule is missing — see Troubleshooting.
Quick start: Web chat UI
Browser-based agent that searches the local docs snapshot and cites https://scicomp.aalto.fi/.
Requires: Aalto VPN + API key from llm-gateway.k8s.aalto.fi.
Docker (recommended)
cp .env.example .env
# Edit .env and set LLM_API_KEY=your-key-here
docker compose up --buildOpen http://localhost:8080.
Local Python
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # set LLM_API_KEY
uvicorn app.main:app --reload --port 8080Open http://localhost:8080.
Using another LLM provider
The gateway client is OpenAI-compatible. Set in .env:
LLM_API_KEY=your-provider-key
LLM_BASE_URL=https://your-provider.example.com/v1
LLM_MODEL=your-model-idThe web UI and MCP share the same server process; MCP does not use the LLM.
Quick start: MCP only
Expose a single docs search tool to any MCP client (Codex, Cursor, Claude Desktop, custom agents). No LLM key, no VPN.
The tool runs page ranking, keyword search, and excerpt reading internally.
Option A — HTTP (Docker, recommended)
cp .env.mcp.example .env # optional; compose works without .env for MCP-only
docker compose up --buildMCP endpoint: http://localhost:8080/mcp/ (trailing slash required)
Verify:
curl -s http://localhost:8080/api/health | python3 -m json.tool
# expect: "docs_present": true, "index_pages": 300+ (approx), "llm_configured": falseOption B — HTTP (local Python)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --port 8080MCP endpoint: http://localhost:8080/mcp/
Option C — stdio (local MCP clients)
From the repo root, with dependencies installed:
source .venv/bin/activate # after pip install -r requirements.txt
python -m app.mcp_stdioCursor / VS Code client config (use your venv Python path):
{
"mcpServers": {
"scicomp-docs": {
"command": "/path/to/scicomp-docs-assistant/.venv/bin/python",
"args": ["-m", "app.mcp_stdio"],
"cwd": "/path/to/scicomp-docs-assistant",
"env": {
"DOCS_ROOT": "/path/to/scicomp-docs-assistant/docs-source"
}
}
}
}MCP tool
Tool | Description |
| One-shot search: ranked pages + keyword hits + excerpts with published URLs |
Optional argument path limits the search (e.g. triton/ref, aalto).
Ask the agent in natural language (e.g. “How do I request a GPU on Triton?”); it should call search_scicomp_docs once and answer from the result.
Connect from any MCP client (HTTP)
{
"mcpServers": {
"scicomp-docs": {
"url": "http://localhost:8080/mcp/"
}
}
}Clients that only support stdio (e.g. Claude Desktop) can proxy via mcp-remote:
{
"mcpServers": {
"scicomp-docs": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:8080/mcp/"]
}
}
}Connect from Python
Install the MCP client SDK on the machine running your script (pip install "mcp>=1.19,<2"):
import asyncio
from mcp.client.session import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async def main():
async with streamablehttp_client("http://localhost:8080/mcp/") as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
result = await session.call_tool("search_scicomp_docs", {"query": "GPU sbatch"})
print(result.content[0].text)
asyncio.run(main())Security:
/mcp/has no authentication. Bind to localhost or put a reverse proxy in front if exposing beyond your machine.
How it works (web chat)
You ask a question in the browser UI.
The LLM receives a search skill (
skills/scicomp-docs-search.md).The model calls tools:
find_pages→get_doc_outline/search_docs→read_doc.It answers with citations as published URLs on https://scicomp.aalto.fi/.
Updating the documentation snapshot
git submodule update --remote docs-source
docker compose up --build # rebuild image so docs-source is refreshedConfiguration
Variable | Default | Description |
| (empty) | Required for web chat only |
|
| OpenAI-compatible base URL |
|
| Model id |
|
| Sampling temperature |
|
| Max completion tokens |
|
| Max tool-calling rounds per chat turn |
|
| Path to scicomp-docs tree |
|
| Published site for citations |
|
| Agent skill markdown files (web chat only) |
|
| Bind address (local uvicorn) |
|
| Listen port (local uvicorn) |
Env templates:
.env.example— full template (web chat + MCP).env.mcp.example— minimal MCP-only (LLM_API_KEYempty)
Troubleshooting
Symptom | Likely cause | Fix |
| Submodule not initialized |
|
MCP client can't connect | Wrong port or missing trailing slash | Use |
MCP works but tools return nothing | Empty | Same as above; check health endpoint |
Chat returns 503 “LLM_API_KEY is not configured” | Key not set | Add |
Chat errors / timeouts from LLM | VPN off or wrong gateway | Connect to Aalto VPN; verify key at llm-gateway.k8s.aalto.fi |
| Old Compose version | Upgrade Docker Desktop, or |
Slow local search | ripgrep not installed |
|
stdio MCP: “docs not found” warning | Wrong | Run from repo root; set |
Docker build: can't pull | Docker Hub unreachable or rate-limited | Use a mirror, e.g. |
Health check:
curl -s http://localhost:8080/api/health | python3 -m json.toolHealthy MCP + docs: docs_present: true, index_pages > 0. Web chat additionally needs llm_configured: true.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server implementation that provides tools for retrieving and processing documentation through vector search, enabling AI assistants to augment their responses with relevant documentation context21265MIT
- FlicenseAqualityDmaintenanceProvides AI assistants with real-time access to the AGNO framework documentation by enabling them to browse, search, and fetch documentation pages. This server allows users to query information about AGNO's Agents, Teams, and Workflows directly through MCP-compatible clients.16
- AlicenseNot gradedqualityDmaintenanceGeneric MCP server that exposes Markdown documentation to LLMs, enabling them to search and answer questions about any software documentation.MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that provides tools for retrieving and processing documentation through vector search, enabling AI assistants to augment their responses with relevant documentation context.12MIT
Related MCP Connectors
MCP server for AgentDocs (agentdocs.eu): read, search, write, comment on & share Markdown docs.
Agentic search over your Dewey document collections from any MCP-compatible client.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AaltoSciComp/scicomp-docs-assistant'
If you have feedback or need assistance with the MCP directory API, please join our Discord server