MCP w OpenAI Agents SDK: integracja danych firmowych
Praktyczny przewodnik po MCPServerStreamableHttp i MCPServerStdio z GitHubem, Postgresem i Notion jako źródłami danych dla agentów AI.
1. Czym jest Model Context Protocol?
Model Context Protocol (MCP) umożliwia agentom dostęp do zewnętrznych systemów – od GitHuba po bazy danych – bez pisania własnych wrapperów. Dokumentacja SDK opisuje dwa najczęściej używane transporty:
MCPServerStreamableHttp– dla usług udostępnianych przez HTTP (idealne dla GitHuba, Notion).MCPServerStdio– dla lokalnych procesów uruchamianych z CLI (np. Postgresowy serwer MCP).
2. Konfiguracja streamowalnego serwera HTTP
Załóżmy, że chcesz, aby agent uzyskiwał dane z firmowego GitHuba i bazy wiedzy w Notion:
import {
Agent,
MCPServerStreamableHttp,
createMCPToolStaticFilter,
} from "@openai/agents";
const githubMcp = new MCPServerStreamableHttp({
name: "company-github",
url: "https://mcp.github.com",
cacheToolsList: true,
toolFilter: createMCPToolStaticFilter(["list_pull_requests", "get_issue"]),
});
const notionMcp = new MCPServerStreamableHttp({
name: "company-notion",
url: "https://mcp.notion.com/mcp",
cacheToolsList: true,
});
cacheToolsList: true przyspiesza ładowanie; kiedy dodasz nowe narzędzie, wywołaj githubMcp.invalidateToolsCache() aby odświeżyć cache.
3. Dodanie lokalnego serwera stdio
Do zapytań SQL skorzystaj z MCPServerStdio, który uruchomi serwer jako proces:
import { MCPServerStdio } from "@openai/agents";
const postgresMcp = new MCPServerStdio({
fullCommand: "npx -y postgres-mcp-server",
cacheToolsList: true,
toolFilter: (tool) => tool.name?.startsWith("select_") ?? false,
});
W pliku .env przechowuj dane dostępowe (np. DATABASE_URL), a następnie przekaż je jako zmienne środowiskowe przy uruchamianiu procesu.
4. Agent korzystający z wielu MCP
Skonfiguruj agenta, który potrafi przełączać się między źródłami:
const opsAnalyst = new Agent({
name: "Ops Analyst",
instructions: `
Odpowiadasz na pytania o status deployów, raporty błędów i dokumentację.
Używaj MCP do pobierania danych: GitHub dla PR i issue, Notion dla runbooków, Postgres dla metryk.
`,
mcpServers: [githubMcp, notionMcp, postgresMcp],
});
Teraz po wywołaniu:
const result = await opsAnalyst.run({
input: "Podaj status PR #245 i czy w bazie są nierozwiązane alerty.",
});
console.log(result.finalOutput);
Agent automatycznie wybierze odpowiednie narzędzia MCP (np. list_pull_requests, select_alerts) i zwróci scaloną odpowiedź. Dziennik result.newItems pokaże, które narzędzia zostały wykorzystane.
5. Dobre praktyki z dokumentacji
- Filtruj narzędzia – ograniczaj dostęp do konkretnych funkcji (
createMCPToolStaticFilterlub funkcja własna), aby uniknąć wywołań spoza zakresu. - Odświeżaj cache po zmianach –
invalidateToolsCache()gwarantuje, że agent pozna nowe endpointy bez restartu aplikacji. - Łącz MCP z guardrailami – zanim agent sięgnie po dane wrażliwe, sprawdź kontekst wejścia (np. czy pytanie ma odpowiedni poziom uprawnień).
- Monitoruj błędy – obsługuj wyjątki w
try/catch, aby informować użytkownika, gdy zewnętrzny serwer MCP jest niedostępny.
Z tą konfiguracją agent AI zyskuje wgląd w realne systemy firmowe i może odpowiadać na bieżąco na pytania o deploye, zgłoszenia czy metryki – bez ręcznego kopiowania danych.
📚 Dokumentacja i Zasoby
Oficjalna Dokumentacja
- Model Context Protocol
- OpenAI Agents SDK - JavaScript
- OpenAI Agents - MCP Integration
- MCP Servers Repository
Powiązane Artykuły
Podobał Ci się ten artykuł?
Udostępnij go osobom, którym ten materiał może się przydać.
Powiązane artykuły
Guardrails w OpenAI Agents JS: moderacja krok po kroku
Dowiedz się, jak zbudować moderację w OpenAI Agents JS z guardrailami wejścia i wyjścia, obsługą wyjątków oraz ręcznym zatwierdzaniem w TypeScripcie.
Orkiestracja agentów w OpenAI Agents SDK dla JS
Dowiedz się, jak zbudować system agentów w TypeScripcie z handoffami, guardrailami, MCP i kontrolą narzędzi w OpenAI Agents SDK.
OpenAI Agents JS jako router zadań dla Claude Code
Pokazujemy, jak agent w TypeScripcie triage’uje zadania, wybiera właściwego specjalistę i przekazuje je do Claude Code przez asTool i hooki.