eigma-mcp
Officialby eigma-app
README.md
<div align="center">
<img src="https://eigma.app/eigma-logo.svg" alt="Eigma" width="72" />
# eigma-mcp
**Every tool description, input schema and shared extraction rule from the [Eigma](https://eigma.app) MCP connector, plus a runnable example server. The text a model reads, not the service behind it.**
[](./LICENSE)

[eigma.app](https://eigma.app) · [Docs](https://eigma.app/docs)
</div>
---
## What Eigma is
Eigma turns your conversations with an AI assistant into a personal wiki you actually remember.
An assistant can explain something well, and almost none of it survives you closing the tab. A week
later you remember that you understood the thing, but not the thing itself, and what you do recall is
often subtly wrong. Eigma saves the part worth keeping, files it under the right chapter, and asks you
about it again before you forget.
<a href="https://eigma.app"><img src="./assets/hero.gif" alt="The Memory State view: a rotating map of nodes, one per page, each glowing according to how well it is remembered" width="100%" /></a>
<sub><b>Your knowledge as a map.</b> Each page is a point of light, and its brightness shows how well
you still remember it rather than how recently you opened it. Pages you have internalized stay bright;
pages you are forgetting go dim.</sub>
Eigma connects over **MCP**, so it works inside the assistant you already use — ChatGPT, Claude, and
coding agents like Claude Code and Codex. Your assistant does the thinking; Eigma keeps the result.
The app is available in English, 中文 and Deutsch. → **[eigma.app](https://eigma.app)**
---
## Connect it to your assistant
Setup takes about a minute, and you do it once per assistant.
> **Create your Eigma account first**, at [eigma.app](https://eigma.app). Partway through, you will be
> asked to sign in, and your pages will go to whichever account you sign in with.
<details open>
<summary><b>ChatGPT</b> — its own address</summary>
```
https://my.eigma.app/api/mcp-chatgpt
```
1. **Settings** → **Plugins**
2. Turn on **Developer mode**. The option to add your own plugin does not appear until you do.
3. **Browse plugins** → **+** to add one
4. Name it `Eigma` and paste the address into the server URL field
5. Sign in with your Eigma account and approve the connection
</details>
<details open>
<summary><b>Claude, Claude Code and Codex</b> — one shared address</summary>
```
https://my.eigma.app/api/mcp
```
**Claude:** **Customize** → **Connectors** → **+** → **Add custom connector**, paste the address,
**Add**, then sign in.
⚠️ Then open a chat, click the **+** at the bottom left, choose **Connectors**, and **switch Eigma on**.
Claude uses only the connectors that are switched on in that particular conversation. If Eigma looks
connected but nothing happens, this is almost always why.
**Claude Code:**
```bash
claude mcp add --transport http --scope user eigma https://my.eigma.app/api/mcp
claude mcp login eigma
```
**Codex:**
```bash
codex mcp add eigma --url https://my.eigma.app/api/mcp
codex mcp login eigma
```
The `login` command opens a browser window so you can sign in and approve. Afterwards, run
`claude mcp list` (or `/mcp` in a chat) to confirm the connection: worth doing, because a failed
connection fails silently.
</details>
Then, in any chat: **"organize this into Eigma"**. Your assistant turns the conversation into pages,
files each page under the right chapter, attaches a few questions to it, and sends the result to your
review inbox.
Screenshots and troubleshooting: **[eigma.app/docs](https://eigma.app/docs)**.
<sub>Menu paths verified against the ChatGPT and Claude apps in September 2026.</sub>
## What you can ask it to do
Eight tools, five of them read-only. The read-only tools are what make your wiki usable as context
inside the chat you are already in, rather than as something you have to open separately.
| Say something like | What happens |
| --- | --- |
| *"What do I have on transformers?"* | Matches across scripts, using CJK bigrams, German compound splitting and each page's aliases, so a page filed in English stays findable in the language you ask in |
| *"Use my notes on Kubernetes to answer this"* | Reads the page and answers from it |
| *"Check this page against real sources"* | Re-reads it, tests the claims, proposes a rewrite with inline footnotes and a References section |
| *"These two pages are about the same thing, merge them"* | Merges the two: the absorbed page's body is appended to the page you keep. Useful against the near-duplicates a growing wiki accumulates |
| *"Go through my Cloud chapter and tell me what is badly organised"* | Reads the chapter, then proposes all the moves and renames as a single changeset you can review in one pass |
| *"These questions are weak, write better ones"* | Adds, replaces or removes specific quiz questions |
| *"What should I review today?"* | Lists the pages you are closest to forgetting, rather than the ones you opened most recently |
| *"Translate my page on embeddings into German"* | Sends a translated copy to your inbox; the original page is untouched |
Everything that changes the wiki arrives as a **reviewable changeset**: a list of operations you
approve or drop one by one. An assistant deciding that a change is a good idea is never enough to
apply it.
---
## What is in this repository
This repository holds everything a model reads when it talks to Eigma: the tool descriptions and the
input schemas. The connector itself is a hosted MCP server with OAuth, and that part is not here.
Take what is useful: vendor `src/rules.ts` and compose your own descriptions from it, copy the
`ingestSchema.ts` pattern, or fork `example/server.ts` as a starting point.
```bash
npm install
npm test
npm run example # boots the example server and prints its address
```
| | |
|---|---|
| **`src/toolSpec.ts`** | Descriptions for the six read tools (browse, search, read a page, resolve drafts, read memory state, translate), plus the outline and search helpers behind them. |
| **`src/writeSpec.ts`** | Descriptions for the two write tools, each in a full and a slim variant. These are the tools that change your wiki, so their wording matters most. |
| **`src/rules.ts`** | The 20 shared extraction rules that every tool description and the server instructions are composed from. Change a rule here and the change takes effect in every channel at once. |
| **`src/ingestSchema.ts`** | The save tool's input schema. |
| **`src/changeOpsSchema.ts`** | The edit tool's operation vocabulary, typed. |
| **`src/skill.ts`** | The connector's skill and its server instructions: when to act, what order to call tools in, how not to loop. |
| **`src/renderSurface.ts`** | A way to drive your own handler and get back the exact bytes `tools/list` puts on the wire. |
| **`src/tools.ts`** | The ordered tool registry: reads before writes, plus the per-host type that decides which variant of each description is used. |
| **`src/textNormalize.ts`** | The single text normalizer that every cross-language comparison in this repository uses. |
| **`skill/eigma-filing/`** | The generated Skill package, for hosts that load skills. Rebuild with `npm run build:skill`. |
| **`example/server.ts`** | A working MCP server over a `Map`. No database, no auth, ~330 lines; six of the eight tools wired end to end. |
## License
MIT © Eigma. The Eigma name, logo and screenshots are not covered by the MIT grant.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues