fn_ora_mcp
Click on "Deploy 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., "@fn_ora_mcplist objects in PKG_0000"
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.
Oracle MCP 서버
Claude Code 안에서 Oracle DB 패키지 코드를 자연어로 조회하는 MCP 서버입니다.
사전 조건
Python 3.10 이상 (권장: 3.12)
Oracle DB 접속 가능한 읽기 전용 계정
ALL_SOURCE,ALL_OBJECTS,ALL_PROCEDURES뷰 SELECT 권한 필요
Claude Code 설치
Related MCP server: Oracle APEX MCP Server
설치
1. 저장소 복사
git clone <저장소 URL>
cd oracle_mcp2. Python 가상환경 생성 및 패키지 설치
# Python 3.12로 가상환경 생성
py -3.12 -m venv .venv
# 패키지 설치
.\.venv\Scripts\pip install fastmcp oracledb python-dotenv3. 환경 변수 설정
.env.example을 복사해 .env를 만들고 실제 접속 정보를 입력합니다.
copy .env.example .env.env 파일 편집:
ORACLE_HOST=192.168.0.1 # Oracle DB 서버 IP
ORACLE_PORT=1521 # 포트 (기본 1521)
ORACLE_SERVICE=ORCL # 서비스명 또는 SID
ORACLE_USER=readonly_user # DB 계정
ORACLE_PASSWORD=your_password # DB 비밀번호
ORACLE_SCHEMA=TARGET_SCHEMA # 조회 대상 스키마 (비워두면 ORACLE_USER 스키마 사용)4. DB 연결 확인
.\.venv\Scripts\python verify_connection.py아래와 같이 출력되면 성공:
[1/3] DB 연결 시도 중...
연결 성공
[2/3] ALL_SOURCE 조회 권한 확인 ...
ALL_SOURCE SELECT 가능
[3/3] ALL_OBJECTS 조회 권한 확인 ...
ALL_OBJECTS SELECT 가능
[OK] Phase 1 검증 완료 - DB 연결 및 권한 정상Claude Code 연동
프로젝트 루트에 .mcp.json 생성
{
"mcpServers": {
"oracle-mcp": {
"command": "C:\\절대경로\\oracle_mcp\\.venv\\Scripts\\python.exe",
"args": ["C:\\절대경로\\oracle_mcp\\server.py"]
}
}
}
C:\\절대경로\\oracle_mcp부분을 실제 프로젝트 경로로 변경하세요. 예:C:\\Users\\홍길동\\source\\oracle_mcp
Claude Code 재시작
Claude Code를 완전히 종료 후 재시작하면 oracle-mcp 서버가 자동으로 연결됩니다.
사용법
Claude Code 채팅에서 자연어로 질문하면 됩니다.
패키지 검색
PKG_USER 로 시작하는 패키지 찾아줘APPL 이 들어간 패키지 목록 알려줘패키지 내 함수/프로시저 목록 조회
PKG_0000 패키지 안에 어떤 함수들이 있어?패키지 전체 소스 조회
PKG_0000 패키지 소스 코드 보여줘특정 함수/프로시저 코드 조회
PKG_0000 패키지의 FN_LOGIN 함수 코드 보여줘PKG_MEMBER 의 PROC_UPDATE 프로시저 내용이 뭐야?제공 툴 (MCP Tools)
툴 이름 | 파라미터 | 설명 |
|
| 패키지 전체 소스 또는 특정 함수/프로시저 코드 반환 |
|
| 패키지 내 함수/프로시저 이름 목록 반환 |
|
| 패키지명 패턴 검색 ( |
모든 파라미터는 대소문자 구분 없이 동작합니다.
주의사항
조회 전용입니다. 패키지 코드 수정, 컴파일, 데이터 변경은 지원하지 않습니다.
.env파일에는 DB 자격증명이 포함되므로 절대 Git에 커밋하지 마세요. (.gitignore에 등록되어 있음).mcp.json도 경로 정보가 포함되므로 Git에 올리지 않는 것을 권장합니다.운영 DB 연동 시 반드시 읽기 전용 전용 계정을 사용하세요.
Available Tools
3 toolsget_package_sourceC
Oracle 패키지 소스 조회.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | 패키지명 (대소문자 무관) | |
| object_name | No | 함수 또는 프로시저명. 생략 시 SPEC + BODY 전체 반환. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as whether the operation is read-only, destructive, or requires authentication. The absence of any behavioral details forces the agent to rely solely on the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief (one short phrase) but sacrifices clarity. It is under-specified rather than concise, failing to provide necessary context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description lacks completeness. It does not explain what the tool returns (source code of package) or any side effects, leaving the agent with insufficient understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no additional meaning beyond what the schema already provides for the two parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Oracle 패키지 소스 조회' (Oracle package source query) states a general purpose but does not use a specific verb+resource. It fails to distinguish from siblings like list_package_objects (listing objects) and search_packages (searching), leaving the tool's unique role unclear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. There is no mention of when to use this tool versus the sibling tools, nor any context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_package_objectsB
패키지 내 함수/프로시저 목록 조회.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | 패키지명 (대소문자 무관) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided and description lacks behavioral details such as permissions, error handling, or output structure beyond listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded, but could be slightly more descriptive without losing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present and simple parameter, the description is adequate but lacks behavioral context like error states.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter description in schema is sufficient (100% coverage), so description adds no extra meaning; baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists functions/procedures in a package, which is specific and distinguishable from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, but purpose is clear from name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_packagesA
패키지명 패턴 검색. % 없으면 자동으로 %pattern% 적용.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | 검색 패턴 (예: "PKG_0", "%APPL%") |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It discloses automatic wildcard wrapping ('if no %, apply %pattern%'), which is valuable. However, missing details like case sensitivity, search scope, or behavior on empty results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no wasted words. Front-loaded with purpose and behavior. Efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter search tool, description covers the key behavioral nuance (auto-wrapping). Output schema exists to detail return values. Could be enhanced by specifying what is returned, but adequate as is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (100%) with parameter description. Description adds meaning beyond schema by explaining the auto-wrapping behavior of the pattern parameter, which is not in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'package name pattern search' clearly. Verb (search), resource (packages), behavior (pattern matching). Different from siblings: get_package_source and list_package_objects are distinct operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for pattern-based package search but does not explicitly state when to use or when not to use, nor mention alternatives. Context is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
get_package_source - First observed
list_package_objects - First observed
search_packages
TDQS
Scored across 3 tools
Each tool targets a distinct aspect: package search, listing contents, and source retrieval. No overlap exists.
All tools follow a consistent verb_noun pattern using snake_case: get_package_source, list_package_objects, search_packages.
Three tools is lean but sufficient for a read-only Oracle package exploration server. No unnecessary tools.
Covers core read operations: search, list objects, get source. Minor gap in distinguishing package header vs body, but adequate for typical use.
Maintenance
Related MCP Connectors
Live SEO workflow tools for Claude Code, Codex, and AI agents.
Search verified Claude Code plugins and skills; fetch portable SKILL.md sources. Read-only.
Search, browse & read 340+ Claude Code marketing & SEO skills from any MCP client.
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides flexible access to Oracle databases for AI assistants like Claude, supporting SQL queries across multiple schemas with comprehensive database introspection capabilities.610310MIT
- FlicenseNot gradedqualityDmaintenanceEnables integration with Oracle Database and Oracle APEX 20.2, allowing LLMs to execute SQL/PL/SQL, manage database objects, and inspect APEX application metadata. It supports full database CRUD operations, object dependency analysis, and detailed page-level inspection of APEX environments.3-
- AlicenseNot gradedqualityDmaintenanceEnables natural language querying of MySQL databases via Claude Code, allowing SELECT queries, table listing, and schema inspection.240MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude Code to execute read-only queries and DML operations on Oracle and PostgreSQL databases, and to list or describe database tables.141MIT