An MCP server for exist-db

Alfredo Cosco <[email protected]> Thu, 7 May 2026 19:57:24 +0200
Newsgroups gmane.text.xml.exist
Message-ID <CAB8fwFO4te5nUm10Fyq6J31NrsSQtY=uR6W6q_4JeHURbcV2gA@mail.gmail.com>
--===============3443686651830425035==
Content-Type: multipart/alternative; boundary="000000000000e0ae3206513e034f"

--000000000000e0ae3206513e034f
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi all,
I just built an MCP server for exist-db =E2=80=94 fresh out of the oven, ba=
rely
tested, and very much a work in progress. But it's here.

https://github.com/orazionelson/existdb-mcp

What it does:
1) Offline documentation lookup =E2=80=94 query the full eXist-db/XQuery fu=
nction
library (fundocs) without leaving your AI client. Signatures, parameters,
return types, the whole thing.

2) XQuery execution =E2=80=94 send queries directly to a live eXist-db inst=
ance via
the REST API and get results back in your chat.

3) Collection management =E2=80=94 list, store, retrieve and delete documen=
ts and
collections without touching the eXide UI.

If you're using Claude Desktop, Claude Code, Cursor, RAGFlow or any other
MCP-compatible client, you can wire this up and start querying, populating
and programming your eXist-db instance through natural language.

It was designed and scaffolded with Claude Code, which made the whole thing
surprisingly fast to put together =E2=80=94 the MCP SDK, the fundocs scrape=
r, the
REST API wrappers.

Bye,
Alfredo

--000000000000e0ae3206513e034f
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi all,<div><span style=3D"color:rgba(0,0,0,0.9);font-fami=
ly:system-ui,-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,U=
buntu,Oxygen,Cantarell,&quot;Fira Sans&quot;,&quot;Droid Sans&quot;,&quot;H=
elvetica Neue&quot;,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Se=
goe UI Emoji&quot;,&quot;Segoe UI Symbol&quot;;font-size:14px;white-space:p=
re-wrap">I just built an MCP server for exist-db =E2=80=94 fresh out of the=
 oven, barely tested, and very much a work in progress. But it&#39;s here.<=
/span></div><div><span style=3D"color:rgba(0,0,0,0.9);font-family:system-ui=
,-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ubuntu,Oxygen=
,Cantarell,&quot;Fira Sans&quot;,&quot;Droid Sans&quot;,&quot;Helvetica Neu=
e&quot;,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji=
&quot;,&quot;Segoe UI Symbol&quot;;font-size:14px;white-space:pre-wrap"><br=
></span></div><div><a href=3D"https://github.com/orazionelson/existdb-mcp">=
https://github.com/orazionelson/existdb-mcp</a><span style=3D"color:rgba(0,=
0,0,0.9);font-family:system-ui,-apple-system,BlinkMacSystemFont,&quot;Segoe=
 UI&quot;,Roboto,Ubuntu,Oxygen,Cantarell,&quot;Fira Sans&quot;,&quot;Droid =
Sans&quot;,&quot;Helvetica Neue&quot;,Arial,sans-serif,&quot;Apple Color Em=
oji&quot;,&quot;Segoe UI Emoji&quot;,&quot;Segoe UI Symbol&quot;;font-size:=
14px;white-space:pre-wrap"></span></div><div><br></div><div>What it=C2=A0do=
es:<br style=3D"box-sizing:border-box;color:rgba(0,0,0,0.9);font-family:sys=
tem-ui,-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ubuntu,=
Oxygen,Cantarell,&quot;Fira Sans&quot;,&quot;Droid Sans&quot;,&quot;Helveti=
ca Neue&quot;,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI=
 Emoji&quot;,&quot;Segoe UI Symbol&quot;;font-size:14px;white-space:pre-wra=
p"><span style=3D"color:rgba(0,0,0,0.9);font-family:system-ui,-apple-system=
,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ubuntu,Oxygen,Cantarell,&qu=
ot;Fira Sans&quot;,&quot;Droid Sans&quot;,&quot;Helvetica Neue&quot;,Arial,=
sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;,&quot;S=
egoe UI Symbol&quot;;font-size:14px;white-space:pre-wrap">1) Offline docume=
ntation lookup =E2=80=94 query the full eXist-db/XQuery function library (f=
undocs) without leaving your AI client. Signatures, parameters, return type=
s, the whole thing.</span><br style=3D"box-sizing:border-box;color:rgba(0,0=
,0,0.9);font-family:system-ui,-apple-system,BlinkMacSystemFont,&quot;Segoe =
UI&quot;,Roboto,Ubuntu,Oxygen,Cantarell,&quot;Fira Sans&quot;,&quot;Droid S=
ans&quot;,&quot;Helvetica Neue&quot;,Arial,sans-serif,&quot;Apple Color Emo=
ji&quot;,&quot;Segoe UI Emoji&quot;,&quot;Segoe UI Symbol&quot;;font-size:1=
4px;white-space:pre-wrap"><span style=3D"color:rgba(0,0,0,0.9);font-family:=
system-ui,-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ubun=
tu,Oxygen,Cantarell,&quot;Fira Sans&quot;,&quot;Droid Sans&quot;,&quot;Helv=
etica Neue&quot;,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe=
 UI Emoji&quot;,&quot;Segoe UI Symbol&quot;;font-size:14px;white-space:pre-=
wrap"><br></span></div><div><span style=3D"color:rgba(0,0,0,0.9);font-famil=
y:system-ui,-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ub=
untu,Oxygen,Cantarell,&quot;Fira Sans&quot;,&quot;Droid Sans&quot;,&quot;He=
lvetica Neue&quot;,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Seg=
oe UI Emoji&quot;,&quot;Segoe UI Symbol&quot;;font-size:14px;white-space:pr=
e-wrap">2) XQuery execution =E2=80=94 send queries directly to a live eXist=
-db instance via the REST API and get results back in your chat.</span><br =
style=3D"box-sizing:border-box;color:rgba(0,0,0,0.9);font-family:system-ui,=
-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ubuntu,Oxygen,=
Cantarell,&quot;Fira Sans&quot;,&quot;Droid Sans&quot;,&quot;Helvetica Neue=
&quot;,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&=
quot;,&quot;Segoe UI Symbol&quot;;font-size:14px;white-space:pre-wrap"><br =
style=3D"box-sizing:border-box;color:rgba(0,0,0,0.9);font-family:system-ui,=
-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ubuntu,Oxygen,=
Cantarell,&quot;Fira Sans&quot;,&quot;Droid Sans&quot;,&quot;Helvetica Neue=
&quot;,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&=
quot;,&quot;Segoe UI Symbol&quot;;font-size:14px;white-space:pre-wrap"><spa=
n style=3D"color:rgba(0,0,0,0.9);font-family:system-ui,-apple-system,BlinkM=
acSystemFont,&quot;Segoe UI&quot;,Roboto,Ubuntu,Oxygen,Cantarell,&quot;Fira=
 Sans&quot;,&quot;Droid Sans&quot;,&quot;Helvetica Neue&quot;,Arial,sans-se=
rif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;,&quot;Segoe UI=
 Symbol&quot;;font-size:14px;white-space:pre-wrap">3) Collection management=
 =E2=80=94 list, store, retrieve and delete documents and collections witho=
ut touching the eXide UI.</span><br style=3D"box-sizing:border-box;color:rg=
ba(0,0,0,0.9);font-family:system-ui,-apple-system,BlinkMacSystemFont,&quot;=
Segoe UI&quot;,Roboto,Ubuntu,Oxygen,Cantarell,&quot;Fira Sans&quot;,&quot;D=
roid Sans&quot;,&quot;Helvetica Neue&quot;,Arial,sans-serif,&quot;Apple Col=
or Emoji&quot;,&quot;Segoe UI Emoji&quot;,&quot;Segoe UI Symbol&quot;;font-=
size:14px;white-space:pre-wrap"><br style=3D"box-sizing:border-box;color:rg=
ba(0,0,0,0.9);font-family:system-ui,-apple-system,BlinkMacSystemFont,&quot;=
Segoe UI&quot;,Roboto,Ubuntu,Oxygen,Cantarell,&quot;Fira Sans&quot;,&quot;D=
roid Sans&quot;,&quot;Helvetica Neue&quot;,Arial,sans-serif,&quot;Apple Col=
or Emoji&quot;,&quot;Segoe UI Emoji&quot;,&quot;Segoe UI Symbol&quot;;font-=
size:14px;white-space:pre-wrap"><span style=3D"color:rgba(0,0,0,0.9);font-f=
amily:system-ui,-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Robot=
o,Ubuntu,Oxygen,Cantarell,&quot;Fira Sans&quot;,&quot;Droid Sans&quot;,&quo=
t;Helvetica Neue&quot;,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot=
;Segoe UI Emoji&quot;,&quot;Segoe UI Symbol&quot;;font-size:14px;white-spac=
e:pre-wrap">If you&#39;re using Claude Desktop, Claude Code, Cursor, RAGFlo=
w or any other MCP-compatible client, you can wire this up and start queryi=
ng, populating and programming your eXist-db instance through natural langu=
age.</span><br style=3D"box-sizing:border-box;color:rgba(0,0,0,0.9);font-fa=
mily:system-ui,-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto=
,Ubuntu,Oxygen,Cantarell,&quot;Fira Sans&quot;,&quot;Droid Sans&quot;,&quot=
;Helvetica Neue&quot;,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;=
Segoe UI Emoji&quot;,&quot;Segoe UI Symbol&quot;;font-size:14px;white-space=
:pre-wrap"><br style=3D"box-sizing:border-box;color:rgba(0,0,0,0.9);font-fa=
mily:system-ui,-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto=
,Ubuntu,Oxygen,Cantarell,&quot;Fira Sans&quot;,&quot;Droid Sans&quot;,&quot=
;Helvetica Neue&quot;,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;=
Segoe UI Emoji&quot;,&quot;Segoe UI Symbol&quot;;font-size:14px;white-space=
:pre-wrap"><span style=3D"color:rgba(0,0,0,0.9);font-family:system-ui,-appl=
e-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ubuntu,Oxygen,Canta=
rell,&quot;Fira Sans&quot;,&quot;Droid Sans&quot;,&quot;Helvetica Neue&quot=
;,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;=
,&quot;Segoe UI Symbol&quot;;font-size:14px;white-space:pre-wrap">It was de=
signed and scaffolded with Claude Code, which made the whole thing surprisi=
ngly fast to put together =E2=80=94 the MCP SDK, the fundocs scraper, the R=
EST API wrappers.</span><br style=3D"box-sizing:border-box;color:rgba(0,0,0=
,0.9);font-family:system-ui,-apple-system,BlinkMacSystemFont,&quot;Segoe UI=
&quot;,Roboto,Ubuntu,Oxygen,Cantarell,&quot;Fira Sans&quot;,&quot;Droid San=
s&quot;,&quot;Helvetica Neue&quot;,Arial,sans-serif,&quot;Apple Color Emoji=
&quot;,&quot;Segoe UI Emoji&quot;,&quot;Segoe UI Symbol&quot;;font-size:14p=
x;white-space:pre-wrap"><br style=3D"box-sizing:border-box;color:rgba(0,0,0=
,0.9);font-family:system-ui,-apple-system,BlinkMacSystemFont,&quot;Segoe UI=
&quot;,Roboto,Ubuntu,Oxygen,Cantarell,&quot;Fira Sans&quot;,&quot;Droid San=
s&quot;,&quot;Helvetica Neue&quot;,Arial,sans-serif,&quot;Apple Color Emoji=
&quot;,&quot;Segoe UI Emoji&quot;,&quot;Segoe UI Symbol&quot;;font-size:14p=
x;white-space:pre-wrap"><span style=3D"color:rgba(0,0,0,0.9);font-family:sy=
stem-ui,-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ubuntu=
,Oxygen,Cantarell,&quot;Fira Sans&quot;,&quot;Droid Sans&quot;,&quot;Helvet=
ica Neue&quot;,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe U=
I Emoji&quot;,&quot;Segoe UI Symbol&quot;;font-size:14px;white-space:pre-wr=
ap">Bye,</span></div><div><span style=3D"color:rgba(0,0,0,0.9);font-family:=
system-ui,-apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ubun=
tu,Oxygen,Cantarell,&quot;Fira Sans&quot;,&quot;Droid Sans&quot;,&quot;Helv=
etica Neue&quot;,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe=
 UI Emoji&quot;,&quot;Segoe UI Symbol&quot;;font-size:14px;white-space:pre-=
wrap">Alfredo

</span><span style=3D"color:rgba(0,0,0,0.9);font-family:system-ui,-apple-sy=
stem,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ubuntu,Oxygen,Cantarell=
,&quot;Fira Sans&quot;,&quot;Droid Sans&quot;,&quot;Helvetica Neue&quot;,Ar=
ial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;,&qu=
ot;Segoe UI Symbol&quot;;font-size:14px;white-space:pre-wrap"></span></div>=
</div>

--000000000000e0ae3206513e034f--


--===============3443686651830425035==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============3443686651830425035==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Exist-open mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/exist-open

--===============3443686651830425035==--