AI Intern · Tiximax JSCJul – Aug 2026

Department AI assistants on MCP

An internal assistant platform on Claude Code that answers from company documents and queries live business data through read-only MCP tools.

5
Python MCP servers
50
tools, read-only by default
12
department skills I wrote
72%
of repository commits

Context

Each department wanted an assistant that answers from its own procedures and policies, cites its source and does not make up numbers. It also needed to look up live data such as revenue, exchange rates, GA4, Search Console and mail, without letting the model write its own SQL.

There was no dedicated server: everything had to run locally on each employee's machine inside Claude Code.

What I did

I was the lead developer (72% of non-merge commits) and handled overall integration; a colleague owned the core technical design and main code review.

  • Wrote 5 Python MCP servers exposing 50 tools: GA4 (14), Search Console (14), revenue and exchange rates (13), mail (6) and product lookup (3).
  • Created 12 of the department skills, plus a router command that sends a request to the right department's agent.
  • Built internal login and department-level permissions that run inside the Claude Code CLI, with admin-only folders.
  • Encrypted stored mail passwords with Windows DPAPI and restricted file permissions; blocked passwords typed into chat from being logged.
  • Packaged a setup for employees who do not use Git, with a locked settings script and onboarding guides.

How it works

An Obsidian vault is the single source of truth for company knowledge, organized by department. Each department has its own agent definition, skill and persona. A request flows like this:

  • The employee logs in; their department decides which skills and folders they can reach.
  • The router picks the department skill, which first asks clarifying questions before answering.
  • Answers come from vault documents and must label their source.
  • For live data, the skill calls a read-only MCP tool (only sending mail writes anything). GA4 and Search Console properties are pinned through environment variables, so the model cannot query other properties.

Results

  • 5 MCP servers, 50 tools, all read-only except sending mail.
  • 12 department skills authored by me.
  • 72% of the repository's non-merge commits.

What I'd do next

I also built a self-improvement loop for skills (harvest conversations, mine fixes, gate on held-out scores, admin approves). It has 81 passing unit tests but has not been run on real data yet, so I do not count it as a result. Running it on real usage, and measuring answer quality per department before and after, would be the next step.

Trợ lý AI cho phòng ban

Trợ lý nội bộ trên Claude Code, trả lời từ tài liệu công ty và tra dữ liệu thật qua tool MCP chỉ-đọc.

5
MCP server Python
50
tool, mặc định chỉ-đọc
12
skill phòng ban tôi viết
72%
commit của repo

Bối cảnh

Mỗi phòng ban cần một trợ lý trả lời đúng quy trình, quy chế của phòng mình, có trích nguồn và không bịa số. Trợ lý cũng phải tra được dữ liệu thật như doanh thu, tỷ giá, GA4, Search Console, mail mà không để model tự sinh SQL.

Không có server riêng: mọi thứ chạy cục bộ trên máy từng nhân viên, bên trong Claude Code.

Phần việc của tôi

Tôi là người phát triển chính (72% commit không tính merge) và lo phần tích hợp tổng thể; một đồng nghiệp phụ trách kỹ thuật lõi và review chính.

  • Viết 5 MCP server bằng Python với 50 tool: GA4 (14), Search Console (14), doanh thu và tỷ giá (13), mail (6), tra sản phẩm (3).
  • Tạo 12 skill cho các phòng ban, cùng lệnh router chuyển yêu cầu tới đúng agent của phòng.
  • Làm đăng nhập nội bộ và phân quyền theo phòng ban chạy ngay trong Claude Code CLI, có thư mục chỉ admin xem được.
  • Mã hoá mật khẩu mail bằng Windows DPAPI, giới hạn quyền file; chặn việc mật khẩu gõ qua chat bị ghi lại.
  • Đóng gói bộ cài cho nhân viên không dùng Git, kèm script khoá cấu hình và tài liệu hướng dẫn.

Cách hoạt động

Kho Obsidian là nguồn sự thật duy nhất cho tri thức công ty, chia theo phòng ban. Mỗi phòng có bộ agent, skill và persona riêng. Một yêu cầu đi qua các bước:

  • Nhân viên đăng nhập; phòng ban quyết định skill và thư mục nào họ được dùng.
  • Router chọn skill của phòng; skill hỏi lại để làm rõ trước khi trả lời.
  • Câu trả lời lấy từ tài liệu trong kho và phải ghi nhãn nguồn.
  • Khi cần số liệu thật, skill gọi tool MCP chỉ-đọc (chỉ có gửi mail là ghi). Property GA4 và Search Console được khoá qua biến môi trường nên model không tra được property khác.

Kết quả

  • 5 MCP server, 50 tool, tất cả chỉ-đọc trừ gửi mail.
  • 12 skill phòng ban do tôi viết.
  • 72% commit không tính merge của repo.

Bước tiếp theo

Tôi cũng làm cơ chế để skill tự cải thiện (thu hội thoại, rút ra chỗ cần sửa, chặn bằng điểm trên tập held-out, admin duyệt tay). Phần này có 81 unit test pass nhưng chưa chạy trên dữ liệu thật, nên tôi không tính là kết quả. Việc tiếp theo là chạy nó trên dữ liệu dùng thật và đo chất lượng câu trả lời của từng phòng trước và sau.