Odel
sedis mcp

sedis mcp

Local
@sedis-abTypeScriptMITUpdated 1w ago

Read-only MCP tools for the Sedis PartnerAPI v2 (Bolagsanalys + Fastighetsbenchmark).

@sedis/mcp

CI npm version License: MIT Node.js >= 20

A Model Context Protocol (MCP) server that wraps the Sedis PartnerAPI v2 as a small set of curated, read-only tools, so AI assistants and agents (Claude Desktop, Cursor, and any MCP-capable client) can query your Sedis Bolagsanalys (listed-company financials) and Fastighetsbenchmark (real-estate comparables) data in natural language. The server is a thin pass-through: it adds shape and transport only — every tenant-isolation, authentication, rate-limit, and billing rule lives in PartnerAPI v2, not here.

Not a Sedis customer yet? This server requires a Sedis PartnerAPI v2 key — there is no free tier or trial. Get in touch: info@sedis.se · Fråga Sedis

Install

Easiest: one-click Claude Desktop bundle (.mcpb) — recommended

For non-technical users, install the Desktop Extension — a single file, no Node, no JSON, no terminal:

  1. Download sedis-mcp.mcpb from the latest release.
  2. Double-click it (or open Claude Desktop → Settings → Extensions and drag it in) and click Install.
  3. Paste your Sedis API key into the field that appears (stored in your OS keychain) and confirm.
  4. Done — start a chat and ask, e.g. "Visa nyckeltal för Fabege" (lang: "sv" for Swedish).

The bundle packages the exact server described below together with its dependencies; Claude Desktop supplies the Node runtime, so the user installs nothing else. Ask your Sedis administrator for a key — a customer-level (M2M) key needs no per-session two-factor step. Maintainers build the bundle with npm run build:mcpb (output: dist/sedis-mcp.mcpb).

Manual config (any MCP client — Claude Code, Cursor, …)

The server runs over stdio and is launched on demand via npx — no global install needed. The canonical launch command is:

npx -y @sedis/mcp

Add it to your client's MCP config and set your PartnerAPI key:

{
  "mcpServers": {
    "sedis": {
      "command": "npx",
      "args": ["-y", "@sedis/mcp"],
      "env": {
        "SEDIS_API_KEY": "your-partnerapi-v2-key"
      }
    }
  }
}
  • Claude Desktop: add the block above to claude_desktop_config.json.
  • Cursor / other clients: add it to the client's mcp.json (same shape).

Configuration

Env varRequiredDefaultPurpose
SEDIS_API_KEYyesYour PartnerAPI v2 key. Sent only as the X-Api-Key header; never logged.
SEDIS_API_BASE_URLnohttps://api.sedis.seOverride the v2 base URL (e.g. for an alpha/beta environment).
SEDIS_API_SESSIONnoOptional startup seed for the session token (user-owned keys only). Sent as X-Api-Session; never logged. Usually you set this at runtime with the set_session tool instead — no restart needed.

The key is validated lazily — the server starts without it and returns a friendly, actionable error on the first tool call if it is missing or invalid. There is no startup ping.

Tools not showing up? MCP servers are loaded when your client starts — after editing the config, fully restart/reload the client (a new chat in the same window is not enough). If you registered it via a CLI (claude mcp add), make sure it landed in the right scope: a server added in one directory isn't visible in another project unless you use a global/user scope.

Session tokens (user-owned keys)

If your key is owned by a specific user (issued to a named person, not a machine/M2M integration key), PartnerAPI v2 requires a short-lived session token alongside X-Api-Key, refreshed periodically via two-factor auth:

  1. On a 401 with reason session_expired / session_invalid, the tool error carries a reproveUrl. Open it in a browser, complete 2FA, and copy the freshly-minted sedis_sess_… token.
  2. Paste it with the set_session tool — it is carried as X-Api-Session on the very next call, no client restart needed. Use clear_session to sign out.
  3. Optionally seed a token at startup with the SEDIS_API_SESSION env var (handy for CI / power users); at runtime set_session always takes precedence.

Machine / org-wide keys (no owner) are headlessX-Api-Key only, no session token, and you never call set_session.

Local development / testing against a non-production environment

To run a local build (unpublished) or point at a non-production environment, swap npx for the built entrypoint and override the base URL:

{
  "mcpServers": {
    "sedis-local": {
      "command": "node",
      "args": ["/absolute/path/to/sedis-mcp/build/index.js"],
      "env": {
        "SEDIS_API_KEY": "your-non-production-key",
        "SEDIS_API_BASE_URL": "https://<your-non-production-host>"
      }
    }
  }
}

Ask the Sedis team for the host name — non-production environments are not publicly documented. This is a development convenience only; production users just use the npx -y @sedis/mcp block above with a single SEDIS_API_KEY, which defaults to https://api.sedis.se.

Tools

All tools are read-only. Tenant scope is enforced by v2: the "YOUR …" tools only ever return data your key is entitled to, and a request for another tenant's object comes back as a friendly not found (never a 403 that would leak existence).

Bolagsanalys (listed-company financials)

ToolWhat it does
bolagsanalys_list_companiesSearch the catalog of listed companies by name fragment.
bolagsanalys_find_parameterDiscover the right financial parameter by name fragment.
bolagsanalys_get_dataFetch quarterly figures. Pass one companyId, or omit it to get all companies for a parameter/quarter.
bolagsanalys_search_dataBatch-fetch figures for a specific set of companies — companyIds[] (max 50).

Fastighetsbenchmark (real-estate comparables)

ToolWhat it does
fastighetsbenchmark_find_parameterDiscover the right real-estate benchmark parameter by name.
fastighetsbenchmark_search_property_unitsFind YOUR property units (Fastighet) by name, municipality, zone, or property-type name (propertyTypeName, e.g. "Office"/"Kontor").
fastighetsbenchmark_list_samlingarList YOUR collections (Samling) and their members.
fastighetsbenchmark_list_jamforelseobjektList YOUR comparison zones (Jämförelseobjekt).
fastighetsbenchmark_get_comp_timeseriesPull the actual CompDatum benchmarking time-series (self-describing values).
fastighetsbenchmark_list_reference_zonesList the shared, Sedis-owned market reference zones (same for every key).

Names and descriptions are English by default; pass lang: "sv" on the parameter-discovery and property-unit tools to get Swedish.

Session (user-owned keys)

ToolWhat it does
set_sessionPaste a freshly-minted sedis_sess_… token (from the reprove page) — carried as X-Api-Session on the next call, no restart.
clear_sessionForget the current session token (sign out).

These are needed only for user-owned keys (see Session tokens above); machine / org-wide keys never use them.

Errors are mapped from PartnerAPI v2's RFC 7807 problem responses into short, friendly tool errors that carry a traceId for support — and never the API key or a stack trace. If a tool reports a session / two-factor re-verification error, open the reproveUrl in the message, complete 2FA, copy the new sedis_sess_… token, and paste it via the set_session tool — then retry (no client restart). See Session tokens (user-owned keys) above.

API reference

This server is a wrapper. The underlying endpoints, query conventions, multi-tenant isolation model, geometry, error shapes, rate limits, and data freshness are documented in the PartnerAPI v2 guide that Sedis provides with your API key — contact Sedis if you need access. The live OpenAPI description is served at <SEDIS_API_BASE_URL>/openapi/v2.json (default https://api.sedis.se/openapi/v2.json). This README does not duplicate that reference.

Data use

Use of Sedis data in AI/LLM contexts is subject to your Sedis agreement and the accompanying MCP data-use terms. See SECURITY.md for the key-handling and supply-chain posture.

Licence

MIT.