{
  "specVersion": "1.0",
  "host": {
    "displayName": "Korpus",
    "documentationUrl": "https://korpus.cloud/docs/mcp/",
    "logoUrl": "https://korpus.cloud/favicon-192.png"
  },
  "entries": [
    {
      "identifier": "urn:air:korpus.cloud:mcp:korpus",
      "displayName": "Korpus — shared memory for teams and their AI agents",
      "type": "application/mcp-server-card+json",
      "description": "Remote MCP server for Korpus, the shared memory a team and its AI agents work from. Read, search and write Markdown knowledge (decisions, ADRs, runbooks, specs) in bundles shared with people, with typed links between concepts and full-text search. Each agent has its own rules: the paths it may read or change and with which rights; everything it writes is stamped with the person it works for. OAuth sign-in, streamable HTTP. Works with Claude (connector directory or custom connector), Claude Code, ChatGPT and Cursor. Hosted in Frankfurt on AWS. Free to start.",
      "tags": [
        "mcp",
        "knowledge base",
        "shared memory",
        "agent memory",
        "team wiki",
        "documentation",
        "markdown",
        "runbooks",
        "architecture decision records",
        "collaboration",
        "eu hosting"
      ],
      "capabilities": [
        "manual",
        "list_bundles",
        "get_usage",
        "list_folder",
        "read_index",
        "read_log",
        "search_concepts",
        "read_concept",
        "list_activity",
        "list_relation_types",
        "check_relations",
        "list_members",
        "get_rights",
        "list_agents",
        "list_invitations",
        "get_agent_connect",
        "create_concept",
        "update_concept",
        "delete_concept",
        "add_relation",
        "remove_relation",
        "create_bundle",
        "create_relation_type",
        "invite_member",
        "accept_invitation",
        "decline_invitation",
        "create_agent",
        "update_agent",
        "delete_agent",
        "add_agent_rule",
        "remove_agent_rule"
      ],
      "representativeQueries": [
        "MCP server for a shared team knowledge base my AI agents can read and write",
        "Give Claude long-term memory shared with my team",
        "Store decisions, runbooks and ADRs where people and agents work from the same source",
        "Knowledge base with per-agent access rules and an audit of what each agent wrote",
        "EU-hosted MCP memory server with OAuth"
      ],
      "data": {
        "name": "korpus",
        "title": "Korpus",
        "description": "Shared memory for humans and their AI agents: Markdown concepts with typed links in shared bundles.",
        "websiteUrl": "https://korpus.cloud/",
        "documentationUrl": "https://korpus.cloud/docs/mcp/",
        "remotes": [
          {
            "type": "streamable-http",
            "url": "https://mcp.fra.korpus.cloud/mcp"
          }
        ],
        "authentication": {
          "required": true,
          "schemes": [
            "oauth2"
          ]
        },
        "tools": [
          {
            "name": "manual",
            "title": "How Korpus works",
            "description": "The manual, by topic. One topic, or all of them with no argument."
          },
          {
            "name": "list_bundles",
            "title": "List bundles",
            "description": "The bundles you see, with your role and how many concepts each holds."
          },
          {
            "name": "get_usage",
            "title": "Show usage",
            "description": "How full each allowance is (write and read rate, 5-hour session, week, space), as fractions. Never refused."
          },
          {
            "name": "list_folder",
            "title": "List folder",
            "description": "One folder: its concepts (path, type, title, description) and subfolders. The way to find things; start here."
          },
          {
            "name": "read_index",
            "title": "Read folder index",
            "description": "The folder's index.md: its concepts' titles and descriptions by type, and its subfolders. Generated from the concepts, never stored."
          },
          {
            "name": "read_log",
            "title": "Read change log",
            "description": "The log.md of a folder (every change under it), a concept (its own) or the bundle: kind, what changed, who, newest first. Generated from the change records, never stored."
          },
          {
            "name": "search_concepts",
            "title": "Search concepts",
            "description": "Search paths, titles, descriptions and tags, ignoring case and umlauts. body: also the text, quoting the line that hit. digest: a line under each hit saying what it is about. tags: all of them. stale_within_days: what falls due. date_from/date_to: on the concept's date. Pages of 50, up to 200."
          },
          {
            "name": "read_concept",
            "title": "Read concept",
            "description": "A whole concept as markdown with its rev, and what links to it."
          },
          {
            "name": "list_activity",
            "title": "Show recent activity",
            "description": "What is new since your last visit, and where you were @-mentioned."
          },
          {
            "name": "list_relation_types",
            "title": "List relation types",
            "description": "The bundle's link vocabulary. Read it before writing a relation."
          },
          {
            "name": "check_relations",
            "title": "Check relations",
            "description": "Relations pointing at concepts that do not exist, and relation types nothing uses."
          },
          {
            "name": "list_members",
            "title": "List members",
            "description": "Who can see the bundle, and with which role."
          },
          {
            "name": "get_rights",
            "title": "Show my rights",
            "description": "What you may do at one path, and which of your rules say so."
          },
          {
            "name": "list_agents",
            "title": "List agents",
            "description": "Your agents and their rules. A restricted agent sees only itself."
          },
          {
            "name": "list_invitations",
            "title": "List invitations",
            "description": "Invitations waiting for you. Me agent only."
          },
          {
            "name": "get_agent_connect",
            "title": "Get agent setup link",
            "description": "Setup for one agent: its URL, how to add it in Claude (me from the connector directory or as a custom connector, any other agent as its own custom connector), a claude mcp add line, a .mcp.json snippet, and a CLAUDE.md block with a SessionStart hook so every session reads the bundle first (given bundle, both name it). Me agent only."
          },
          {
            "name": "create_concept",
            "title": "Create concept",
            "description": "A new concept. Refused if the path is taken. A path with umlauts or spaces is made valid (schäfer → schaefer) and the answer names it."
          },
          {
            "name": "update_concept",
            "title": "Update concept",
            "description": "Change the fields you send; the rest stay. Pass the rev you read to fail on a concurrent change; required when sending tags, relations or extra."
          },
          {
            "name": "delete_concept",
            "title": "Delete concept",
            "description": "Delete one concept."
          },
          {
            "name": "add_relation",
            "title": "Add relation",
            "description": "Link one concept to another, keeping its other links; reads from <type> to, and the answer echoes it. Nothing is written if the link is there."
          },
          {
            "name": "remove_relation",
            "title": "Remove relation",
            "description": "Remove one link, keeping the others."
          },
          {
            "name": "create_bundle",
            "title": "Create bundle",
            "description": "A new bundle you own, with a starter set of relation types (relates_to, depends_on, supersedes, contains, precedes). The server waits up to about 15 seconds for its setup; if it is not done by then, the next call on it waits."
          },
          {
            "name": "create_relation_type",
            "title": "Define relation type",
            "description": "Declare or replace one kind of link: symmetric, directed (needs inverse_label) or unidirectional, with a line on when to use it."
          },
          {
            "name": "invite_member",
            "title": "Invite member",
            "description": "Invite @username or an email as viewer or contributor. Nothing is shared until they accept."
          },
          {
            "name": "accept_invitation",
            "title": "Accept invitation",
            "description": "Accept an invitation waiting for you."
          },
          {
            "name": "decline_invitation",
            "title": "Decline invitation",
            "description": "Decline it."
          },
          {
            "name": "create_agent",
            "title": "Create agent",
            "description": "Prepare an agent with its job and rules."
          },
          {
            "name": "update_agent",
            "title": "Update agent",
            "description": "Change an agent; rules replace all of its rules. Holds from its next request."
          },
          {
            "name": "delete_agent",
            "title": "Delete agent",
            "description": "Delete an agent and sign out every app connected as it."
          },
          {
            "name": "add_agent_rule",
            "title": "Add agent rule",
            "description": "Add one rule; the same bundle and path merge their rights."
          },
          {
            "name": "remove_agent_rule",
            "title": "Remove agent rule",
            "description": "Remove one rule, named exactly as list_agents prints it."
          }
        ],
        "signUpUrl": "https://fra.korpus.cloud/sign-up"
      }
    }
  ]
}
