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,"Segoe UI",Roboto,U= buntu,Oxygen,Cantarell,"Fira Sans","Droid Sans","H= elvetica Neue",Arial,sans-serif,"Apple Color Emoji","Se= goe UI Emoji","Segoe UI Symbol";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's here.<= /span></div><div><span style=3D"color:rgba(0,0,0,0.9);font-family:system-ui= ,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Ubuntu,Oxygen= ,Cantarell,"Fira Sans","Droid Sans","Helvetica Neu= e",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji= ","Segoe UI Symbol";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,"Segoe= UI",Roboto,Ubuntu,Oxygen,Cantarell,"Fira Sans","Droid = Sans","Helvetica Neue",Arial,sans-serif,"Apple Color Em= oji","Segoe UI Emoji","Segoe UI Symbol";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,"Segoe UI",Roboto,Ubuntu,= Oxygen,Cantarell,"Fira Sans","Droid Sans","Helveti= ca Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI= Emoji","Segoe UI Symbol";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,"Segoe UI",Roboto,Ubuntu,Oxygen,Cantarell,&qu= ot;Fira Sans","Droid Sans","Helvetica Neue",Arial,= sans-serif,"Apple Color Emoji","Segoe UI Emoji","S= egoe UI Symbol";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,"Segoe = UI",Roboto,Ubuntu,Oxygen,Cantarell,"Fira Sans","Droid S= ans","Helvetica Neue",Arial,sans-serif,"Apple Color Emo= ji","Segoe UI Emoji","Segoe UI Symbol";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,"Segoe UI",Roboto,Ubun= tu,Oxygen,Cantarell,"Fira Sans","Droid Sans","Helv= etica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe= UI Emoji","Segoe UI Symbol";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,"Segoe UI",Roboto,Ub= untu,Oxygen,Cantarell,"Fira Sans","Droid Sans","He= lvetica Neue",Arial,sans-serif,"Apple Color Emoji","Seg= oe UI Emoji","Segoe UI Symbol";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,"Segoe UI",Roboto,Ubuntu,Oxygen,= Cantarell,"Fira Sans","Droid Sans","Helvetica Neue= ",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji&= quot;,"Segoe UI Symbol";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,"Segoe UI",Roboto,Ubuntu,Oxygen,= Cantarell,"Fira Sans","Droid Sans","Helvetica Neue= ",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji&= quot;,"Segoe UI Symbol";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,"Segoe UI",Roboto,Ubuntu,Oxygen,Cantarell,"Fira= Sans","Droid Sans","Helvetica Neue",Arial,sans-se= rif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI= Symbol";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,"= Segoe UI",Roboto,Ubuntu,Oxygen,Cantarell,"Fira Sans","D= roid Sans","Helvetica Neue",Arial,sans-serif,"Apple Col= or Emoji","Segoe UI Emoji","Segoe UI Symbol";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,"= Segoe UI",Roboto,Ubuntu,Oxygen,Cantarell,"Fira Sans","D= roid Sans","Helvetica Neue",Arial,sans-serif,"Apple Col= or Emoji","Segoe UI Emoji","Segoe UI Symbol";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,"Segoe UI",Robot= o,Ubuntu,Oxygen,Cantarell,"Fira Sans","Droid Sans",&quo= t;Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","= ;Segoe UI Emoji","Segoe UI Symbol";font-size:14px;white-spac= e:pre-wrap">If you'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,"Segoe UI",Roboto= ,Ubuntu,Oxygen,Cantarell,"Fira Sans","Droid Sans","= ;Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","= Segoe UI Emoji","Segoe UI Symbol";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,"Segoe UI",Roboto= ,Ubuntu,Oxygen,Cantarell,"Fira Sans","Droid Sans","= ;Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","= Segoe UI Emoji","Segoe UI Symbol";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,"Segoe UI",Roboto,Ubuntu,Oxygen,Canta= rell,"Fira Sans","Droid Sans","Helvetica Neue"= ;,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"= ,"Segoe UI Symbol";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,"Segoe UI= ",Roboto,Ubuntu,Oxygen,Cantarell,"Fira Sans","Droid San= s","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji= ","Segoe UI Emoji","Segoe UI Symbol";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,"Segoe UI= ",Roboto,Ubuntu,Oxygen,Cantarell,"Fira Sans","Droid San= s","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji= ","Segoe UI Emoji","Segoe UI Symbol";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,"Segoe UI",Roboto,Ubuntu= ,Oxygen,Cantarell,"Fira Sans","Droid Sans","Helvet= ica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe U= I Emoji","Segoe UI Symbol";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,"Segoe UI",Roboto,Ubun= tu,Oxygen,Cantarell,"Fira Sans","Droid Sans","Helv= etica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe= UI Emoji","Segoe UI Symbol";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,"Segoe UI",Roboto,Ubuntu,Oxygen,Cantarell= ,"Fira Sans","Droid Sans","Helvetica Neue",Ar= ial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",&qu= ot;Segoe UI Symbol";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==--