I built 3 MCPs for our internal libraries. Here's why it changed how my team works.
- MCP
- Angular
- Career
The problem wasn't the AI, it was the docs
Our team maintains a handful of internal Angular libraries — a design system, a data-access layer, and a forms toolkit. Every new engineer's first two weeks looked the same: grep the source, ask in Slack, get a half-answer, move on.
I didn't set out to "add AI" to that. I set out to make the libraries queryable in a way that didn't require someone on the team to answer the same question for the tenth time.
Why MCP, specifically
Model Context Protocol gives you a standard way to expose tools and resources to an LLM client. Instead of writing a custom chatbot per library, I wrote three small MCP servers, each scoped to one library:
design-system-mcp— exposes component APIs, usage examples, and design tokensdata-access-mcp— exposes the query/mutation surface and common error shapesforms-toolkit-mcp— exposes validators, custom controls, and known gotchas
{
"mcpServers": {
"design-system": {
"command": "node",
"args": ["./mcp/design-system/server.js"]
}
}
}
Any engineer with an MCP-compatible client (Claude Code, an IDE extension, whatever) can now ask "how do I use the async validator with the multi-select control" and get an answer sourced directly from the library's actual API surface — not a stale wiki page.
What changed on the team
Onboarding time for the data-access layer went from roughly a week of "figuring it out" to a couple of days of "asking and verifying."
The bigger shift was cultural, not technical. Once the libraries were queryable, the team started treating documentation gaps as bugs — if the MCP server couldn't answer a question well, that was a signal the underlying docs or types were unclear, not just an AI tooling limitation.
Where it didn't help
MCP servers are only as good as the surface they expose. For our oldest library, the one with the least consistent JSDoc coverage, the MCP answers were noticeably weaker. That pushed us to prioritize a docs cleanup we'd been putting off for over a year — which, in hindsight, was the actual win.
If you're considering this
Start with your most-asked-about library, not your most complex one. The payoff is proportional to how often people currently interrupt someone else to get the answer.