tachy
Provides integration with GitHub Issues to ingest and retrieve issues as work items, supporting syncing from specified repositories and mapping to products.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tachysearch knowledge about login timeout error"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
tachy
A self-hosted, source-agnostic knowledge engine for engineering work items. It ingests support tickets / issues from pluggable sources (Freshdesk first; GitHub and others by design), lets Claude — driven from the terminal via Claude Code — turn them into structured, queryable "lessons learned", and retrieves relevant prior cases when a new item comes in.
Claude is the reasoning layer. This service only persists and retrieves; it never calls an LLM. Each item is read and structured once, then reused.
Architecture
PowerShell -> Claude Code --(MCP stdio)--> tachy MCP server -> core -> Postgres
\-> sources/* -> Freshdesk / GitHub / ...
teammates / cron / CI --(HTTP)--> Hono REST API -> core ----^packages/core— DB, theWorkItemSourceinterface, services (source-agnostic)packages/sources/freshdesk— Freshdesk adapterpackages/sources/github— GitHub Issues adapterpackages/mcp— MCP server for Claude Code (the primary surface)packages/api— Hono REST API (cron, teammates, future UI)packages/cli—synccommanddb/schema.sql— canonical Postgres schema
Related MCP server: Melchizedek
Prerequisites
Node 20+
PostgreSQL 14+ with the
vector(pgvector),pg_trgm, andpgcryptoextensions available;schema.sqlcreates them. The easiest way to get pgvector locally is thepgvector/pgvectorDocker image, orapt install postgresql-16-pgvector.
Setup
npm install
# Create the database and apply the schema:
createdb tachy
psql "postgres://localhost:5432/tachy" -f db/schema.sql
cp .env.example .env # then fill in DATABASE_URL and your Freshdesk tokenschema.sql seeds the teams/products you use (Track & Trace -> tpd, ftrace;
BPT -> csdr, eudr, pcf, medical-devices), the osapiens-freshdesk source, and
an example group mapping (Freshdesk group 48000641379 -> tpd). Adjust the
seed block for your other groups.
Freshdesk numeric
status(e.g. 6) is account-specific and stored raw.
Use it from Claude Code (PowerShell)
.mcp.json already registers the server. From the project folder:
claudeThen, in the session:
analyze ticket 58925 from osapiens-freshdeskClaude will call fetch_work_item, clean + summarize, show you the summary,
and only call save_knowledge_entry after you approve. To consult:
what do we know that's relevant to ticket 61010?Claude calls get_context (fetch + archive search) and answers. Optionally:
post that analysis as a private note on 61010MCP tools
fetch_work_item, search_knowledge, get_context, save_knowledge_entry,
post_private_note, add_knowledge_feedback, record_analysis_run.
search_knowledge and get_context are hybrid: keyword (FTS + trigram) blended
with semantic similarity over a local embedding, so paraphrases surface even with
no shared keywords. save_knowledge_entry stamps created_by from
TACHY_USER_EMAIL and embeds the entry on save.
REST API (optional)
npm run api # http://localhost:8787GET /health, POST /work-items/:source/:id/fetch, GET /knowledge/search?q=,
POST /knowledge, GET /knowledge/:id/feedback, POST /knowledge/:id/feedback,
POST /analysis-runs, POST /work-items/:source/:id/notes.
Set TACHY_API_TOKEN to require a bearer token on every route except /health
(Authorization: Bearer <token>). If it is unset, the server binds to
127.0.0.1 only and warns. The MCP server (stdio) is unaffected.
Incremental sync (optional)
npm run sync sync osapiens-freshdesk --since=2026-06-01T00:00:00Z --group=48000641379Stores/refreshes raw work items only — it never creates knowledge entries (those always require your approval). Schedule it with Windows Task Scheduler.
Sources
Two adapters ship today:
Freshdesk —
external_idis the ticket number;group_idmaps to a product. Supports private-note write-back.GitHub (issues) —
external_idisowner/repo#123;owner/repomaps to a product. Set the repos to sync in the connection'sconfig.repos(["owner/repo", ...]) or pass--group=owner/repo. PRs are skipped. GitHub has no private notes, sopost_private_noteis intentionally refused.
Tokens follow one pattern: FRESHDESK_TOKEN_<SLUG> / GITHUB_TOKEN_<SLUG>,
falling back to FRESHDESK_TOKEN / GITHUB_TOKEN.
Adding another source
Implement WorkItemSource (see packages/core/src/source.ts), register it in
the entrypoints, and add a source_connections row. No schema change.
Semantic search
Embeddings are produced by a local model (all-MiniLM-L6-v2, 384-dim, via
fastembed) — nothing is sent to an external API. The model (~90MB) is
downloaded on first use into .fastembed-cache/. Fresh databases get the
vector column from schema.sql; to upgrade an existing database run
db/0002_pgvector.sql then backfill embeddings for prior entries:
npm run sync embed-backfillBackups
npm run sync backup # pg_dump -Fc into ./backups/
npm run sync restore --file=backups/tachy-….dump # pg_restore (overwrites!)Both need the PostgreSQL client tools (pg_dump / pg_restore) on PATH.
backups/ is git-ignored — dumps contain real ticket data, so keep them off any
shared/synced folder. Schedule backup with Windows Task Scheduler.
Privacy
Never commit real ticket data, tokens, customer names, or internal URLs.
.env is git-ignored; tokens are resolved from env by source slug, never stored
in the DB.
License
AGPL-3.0-or-later. If you run a modified version of tachy as a network
service, you must make the modified source available to its users (see
LICENSE).
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/diegokoes/tachy'
If you have feedback or need assistance with the MCP directory API, please join our Discord server