cabal-version: 3.0
-- The cabal-version field refers to the version of the .cabal specification,
-- and can be different from the cabal-install (the tool) version and the
-- Cabal (the library) version you are using. As such, the Cabal (the library)
-- version used must be equal or greater than the version stated in this field.
-- Starting from the specification version 2.2, the cabal-version field must be
-- the first thing in the cabal file.
--
-- The name of the package.
name: mcp-server
-- The package version.
-- See the Haskell package versioning policy (PVP) for standards
-- guiding when and how versions should be incremented.
-- https://pvp.haskell.org
-- PVP summary:     +-+------- breaking API changes
--                  | | +----- non-breaking API additions
--                  | | | +--- code changes with no API change
version: 0.1.0.0
-- A short (one-line) description of the package.
synopsis: Library for building Model Context Protocol (MCP) servers
-- A longer description of the package.
description:
  A fully featured library for building MCP (Model Context Protocol) servers.
  Supports both low-level fine-grained handling and high-level derived interfaces
  for prompts, resources, and tools. Includes JSON-RPC transport, pagination,
  and stdin/stdout communication.

-- The license under which the package is released.
license: BSD-3-Clause
-- The file containing the license text.
license-file: LICENSE
-- The package author(s).
author: Tom Wells
-- An email address to which users can send suggestions, bug reports, and patches.
maintainer: drshade@gmail.com
-- A copyright notice.
copyright: 2025 Tom Wells
-- URL for the project homepage or repository
homepage: https://github.com/drshade/haskell-mcp-server
bug-reports: https://github.com/drshade/haskell-mcp-server/issues
-- Package categories for Hackage browsing
category: Network, Server, Service, MCP, JSON-RPC
build-type: Simple
-- Extra doc files to be distributed with the package, such as a CHANGELOG or a README.
extra-doc-files:
  CHANGELOG.md
  README.md

-- Extra source files to be distributed with the package, such as examples, or a tutorial module.
extra-source-files: SPEC.md

-- Source repository information
source-repository head
  type: git
  location: https://github.com/drshade/haskell-mcp-server.git

common warnings
  ghc-options: -Wall

library
  -- Import common warning flags.
  import: warnings
  -- Modules exported by the library.
  exposed-modules:
    MCP.Server
    MCP.Server.Derive
    MCP.Server.JsonRpc
    MCP.Server.Protocol
    MCP.Server.Types

  -- Modules included in this library but not exported.
  -- other-modules:
  -- LANGUAGE extensions used by modules in this package.
  -- other-extensions:
  -- Other library packages from which modules are imported.
  build-depends:
    aeson >=2.0 && <3.0,
    base ^>=4.20.0.0,
    bytestring >=0.10 && <0.13,
    containers >=0.6 && <0.8,
    network-uri >=2.6 && <2.8,
    template-haskell >=2.16 && <2.23,
    text >=1.2 && <3.0,

  -- Directories containing source files.
  hs-source-dirs: src
  -- Base language which the package is written in.
  default-language: GHC2024

executable haskell-mcp-server
  -- Import common warning flags.
  import: warnings
  -- .hs or .lhs file containing the Main module.
  main-is: Main.hs
  -- Modules included in this executable, other than Main.
  -- other-modules:
  -- LANGUAGE extensions used by modules in this package.
  -- other-extensions:
  -- Other library packages from which modules are imported.
  build-depends:
    base ^>=4.20.0.0,
    containers >=0.6 && <0.8,
    mcp-server,
    network-uri >=2.6 && <2.8,
    text >=1.2 && <3.0,

  -- Directories containing source files.
  hs-source-dirs: app
  -- Base language which the package is written in.
  default-language: GHC2024

executable high-level-example
  -- Import common warning flags.
  import: warnings
  -- .hs or .lhs file containing the Main module.
  main-is: HighLevel.hs
  -- Modules included in this executable, other than Main.
  -- other-modules:
  -- LANGUAGE extensions used by modules in this package.
  -- other-extensions:
  -- Other library packages from which modules are imported.
  build-depends:
    base ^>=4.20.0.0,
    containers >=0.6 && <0.8,
    mcp-server,
    network-uri >=2.6 && <2.8,
    text >=1.2 && <3.0,

  -- Directories containing source files.
  hs-source-dirs: examples
  -- Base language which the package is written in.
  default-language: GHC2024

executable template-haskell-example
  -- Import common warning flags.
  import: warnings
  -- .hs or .lhs file containing the Main module.
  main-is: TemplateHaskell.hs
  -- Modules included in this executable, other than Main.
  other-modules: Types
  -- LANGUAGE extensions used by modules in this package.
  -- other-extensions:
  -- Other library packages from which modules are imported.
  build-depends:
    base ^>=4.20.0.0,
    mcp-server,
    text >=1.2 && <3.0,

  -- Directories containing source files.
  hs-source-dirs: examples
  -- Base language which the package is written in.
  default-language: GHC2024

test-suite haskell-mcp-server-test
  -- Import common warning flags.
  import: warnings
  -- Base language which the package is written in.
  default-language: GHC2024
  -- Modules included in this executable, other than Main.
  -- other-modules:
  -- LANGUAGE extensions used by modules in this package.
  -- other-extensions:
  -- The interface type and version of the test suite.
  type: exitcode-stdio-1.0
  -- Directories containing source files.
  hs-source-dirs: test
  -- The entrypoint to the test suite.
  main-is: Main.hs
  -- Test dependencies.
  build-depends:
    base ^>=4.20.0.0,
    mcp-server,