8 vendor-neutral Model Context Protocol connectors (Dolibarr, GitLab, Kanboard, Matrix, n8n, Nextcloud, HedgeDoc, WordPress) — Apache-2.0
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Benjamin Jean 9cd63f585a
Some checks failed
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
fix(kanboard): une page de tâches qui dit qu'elle est une page, v0.14.2
kanboard_list_tasks rendait une liste JSON nue, coupée à `limit` sans rien en
dire. Mesuré sur l'instance le 2 septembre 2026 : le projet 29 porte 109 cartes
fermées ; status=0, limit=100 en rendait 100, et la réponse était indiscernable
d'un projet qui en contient exactement 100. Les 9 autres n'étaient atteignables
par aucun paramètre, l'outil n'ayant pas d'`offset`.

La réponse prend l'enveloppe déjà servie par kanboard_list_projects :
`total_available` compté AVANT la coupe, `offset`, `count`, `has_more`, et
`next_offset`, la valeur à passer ensuite, présent seulement quand une page
suivante existe. Un projet vide rend cette enveloppe lui aussi, plutôt que `[]`.

Deux limites restent, et sont écrites dans la docstring. getAllTasks ne pagine
pas côté serveur : le connecteur reçoit toujours toutes les tâches du projet et
découpe ensuite, donc `offset` épargne la résolution des libellés, un appel par
tâche rendue pour la colonne, le swimlane, le projet, la catégorie et le
porteur, mais pas l'appel JSON-RPC lui-même. Et l'ordre est celui de Kanboard,
par colonne puis position, pas un tri stable garanti : une carte déplacée entre
deux appels change de rang, donc paginer un tableau en cours de remaniement peut
sauter ou répéter une ligne.

L'outil n'avait aucun test. TestListTasks en ajoute dix : la reproduction du cas
109 sur 100 avant correction, puis la non régression sur la dernière page,
l'offset hors bornes, l'offset négatif, le projet vide, le plafond de `limit`,
et le fait que seule la fenêtre rendue soit résolue.

docs/RECETTE_GLOBALE.md annonçait encore kanboard 0.13.2, deux versions en
retard.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 00:27:47 +02:00
.github/workflows Initial open-source release — mcp-foss-connectors 2026-06-09 11:17:30 +02:00
docs fix(kanboard): une page de tâches qui dit qu'elle est une page, v0.14.2 2026-09-03 00:27:47 +02:00
dolibarr_mcp docs(dolibarr): recette 1.7.0, avec une phase tickets signalée comme non éprouvée 2026-09-01 16:30:41 +02:00
gitlab_mcp Initial open-source release — mcp-foss-connectors 2026-06-09 11:17:30 +02:00
hedgedoc_mcp test: rapatrier les suites qui couvraient le code porte, et declarer les env manquantes 2026-08-11 15:42:22 +02:00
kanboard_mcp fix(kanboard): une page de tâches qui dit qu'elle est une page, v0.14.2 2026-09-03 00:27:47 +02:00
LICENSES Initial open-source release — mcp-foss-connectors 2026-06-09 11:17:30 +02:00
matrix_mcp feat(matrix 1.4.0): contexte non amputé, compteurs de non-lus auditables 2026-09-02 11:05:11 +02:00
n8n_mcp fix(n8n): des comptes qui cessent de bouger quand on change limit, v1.2.1 2026-09-03 00:27:03 +02:00
nextcloud_mcp test: rapatrier les suites qui couvraient le code porte, et declarer les env manquantes 2026-08-11 15:42:22 +02:00
scripts feat(build): --bundle-name, pour mettre a jour une extension deja installee 2026-08-12 10:53:49 +02:00
tests fix(kanboard): une page de tâches qui dit qu'elle est une page, v0.14.2 2026-09-03 00:27:47 +02:00
wordpress_mcp feat(wordpress): warn on block loss, expose revisions and a content check, v1.4.0 2026-08-31 16:20:32 +02:00
.gitignore Initial open-source release — mcp-foss-connectors 2026-06-09 11:17:30 +02:00
.gitlab-ci.yml Initial open-source release — mcp-foss-connectors 2026-06-09 11:17:30 +02:00
CONTRIBUTING.md Initial open-source release — mcp-foss-connectors 2026-06-09 11:17:30 +02:00
LICENSE Initial open-source release — mcp-foss-connectors 2026-06-09 11:17:30 +02:00
NOTICE Initial open-source release — mcp-foss-connectors 2026-06-09 11:17:30 +02:00
pyproject.toml fix(build): epingler mcp<2.0, la 2.0 supprime mcp.server.fastmcp 2026-07-31 23:07:53 +02:00
README.md docs: compteurs d'outils, et la règle de mise à jour d'une extension installée 2026-09-01 16:28:42 +02:00
REUSE.toml Initial open-source release — mcp-foss-connectors 2026-06-09 11:17:30 +02:00

mcp-foss-connectors

Vendor-neutral Model Context Protocol (MCP) servers that let MCP clients — Claude Desktop, Cowork, or any other MCP host — read from and act on the free and open-source tools that run a typical back office: ERP, project board, CMS, automation, chat, file storage, notes and code forge.

Every server is a single, self-contained Python file. It is configured entirely through environment variables — no hostname, login or secret is ever baked into the code — so it works against any instance of the target tool, whether self-hosted or managed.

Origin: these connectors were built and battle-tested at inno³ against its own information system, then generalised and released under Apache-2.0. See Origin & attribution.


Connectors

Connector Server name Tools Integrates with Auth
Dolibarr ERP dolibarr-mcp 78¹ Dolibarr 16+ REST API DOLAPIKEY API key
Kanboard kanboard-mcp 53 Kanboard JSON-RPC API personal API token
WordPress wordpress-mcp 26 WP REST API (+ ACF) Application Password
n8n n8n-mcp 22 n8n public REST API X-N8N-API-KEY
Matrix matrix-mcp 22 Matrix client-server API access token
Nextcloud nextcloud-mcp 14 WebDAV + OCS API app password
HedgeDoc hedgedoc-mcp 8 HedgeDoc 1.x API session / API token
GitLab gitlab-mcp 18 GitLab REST API v4 personal access token

All servers target Python 3.11+ and use the official mcp library. A per-connector README in each *_mcp/ directory documents its environment variables and tools in detail.

¹ Dolibarr exposes 78 vendor-neutral tools. Organisation-specific tools that depend on custom Dolibarr modules (e.g. inno³'s MeetingNotes and signed portal URLs) are not shipped here: they live in a separate package that plugs in via the dolibarr_mcp.extensions entry-point group. See Optional extensions and dolibarr_mcp/README.md.


Quick start (from source)

git clone <this-repo> && cd mcp-foss-connectors
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

# configure the connector you want, then run it over stdio
export GITLAB_URL="https://gitlab.com"
export GITLAB_TOKEN="glpat-…"
python -m gitlab_mcp.server

To wire a server into an MCP client manually, point the client at the module:

{
  "mcpServers": {
    "gitlab": {
      "command": "python",
      "args": ["-m", "gitlab_mcp.server"],
      "env": { "GITLAB_URL": "https://gitlab.com", "GITLAB_TOKEN": "glpat-…" }
    }
  }
}

Install in Claude Desktop (MCPB bundle)

Each connector can be packaged as an MCPB bundle (the Claude Desktop extension format): a zip containing manifest.json + src/server.py + src/lib/ (vendored dependencies).

python scripts/build_mcpb.py gitlab     # produces dist/gitlab-mcp.mcpb

Then in Claude Desktop → Settings → Extensions, drag the .mcpb file in and fill the requested fields (URL, token…). They are stored encrypted by the client. See docs/PACKAGING.md for the MCPB rules and known gotchas.

MCPB bundles are build artifacts and are not committed to this repository.

Download pre-built bundles

You don't have to build them yourself — pre-built .mcpb bundles for every connector are attached to each tagged release.

Latest — v0.1.0:

Connector Download
Dolibarr ERP dolibarr-mcp.mcpb
Kanboard kanboard-mcp.mcpb
WordPress wordpress-mcp.mcpb
n8n n8n-mcp.mcpb
Matrix matrix-mcp.mcpb
Nextcloud nextcloud-mcp.mcpb
HedgeDoc hedgedoc-mcp.mcpb
GitLab gitlab-mcp.mcpb

The bundles embed no credentials: you fill the URL/token at install time and the client stores them encrypted.


Configuration model

  • One environment variable per setting. Conventionally <TOOL>_URL for the base URL plus the credential variables listed in each connector's README.
  • No defaults that point at a specific deployment. Where a connector ships a default URL it is the tool's public/canonical one (e.g. https://gitlab.com) or empty, never a private host.
  • Compact responses. Servers return minified JSON with conservative default page sizes to keep the client's context window small.

Optional extensions

The connectors stay vendor-neutral, but they are extensible: an organisation that runs custom modules can add its own tools without forking.

The Dolibarr connector discovers extensions through the entry-point group dolibarr_mcp.extensions. A separate package advertises a register callable there:

# in the extension package's pyproject.toml
[project.entry-points."dolibarr_mcp.extensions"]
my_org = "my_org_pkg.extension:register"
# my_org_pkg/extension.py
def register(mcp):
    """Receives the live FastMCP instance; add @mcp.tool()-style tools."""
    mcp.tool()(my_extra_tool)

When that package is installed next to mcp-foss-connectors, its tools appear automatically; uninstall it and the connector falls back to the generic core. No environment flag, no patch to this repository.

inno³ ships its own such add-on — inno3-mcp-extensions — for tools that depend on its custom Dolibarr modules (MeetingNotes, signed client/support-credits portal URLs). It is not part of this repo, which keeps the public core strictly generic.


Tests

pytest

All tests are offline unit tests — every HTTP call is mocked, so the suite runs with no network and no real credentials. Each connector has a tests/test_<tool>.py.


Origin & attribution

This toolkit was created by inno³, an independent consultancy specialised in open-source and open-innovation strategy, legal and compliance. inno³ runs its own back office entirely on the free/open-source tools these connectors target, and originally wrote them to drive that system from MCP clients.

The code was then generalised — stripped of any inno³-specific host, identifier or module — and published here under the Apache License 2.0 so that:

  • any organisation running these tools can reuse the connectors as-is, and
  • inno³ can migrate its own usage onto this public, community-maintainable code base rather than a private fork.

Organisation-specific helpers (tools tied to inno³'s own Dolibarr modules) are kept entirely out of this repository and published as a separate add-on package — see Optional extensions.

Please keep the NOTICE file when redistributing, as required by the Apache-2.0 license. "inno³" is a trademark of inno³; the tool names above belong to their respective projects, which do not endorse this work.


License

Apache License 2.0 — © 2026 inno³ and contributors.