agh-skos-mcp
Search the AGH University staff directory and retrieve detailed profiles without authentication.
Search people by name, email, room, phone prefix, and dictionary filters such as title, status, group, position, function, unit, pavilion, and body; limit results and get a full profile when exactly one person matches.
Fetch a full person profile by slug or URL, including emails, phones, website, workplaces, room, job, group, function, and collegial bodies.
List allowed values for dictionary filters, optionally narrowed by a case-insensitive substring.
Run the MCP server over stdio or streamable HTTP, including a Docker setup with optional Host allowlisting.
Click on "Deploy 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., "@agh-skos-mcp search for staff member Jan Kowalski"
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.
agh-skos-mcp
MCP server for SkOs — the AGH University staff directory. No API key, no login.
Tools
Tool | Arguments | Returns |
|
|
|
|
| id, name, title, emails, phones, www, workplaces (unit, job, group, function, room), collegial bodies |
|
|
|
An ambiguous label raises an error listing the candidates. A query with no filters is rejected.
Related MCP server: CRU MCP Server
Add to Claude Code
Requires uv.
.mcp.json in the project root:
{
"mcpServers": {
"agh-skos": {
"command": "uvx",
"args": ["--from", "git+https://github.com/kbzowski/agh-skos-mcp", "agh-skos-mcp"]
}
}
}Or via CLI:
claude mcp add agh-skos --scope user -- uvx --from git+https://github.com/kbzowski/agh-skos-mcp agh-skos-mcpCheck with claude mcp list or /mcp.
Run over HTTP
The server speaks stdio by default. For a remote setup use the streamable HTTP transport:
agh-skos-mcp --transport streamable-http --host 0.0.0.0 --port 8000or with Docker, which binds to 127.0.0.1:8000:
docker compose up -d --build
claude mcp add agh-skos --transport http http://127.0.0.1:8000/mcpThere is no authentication. To reach it from outside, put a reverse proxy with TLS in front of it and accept its public name with --allowed-host mcp.example.org (repeatable; see the commented command in compose.yaml). Requests with any other Host header are rejected.
Development
git clone https://github.com/kbzowski/agh-skos-mcp && cd agh-skos-mcp
uv sync
uv run ruff check . && uv run ruff format .
uv run mypy
uv run pytest # offline
uv run pytest -m network # against the live directoryuvx caches its build. To run your working copy:
claude mcp add agh-skos --scope user -- uv run --directory /path/to/agh-skos-mcp agh-skos-mcpImplementation notes
Data comes from the
__NEXT_DATA__JSON embedded in each rendered page, not from HTML scraping.Filter dictionaries come from the site's
/a/select?id=…endpoint.E-mails are stored obfuscated (reversed
<a>tag,#for@) and decoded on the way out.A search matching exactly one person redirects
/search/→ profile page;search_peoplefollows it and returns the full record inperson.
License
MIT
Available Tools
3 toolsget_personARead-only
Fetch a full SkOs profile: units, position, room, phones, email, www.
person: profile url or slug as returned by search_people, e.g. "/osoba/krzysztof-bzowski-7674.html" or "krzysztof-bzowski-7674".
Inputs: person (required). Returns: id, url, www, name, +6 more
list_filter_optionsARead-only
List allowed values for a dictionary filter of search_people.
field: one of tytul, id_status, grupa, stanowisko, funkcja, jednostka, pawilon, cialo. contains: optional case-insensitive substring to narrow the list.
Inputs: field (required), contains. Returns: result
search_peopleARead-only
Search AGH staff in the SkOs directory (skos.agh.edu.pl advanced search).
Text filters (nazwisko, imie, email, pokoj, telefon) are case-insensitive prefix matches - no wildcards. Dictionary filters (tytul, id_status, grupa, stanowisko, funkcja, jednostka, pawilon, cialo) accept either the numeric id or the Polish label - use list_filter_options to browse them.
Returns matching people with their title, unit and profile url; pass that url to get_person for contact data. When exactly one person matches, the full profile is already included in the "person" field.
Inputs: imie, cialo, email, grupa, +10 more. Returns: query, total, person, results, +1 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
Each tool has a clearly separate role: list_filter_options is a helper for enumerating dictionary values, search_people queries the directory, and get_person retrieves a single full profile. The descriptions even explain the intended workflow (use filter options before searching, pass the returned url to get_person), so an agent cannot easily confuse them.
All three names follow a strict verb_noun snake_case pattern (list_filter_options, search_people, get_person) with verbs that match the action performed. No mixed casing or inconsistent verb styles.
Three tools is a tight, purpose-built surface for a read-only directory lookup service: browse vocabularies, search, then fetch details. No redundant or filler tools, and nothing appears artificially split.
The read-only lifecycle (browse filters -> search -> full profile) is fully covered, and the single-match shortcut in search_people avoids a dead end. Minor gaps remain, such as no pagination or batch/export option for large result sets, but agents can work around these by narrowing search filters.
Maintenance
Related MCP Connectors
26 authless MCP servers: flights, stays, maps, shopping, web search, Polish web (Allegro, OLX, NBP).
Public MCP server for discovering open jobs. Search, filter, and get application links.
MCP Server for an Agent Task Marketplace
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server for read-only LDAP directory operations, enabling search, entry retrieval, schema browsing, and comparison via natural language.MIT
- FlicenseAqualityDmaintenanceMCP server for searching and retrieving contracts from the Polish Central Register of Contracts (CRU) via its API.2-
- AlicenseAqualityBmaintenanceMCP server that enables searching and retrieving Czech university theses from theses.cz, including full-text search, metadata, and direct PDF downloads with optional cookie-based authentication.3AGPL 3.0
- FlicenseNot gradedqualityCmaintenanceInstitutional MCP server that centralizes access to identity, institutional profiles, and basic person data. Currently a bootstrap with no business logic or tools implemented.-