<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dot.git/link/pi-merge.py, branch master</title>
<subtitle>Shell, editor and terminal configuration, and the tools that go with them
</subtitle>
<id>https://git.soarez.net/sz/dot.git/atom?h=master</id>
<link rel='self' href='https://git.soarez.net/sz/dot.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dot.git/'/>
<updated>2026-10-29T21:40:43+00:00</updated>
<entry>
<title>pi: generate mcp.json from ~/.config/pi/mcp.d fragments</title>
<updated>2026-10-29T21:40:43+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-29T21:40:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dot.git/commit/?id=b3448031088447d76d80ac6b2bfa08320973a2d9'/>
<id>urn:sha1:b3448031088447d76d80ac6b2bfa08320973a2d9</id>
<content type='text'>
pi reads user-level MCP servers from one file, and a private layer
linked that file to the same copy on every host -- so every host got a
server only one machine could run. Build it the way models.json is
built, from fragments another layer or one machine drops in mcp.d; this
repo ships none, and with none the file is left absent.

pi-models.py becomes pi-merge.py, which takes the key to merge and an
optional base file, and serves both.
</content>
</entry>
</feed>
