Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
158 commits
Select commit Hold shift + click to select a range
651cec7
Add configuration system data models (#102)
viksachdev Sep 3, 2025
cd65b11
Add server and filter configuration data models (#102)
viksachdev Sep 3, 2025
35dd2ca
Fix header guard issue in types.h (#102)
viksachdev Sep 3, 2025
f121f77
Add improved config types with proper merge semantics (#102)
viksachdev Sep 3, 2025
b48ee0a
Add unit parsing for config values (#102)
viksachdev Sep 3, 2025
7041e85
Add unknown field validation policies (#102)
viksachdev Sep 3, 2025
501977f
Add enhanced error diagnostics for config parsing (#102)
viksachdev Sep 3, 2025
022fc3d
Add ConfigurationManager interface (#102)
viksachdev Sep 3, 2025
a51c636
Implement ConfigurationManager (#102)
viksachdev Sep 3, 2025
22b3f9d
Fix PathScope misuse in validation (#102)
viksachdev Sep 3, 2025
a1cb44b
Add duplicate filter chain name validation (#102)
viksachdev Sep 3, 2025
7679d63
Fix undefined behavior in character classification (#102)
viksachdev Sep 3, 2025
0768a20
Add comprehensive type error wrapping in config parsing
viksachdev Sep 3, 2025
7dd12fd
Fix pointer misuse in parseConfiguration
viksachdev Sep 3, 2025
2a852d9
Apply validation policy to config parsing
viksachdev Sep 3, 2025
f17c4ad
Fix listener invocation under lock
viksachdev Sep 3, 2025
1d58938
Fix thread-unsafe std::localtime in generateVersionId
viksachdev Sep 3, 2025
ca4f681
Add configuration type tests
viksachdev Sep 3, 2025
b4b304e
Add configuration merge tests
viksachdev Sep 3, 2025
934775d
Add unit conversion tests
viksachdev Sep 3, 2025
86bced8
Add validation policy tests
viksachdev Sep 3, 2025
b3e0caa
Add parse error handling tests
viksachdev Sep 3, 2025
f52cfc2
Add FileConfigSource implementation
viksachdev Sep 4, 2025
99e70d1
Add comprehensive logging to ConfigurationManager
viksachdev Sep 4, 2025
31921e9
Add comprehensive FileConfigSource tests
viksachdev Sep 4, 2025
3b844ed
Implement FileConfigSource with ConfigSource interface compliance
viksachdev Sep 4, 2025
8b9353d
Remove duplicate FileConfigSource from ConfigurationManager
viksachdev Sep 4, 2025
f74e316
Update ConfigSource interface and factory function
viksachdev Sep 4, 2025
e5ad009
Add comprehensive configuration types
viksachdev Sep 4, 2025
37df3b6
Fix C++14 compatibility in ConfigurationManager
viksachdev Sep 4, 2025
8c17bc1
Add FileConfigSource interface compliance tests
viksachdev Sep 4, 2025
c608964
Add configuration test suite to build system
viksachdev Sep 4, 2025
8ba009c
Fix ConfigurationManager to use discovery logic
viksachdev Sep 4, 2025
df772f3
Fix getLastModified() to track max mtime across all config files
viksachdev Sep 4, 2025
601ce1d
Add yaml-cpp dependency and config sources to build
viksachdev Sep 4, 2025
32e9c51
Update test method names to match ConfigSource interface
viksachdev Sep 4, 2025
954c378
Add configuration merger with deep merge support
viksachdev Sep 4, 2025
6d8a3cf
Add configuration validator framework
viksachdev Sep 4, 2025
45bfb7e
Add merger and validator to build configuration
viksachdev Sep 4, 2025
d673545
Add tests for merger and validator to build
viksachdev Sep 4, 2025
16a393c
Add comprehensive tests for merger and validator
viksachdev Sep 4, 2025
df14aec
Enhance search policy with detailed logging
viksachdev Sep 4, 2025
1eb4a8b
Add search precedence tests
viksachdev Sep 4, 2025
8215a96
Add units parsing and validation framework
viksachdev Sep 4, 2025
7e485f1
Add comprehensive unit tests for duration and size parsing
viksachdev Sep 4, 2025
df04535
Add units.cc to build configuration
viksachdev Sep 4, 2025
09991c1
Add units test to build configuration
viksachdev Sep 4, 2025
3cb6fd6
Enhance merge semantics with detailed logging
viksachdev Sep 4, 2025
adc7186
Add comprehensive merge semantics tests
viksachdev Sep 4, 2025
30d2549
Add merge semantics test to build
viksachdev Sep 4, 2025
5afba9d
Add json-schema-validator dependency for config validation
viksachdev Sep 4, 2025
83c67fa
Add enhanced FileConfigSource tests
viksachdev Sep 5, 2025
316df4e
Add YAML environment substitution tests
viksachdev Sep 5, 2025
04eba2e
Fix duplicate test_units entries in CMakeLists.txt
viksachdev Sep 5, 2025
8e6213c
Fix config_manager.cc compilation issues
viksachdev Sep 5, 2025
315af77
Add configuration system architecture headers (#102)
viksachdev Sep 8, 2025
3ae1474
Fix extractJsonValue template ambiguity (#102)
viksachdev Sep 8, 2025
84642b6
Implement configuration validation and merging system (#102)
viksachdev Sep 8, 2025
ddf3761
Migrate configuration system from nlohmann to JsonValue (#102)
viksachdev Sep 8, 2025
4894557
Update remaining components for JsonValue migration (#102)
viksachdev Sep 8, 2025
100fd0d
Add test helper utilities for JsonValue migration (#102)
viksachdev Sep 8, 2025
9e05000
Migrate core config tests from nlohmann to JsonValue (#102)
viksachdev Sep 8, 2025
a14950a
Migrate file source and validation tests to JsonValue (#102)
viksachdev Sep 8, 2025
c909e92
Migrate remaining config tests to JsonValue (#102)
viksachdev Sep 8, 2025
a7692cb
Update test build configuration (#102)
viksachdev Sep 8, 2025
75383a6
Add filter registry interface and factory base class (#102)
viksachdev Sep 8, 2025
f73a655
Implement filter registry with thread-safe factory management (#102)
viksachdev Sep 8, 2025
7741619
Add filter_registry.cc to build system (#102)
viksachdev Sep 8, 2025
dda95a3
Add comprehensive test suite for filter registry (#102)
viksachdev Sep 8, 2025
e1ae50a
Add filter registry test to build system (#102)
viksachdev Sep 8, 2025
48a4d9a
Improve JsonValue assignment in test helpers (#102)
viksachdev Sep 8, 2025
d3d26f9
Add validation helper methods and private members to validators (#102)
viksachdev Sep 8, 2025
ce211b8
Refactor config validator implementation structure (#102)
viksachdev Sep 8, 2025
39e6c2d
Improve config file parsing and JsonValue integration (#102)
viksachdev Sep 8, 2025
6190a4f
Add HTTP codec filter factory with configuration support (#102)
viksachdev Sep 8, 2025
8139ee5
Add SSE codec filter factory with event streaming config (#102)
viksachdev Sep 8, 2025
ea264d0
Add JSON-RPC protocol filter factory (#102)
viksachdev Sep 8, 2025
3fe3baa
Add core filter factories to build system (#102)
viksachdev Sep 8, 2025
a3a6dd3
Add rate limit filter factory with multiple algorithms (#102)
viksachdev Sep 8, 2025
5f63ae8
Add circuit breaker filter factory (#102)
viksachdev Sep 8, 2025
a4221bd
Add metrics filter factory with provider support (#102)
viksachdev Sep 8, 2025
f2a93d1
Add QoS filter factories to build system (#102)
viksachdev Sep 8, 2025
ca296bb
Add FilterChainBuilder with fluent interface and configuration suppor…
viksachdev Sep 9, 2025
934dc33
Add filter chain builder to build system (#102)
viksachdev Sep 9, 2025
f676e30
Add configurable filter chain support to MCP server (#102)
viksachdev Sep 9, 2025
7c24ad5
Add --config command line option to mcp_example_server (#102)
viksachdev Sep 9, 2025
b93498c
Add runtime configuration logging to JsonRpcProtocolFilter (#102)
viksachdev Sep 9, 2025
0f3223e
Fix lambda static variable capture in filter chain builder (#102)
viksachdev Sep 9, 2025
34fef9b
Add filter configuration examples (#102)
viksachdev Sep 9, 2025
ed5275a
Add filter configuration documentation (#102)
viksachdev Sep 9, 2025
3b20a07
Refactor JsonValue with improved memory management (#102)
viksachdev Sep 9, 2025
bd049a0
Add thread-local version tracking to ConfigManager (#102)
viksachdev Sep 9, 2025
556643c
Update FileConfigSource to use GOPHER_LOG (#102)
viksachdev Sep 9, 2025
d85e63d
Fix unit conversions and add JsonException handling (#102)
viksachdev Sep 9, 2025
4305dd0
Update unit tests for decimal size conversions (#102)
viksachdev Sep 9, 2025
cf8c9a2
Fix config merge test expectations (#102)
viksachdev Sep 9, 2025
c640145
Fix file source test expectations (#102)
viksachdev Sep 9, 2025
a5f6b8b
Add CMake configuration for filter tests (#102)
viksachdev Sep 9, 2025
4a1bedc
Add core and QoS filter factory tests (#102)
viksachdev Sep 9, 2025
7239c38
Add filter chain builder and configuration tests (#102)
viksachdev Sep 9, 2025
c31abe8
Add filter order validator interface (#102)
viksachdev Sep 10, 2025
96e0d7b
Implement filter order validator (#102)
viksachdev Sep 10, 2025
fed7367
Add filter order validator to build (#102)
viksachdev Sep 10, 2025
3a20561
Add filter ordering validator tests (#102)
viksachdev Sep 10, 2025
1c0bbb5
Add filter ordering test to build (#102)
viksachdev Sep 10, 2025
cc9c8ee
Add predicate evaluator for conditional filter inclusion (#102)
viksachdev Sep 10, 2025
d16d259
Add conditional enablement fields to FilterConfig (#102)
viksachdev Sep 10, 2025
d87c065
Add predicate evaluator to build system (#102)
viksachdev Sep 10, 2025
42f6ea9
Add comprehensive tests for predicate evaluator (#102)
viksachdev Sep 10, 2025
d0bc53d
Add conditional enablement fields to FilterConfig (#102)
viksachdev Sep 10, 2025
d1943f8
Add JSON value converter for C API (#102)
viksachdev Sep 11, 2025
f2ebad6
Implement JSON-based filter chain creation (#102)
viksachdev Sep 11, 2025
fdc7082
Add tests for C API chain creation (#102)
viksachdev Sep 11, 2025
d06a3dd
Add unique_ptr overload to HandleManager (#102)
viksachdev Sep 11, 2025
68e94d2
Add unit tests for HandleManager ownership (#102)
viksachdev Sep 11, 2025
946a80c
Add HandleManager test to build (#102)
viksachdev Sep 11, 2025
7e01251
Make g_filter_manager externally accessible (#102)
viksachdev Sep 11, 2025
93484a2
Implement real filter instantiation in JSON chain creation (#102)
viksachdev Sep 11, 2025
498977e
Add integration tests for JSON chain creation (#102)
viksachdev Sep 11, 2025
13f112f
Fix mcp_chain_clone by preserving dispatcher (#102)
viksachdev Sep 11, 2025
97e1b4c
Update tests to verify mcp_chain_clone fix (#102)
viksachdev Sep 11, 2025
e7521a0
Add test_chain_from_json to build (#102)
viksachdev Sep 11, 2025
de9adfc
Add exception guards to C API functions for FFI safety (#102)
viksachdev Sep 11, 2025
3f57e81
Add exception safety tests for C API filter chain (#102)
viksachdev Sep 11, 2025
ff7dc1a
Add UnifiedFilterChain wrapper for handle unification (#102)
viksachdev Sep 12, 2025
22af04b
Update mcp_c_filter_chain to use unified handle manager (#102)
viksachdev Sep 12, 2025
40a3595
Update mcp_c_filter_api to use unified handle manager (#102)
viksachdev Sep 12, 2025
40097e8
Add smoke test for unified chain handle system (#102)
viksachdev Sep 12, 2025
b2a6775
Enforce thread affinity for filter chain operations (#102)
viksachdev Sep 12, 2025
b59cabb
Add thread affinity tests for filter chain C API (#102)
viksachdev Sep 12, 2025
ef37ba9
Remove duplicate mcp_json_free declaration (#102)
viksachdev Sep 12, 2025
e67453d
Add JSON API compatibility wrappers (#102)
viksachdev Sep 12, 2025
189cf9a
Implement JSON API using JsonValue converter (#102)
viksachdev Sep 12, 2025
b497934
Add unified JSON API test suite (#102)
viksachdev Sep 12, 2025
8a860de
Remove duplicate JSON implementation from types (#102)
viksachdev Sep 12, 2025
b232daf
Add string buffer management functions (#102)
viksachdev Sep 12, 2025
f3bac8b
Implement working JSON stringify buffer wrapper (#102)
viksachdev Sep 12, 2025
e4a1e6e
Update tests for string buffer implementation (#102)
viksachdev Sep 12, 2025
5adcee7
Implement full export in mcp_chain_export_to_json (#102)
viksachdev Sep 12, 2025
0bea87e
Add round-trip tests for chain export/import (#102)
viksachdev Sep 12, 2025
df8a8ee
Add full export implementation and logging safety (#102)
viksachdev Sep 15, 2025
7d18de7
Fix C API test compilation errors (#102)
viksachdev Sep 15, 2025
9a025cd
Fix JSON chain creation test issues (#102)
viksachdev Sep 15, 2025
2225a88
Fix test linking error (#102)
viksachdev Sep 15, 2025
9f596e3
Add filter creation context and metadata structures (#102)
viksachdev Oct 6, 2025
856d8cd
Introduce filter chain assembler infrastructure (#102)
viksachdev Oct 6, 2025
66c2a3c
Add callback bridges for filter data flow (#102)
viksachdev Oct 6, 2025
09be7e5
Implement core filter factories (#102)
viksachdev Oct 6, 2025
1c9a0ee
Update filter registry with factory support (#102)
viksachdev Oct 6, 2025
b73a0a7
Refactor core filters for context-aware creation (#102)
viksachdev Oct 6, 2025
9f6c246
Update network filter implementation (#102)
viksachdev Oct 6, 2025
de927cb
Add comprehensive test coverage for new filter architecture (#102)
viksachdev Oct 6, 2025
10af63c
Update existing tests for new assembler architecture (#102)
viksachdev Oct 6, 2025
c81432b
Remove deprecated filter chain builder implementation (#102)
viksachdev Oct 6, 2025
7977634
Update main CMake configuration for assembler pipeline (#102)
viksachdev Oct 6, 2025
349a526
Update MCP server to use assembler-based filter chains (#102)
viksachdev Oct 6, 2025
5b49d30
Update C API for assembler-based architecture (#102)
viksachdev Oct 6, 2025
64af71b
Update test and example CMake configurations (#102)
viksachdev Oct 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 61 additions & 47 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
cmake_minimum_required(VERSION 3.10)

# Set policy for FetchContent timestamp extraction
if(POLICY CMP0135)
cmake_policy(SET CMP0135 NEW)
endif()

#Prevent in - source builds
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
message(FATAL_ERROR "In-source builds are not allowed.
Expand Down Expand Up @@ -78,6 +83,9 @@ if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug)
endif()

# Set custom install prefix
set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/install_prefix_dir")

#Compiler flags
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
Expand Down Expand Up @@ -117,6 +125,7 @@ endif()
#Find packages
find_package(Threads REQUIRED)
find_package(OpenSSL REQUIRED)
find_package(yaml-cpp REQUIRED)
Copy link
Collaborator

@gophergogo gophergogo Sep 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please fallback to auto-install (e.g. refer to other FetchContent_Declare) if pre-installed is not available.

-- gopher-mcp: Building as standalone project
CMake Error at CMakeLists.txt:128 (find_package):
  By not providing "Findyaml-cpp.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "yaml-cpp",
  but CMake did not find one.

  Could not find a package configuration file provided by "yaml-cpp" with any
  of the following names:

    yaml-cppConfig.cmake
    yaml-cpp-config.cmake

  Add the installation prefix of "yaml-cpp" to CMAKE_PREFIX_PATH or set
  "yaml-cpp_DIR" to a directory containing one of the above files.  If
  "yaml-cpp" provides a separate development package or SDK, be sure it has
  been installed.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am doing this


#Find libevent
find_package(PkgConfig)
Expand Down Expand Up @@ -176,33 +185,33 @@ message(STATUS "")
option(MCP_USE_LLHTTP "Use llhttp for HTTP/1.x parsing" ON)

if(MCP_USE_LLHTTP)
#Use a simpler approach - download just the release archive
# Use a simpler approach - download just the release archive
FetchContent_Declare(
llhttp
URL https://github.com/nodejs/llhttp/archive/refs/tags/release/v9.1.3.tar.gz
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
)

FetchContent_GetProperties(llhttp)
if(NOT llhttp_POPULATED)
message(STATUS "Downloading llhttp... This may take a moment depending on your connection speed.")
FetchContent_Populate(llhttp)
message(STATUS "llhttp download complete.")

#Build llhttp as a simple static library
#The release archive contains pre - generated C files
file(GLOB LLHTTP_SOURCES ${llhttp_SOURCE_DIR}/src/*.c)

message(STATUS "Downloading llhttp... This may take a moment depending on your connection speed.")
FetchContent_MakeAvailable(llhttp)
message(STATUS "llhttp download complete.")

# Build llhttp as a simple static library
# The release archive contains pre-generated C files
file(GLOB LLHTTP_SOURCES ${llhttp_SOURCE_DIR}/src/*.c)

if(NOT TARGET llhttp)
add_library(llhttp STATIC ${LLHTTP_SOURCES})
target_include_directories(llhttp PUBLIC ${llhttp_SOURCE_DIR}/include)

# Disable warnings for third-party code
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
target_compile_options(llhttp PRIVATE -w)
endif()

set(LLHTTP_FOUND TRUE)
message(STATUS "llhttp successfully configured for build from source")
endif()

set(LLHTTP_FOUND TRUE)
message(STATUS "llhttp successfully configured for build from source")
else()
set(LLHTTP_FOUND FALSE)
message(STATUS "llhttp support disabled")
Expand Down Expand Up @@ -280,15 +289,9 @@ else()
message(STATUS "nghttp2 support disabled")
endif()

# fmt library for formatting
FetchContent_Declare(
fmt
GIT_REPOSITORY https://github.com/fmtlib/fmt.git
GIT_TAG 10.1.1
)
message(STATUS "Downloading fmt... This may take a moment depending on your connection speed.")
FetchContent_MakeAvailable(fmt)
message(STATUS "fmt download complete.")
# fmt library for formatting - use system-installed version
find_package(fmt REQUIRED)
message(STATUS "Found fmt: ${fmt_VERSION}")

# nlohmann/json
FetchContent_Declare(
Expand All @@ -300,6 +303,18 @@ message(STATUS "Downloading nlohmann/json... This may take a moment depending on
FetchContent_MakeAvailable(nlohmann_json)
message(STATUS "nlohmann/json download complete.")

# json-schema-validator (header-only) for schema validation
if(NOT TARGET nlohmann_json_schema_validator)
FetchContent_Declare(
json_schema_validator
GIT_REPOSITORY https://github.com/pboettch/json-schema-validator.git
GIT_TAG 2.3.0
)
message(STATUS "Downloading json-schema-validator... This may take a moment depending on your connection speed.")
FetchContent_MakeAvailable(json_schema_validator)
message(STATUS "json-schema-validator download complete.")
endif()

# Google Test
FetchContent_Declare(
googletest
Expand All @@ -318,30 +333,8 @@ message(STATUS "All dependencies ready. Configuring build...")
message(STATUS "==================================================")
message(STATUS "")

# nlohmann/json - check if already available (when used as submodule)
if(NOT TARGET nlohmann_json::nlohmann_json)
FetchContent_Declare(
nlohmann_json
GIT_REPOSITORY https://github.com/nlohmann/json.git
GIT_TAG v3.11.3
)
FetchContent_MakeAvailable(nlohmann_json)
endif()

# Google Test - only fetch if not already available and not a submodule
if(NOT GOPHER_MCP_IS_SUBMODULE)
# Check if Google Test is already available
if(NOT TARGET gtest AND NOT TARGET GTest::gtest)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG release-1.12.1
)
# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)
endif()
endif()
# Note: nlohmann/json already fetched above (lines 298-305)
# Note: Google Test already fetched above (lines 319-329)

# Source files - split core from client/server to avoid circular deps
set(MCP_CORE_SOURCES
Expand Down Expand Up @@ -383,8 +376,24 @@ set(MCP_CORE_SOURCES
src/filter/protocol_detection_filter_chain_factory.cc
src/filter/http_routing_filter.cc
src/filter/protocol_detection_filter.cc
src/filter/filter_registry.cc
src/filter/http_codec_filter_factory.cc
src/filter/sse_codec_filter_factory.cc
src/filter/json_rpc_dispatcher_filter_factory.cc
src/filter/rate_limit_factory.cc
src/filter/circuit_breaker_factory.cc
src/filter/metrics_factory.cc
src/filter/filter_chain_assembler.cc
src/mcp_connection_manager.cc
src/protocol/mcp_protocol_state_machine.cc
src/config/config_manager.cc
src/config/file_config_source.cc
src/config/config_merger.cc
src/config/config_validator.cc
src/config/units.cc
# TODO : Re-enable filter order validator for new architecture
# src/config/filter_order_validator.cc
src/config/predicate_evaluator.cc
)

# Client and server sources that need event library
Expand Down Expand Up @@ -497,7 +506,12 @@ foreach(lib_target ${REAL_TARGETS})
PRIVATE
nlohmann_json::nlohmann_json
${LIBEVENT_LIBRARIES}
yaml-cpp::yaml-cpp
$<$<TARGET_EXISTS:gopher-mcp-logging>:gopher-mcp-logging>
$<$<AND:$<NOT:$<TARGET_EXISTS:gopher-mcp-logging>>,$<TARGET_EXISTS:gopher-mcp-logging-static>>:gopher-mcp-logging-static>
)
# Disable json-schema-validator by default to avoid export/link issues
target_compile_definitions(${lib_target} PUBLIC MCP_HAS_JSON_SCHEMA_VALIDATOR=0)
if(LIBEVENT_LIBRARY_DIRS)
target_link_directories(${lib_target} PRIVATE ${LIBEVENT_LIBRARY_DIRS})
endif()
Expand Down
25 changes: 21 additions & 4 deletions examples/mcp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,36 @@ target_link_libraries(mcp_example_client
${LIBEVENT_LIBRARIES}
)

# MCP Server Example
add_executable(mcp_example_server
# MCP Server Example
add_executable(mcp_example_server
mcp_example_server.cc
)

target_link_libraries(mcp_example_server
target_link_libraries(mcp_example_server
gopher-mcp
gopher-mcp-event
gopher-mcp-echo-advanced # For advanced features
${LIBEVENT_LIBRARIES}
)

# Config-driven MCP Server Example
add_executable(mcp_config_example_server
mcp_config_example_server.cc
)

target_link_libraries(mcp_config_example_server
gopher-mcp
gopher-mcp-event
${LIBEVENT_LIBRARIES}
)

# Install targets
install(TARGETS mcp_example_client mcp_example_server
install(TARGETS mcp_example_client mcp_example_server mcp_config_example_server
RUNTIME DESTINATION bin
)

# Install example configuration files
install(FILES
../configs/mcp_server_example.json
DESTINATION share/mcp/examples/configs
)
Loading
Loading