organisation.md
# organisation.md
**your team's living memory — an mcp server backed by a git repo.**
[](./LICENSE)
[](https://github.com/shashank-sn/organisation.md/actions/workflows/ci.yml)
`organisation.md` turns any github repository into your organisation's persistent context layer. any mcp-compatible ai tool (claude code, cursor, etc.) can **read**, **search**, and **propose updates** to your team's shared context — without a database, without a hosted service, without leaving your github account.
---
## how it works
1. **fork** this repository into your github organisation.
2. **edit** `organisation.md` with your team's identity, projects, decisions, and preferences.
3. **run** the mcp server — your ai agents connect and read/write context naturally.
all changes go through **pull requests** — your team reviews and merges them. git provides version history, branching, and access control out of the box.
## quickstart
### 1. generate a personal access token
go to [github.com/settings/tokens](https://github.com/settings/tokens) and generate a **classic token** with the `repo` scope. copy the token — you'll need it in the next step.
### 2. run with npx (recommended)
```bash
export GITHUB_TOKEN=ghp_your_token_here
export GITHUB_OWNER=your-github-username-or-org
export GITHUB_REPO=organisation.md
npx @shashank-sn/organisation-md
```
that's it. the mcp server starts in stdio mode and your ai agent can connect.
### 3. run in sse mode (for remote agents)
```bash
export GITHUB_TOKEN=ghp_your_token_here
export GITHUB_OWNER=your-github-username-or-org
export GITHUB_REPO=organisation.md
export TRANSPORT=sse
npx @shashank-sn/organisation-md
```
the server starts on `http://localhost:3000/sse`. configure your remote mcp host to connect to this endpoint.
### 4. or clone and run locally
```bash
git clone https://github.com/your-org/organisation.md.git
cd organisation.md
npm install
export GITHUB_TOKEN=ghp_your_token_here
export GITHUB_OWNER=your-github-username-or-org
export GITHUB_REPO=organisation.md
npx tsx src/server.ts
```
### 4. connect to your ai agent
the server speaks mcp over stdio. configure your ai tool to launch it:
**claude code** — add to your `.mcp.json`:
```json
{
"mcpServers": {
"organisation.md": {
"command": "npx",
"args": ["@shashank-sn/organisation-md"],
"env": {
"GITHUB_TOKEN": "ghp_...",
"GITHUB_OWNER": "your-org",
"GITHUB_REPO": "organisation.md"
}
}
}
}
```
**cursor / continue / other mcp hosts** — point to the same command with env vars.
## tools
| tool | description |
|------|-------------|
| `read_org` | read the full `organisation.md` file from the github repo |
| `read_section` | read a specific section by heading (e.g., "team", "decisions") |
| `update_section` | propose an update to a section — creates a pull request |
| `search_context` | search across `organisation.md` and all `context/` files |
| `propose_change` | propose a change to any file in the repo — creates a pull request |
| `list_context_files` | list all files in the `context/` directory |
| `import_file` | import a txt, md, or docx file into the knowledge base |
| `add_info` | add information via natural language — auto-detects the section |
| `remove_info` | remove information matching a description |
| `check_roles` | check git-based roles and codeowners |
| `check_permissions` | check if you can add/delete/approve/merge |
| `configure_codeowners` | update `.github/codeowners` for team access control |
| `report_bug` | auto-detect the area and file a github issue |
| `suggest_feature` | suggest a feature or improvement as a github issue |
## repository structure
```
organisation.md/
├── organisation.md # canonical org context file
├── context/ # supporting context files
│ ├── README.md
│ ├── projects.md # detailed project info
│ ├── architecture.md # system architecture
│ └── people.md # team members and roles
├── src/ # mcp server source (typescript)
│ ├── server.ts # entry point
│ ├── github/ # octokit wrapper (files, git api)
│ ├── content/ # markdown parser and template
│ ├── tools/ # mcp tool implementations
│ └── resources/ # mcp resource templates
├── docs/ # documentation
│ ├── quickstart.md # full setup guide
│ ├── agent-prompt.md # prompt template for ai agents
│ └── example-flows.md # common workflows
├── scripts/
│ └── build-site.mjs # github pages build script
├── .github/workflows/
│ ├── ci.yml # ci: typecheck + test on push/pr
│ └── pages.yml # github pages deployment
├── strategy.md # product strategy
├── license # mit
└── README.md
```
## configuration
copy `.env.example` to `.env` and fill in your values:
```bash
cp .env.example .env
```
| variable | required | default | description |
|----------|----------|---------|-------------|
| `GITHUB_TOKEN` | yes | — | github personal access token with `repo` scope |
| `GITHUB_OWNER` | yes | — | github username or organisation that owns the repo |
| `GITHUB_REPO` | yes | — | repository name (e.g., `organisation.md`) |
| `TRANSPORT` | no | `stdio` | transport mode — `stdio` for local mcp hosts, `sse` for remote connections |
| `PORT` | no | `3000` | port for sse transport (only used when `TRANSPORT=sse`) |
## customisation
1. **edit `organisation.md`** — replace the template content with your team's actual identity, projects, and decisions.
2. **add `context/` files** — create additional markdown files for deeper context (architecture docs, runbooks, etc.).
3. **fork and rename** — fork the repo into your org and update the env vars to point at your fork.
## development
```bash
npm install
npm run dev # development server with hot reload
npm test # run tests
npm run typecheck # typescript checking
npm run build # compile typescript
npm run build:site # build github pages site locally
```
## license
mit — fork it, use it, ship it. see [license](./license).
TDQS
Scored across 12 tools
Each tool has a clearly distinct purpose: reading (read_org, read_section), writing via PR (update_section, propose_change), natural language modifications (add_info, remove_info), permissions (check_permissions, check_roles, configure_codeowners), and file management (import_file, list_context_files, search_context). No two tools overlap in functionality.
Tool names consistently follow a verb_noun pattern in snake_case (e.g., add_info, list_context_files, update_section). All names are clear and predictable, with no mixing of conventions.
With 12 tools, the server is well-scoped for its purpose of managing an organisation.md knowledge base and associated context files. Each tool addresses a specific operation, neither too few nor too many.
The tool set covers reading, updating, adding/removing information, searching, importing files, and permissions. Minor gaps include no tool to delete a context file directly (only import and list) and no direct write without PR, but these are reasonable for a review-based workflow.